My theme lately at work
has been to rail against over-engineering. What’s that, you ask? It’s overthinking the architecture and overdoing the planning phase of a project. This is not to say that application architecture has no place.
Planning and design is critical. However, the propensity one has, when programming, to try and account for every possible future enhancement to the software, creates a kind of paralysis, and takes one’s eyes off the prize of getting stuff done
for the project and for the client. I think of Joel Spolsky’s piece
. I also think of the Einstein quote that things should be made as simple as possible, but no simpler.
Words not just to program by, but to live by, I think.