There is a contradiction at the heart of software development which is this:
- Software engineers have to make a series of small bets every day when they make decisions about how to write good software
- Software engineers are very bad at second-guessing human behaviour
Therefore many engineers have grown up to know that a good thing to do is copy what they see around them – copy what works. This often limits the ability of engineers to successfully innovate because they make small bets based on what they see around them.
Sometimes, in order to make a leap forwards, it’s necessary to invent, to see if something works.
How much of engineering is essentially plumbing (stitching together existing patterns and interfaces) and how much of it is inspiration?