What is software development?
What causes software complexity?
These are two fundamental questions. Even as computers are becoming faster, new languages, tools and frameworks are being developed, there feels like fundamental problems with software development. Understanding them will hopefully let understand why programming often feels broken, and why it feels like we have in many ways as an industry hit a wall.
What is Programming?
Core Ideas
- Programming can be thought of a set of transformations: turning human concepts down a chain of intermediate steps to something executable by a computer.
- All programming constructs: programs, frameworks, libraries, languages, etc, are ways of expressing concepts at different levels down this chain.
The Transform Stack
Let us consider what I will call the transform stack.
On the top you have Human Level concepts, and on the bottom you have computer level instructions.