If you were on a journey, and you had to go through a town. But, you knew the town was full of roadworks and detours, you would try and find a simple way through. Why take the complicated way, when you could take the simple route? Seems obvious right? But, when developers are writing software they often ignore the complexity they can see. There are signs in front of them that what they about to start writing is full of problems. – Complexity, potential road blocks, uncertainty. Yet they steam straight ahead, why?
It’s because all those problems in software are intellectual challenges. Every problem requires coming up with a solution, and so they want to do it, for the satisfaction of beating all the problems.
But there is a price. If you took the complex, difficult road route to your destination, you would arrive later, and you don’t want to. So you find a simpler way. And equally writing complex software instead of choosing the simple way, has the same effect, you arrive later. And in this case the destination is delivery of the software, finishing it, which gets delayed.
I have led teams of developers where I had in my team people who wanted to make the software more complex, just for the challenge it gave them. Great fun for them if I let them, but hazardous for the people waiting for the product.
I have a maxim that the quickest way to deliver software is don’t write it! If it’s complex, find a better way, there nearly always is one that does 90% of the same functionality for 50% of the effort.