Keep things brutally simple

“Simplicity is prerequisite for reliability.” – Edsger Dijkstra, How do we tell truths that might hurt?

Programs that matter are large and long-lived. It’s disturbingly difficult to write them, and most teams fail. What kills them is usually complexity. Everyone agrees that “simple is better” and “keep it simple”, so why do programmers, when actually coding, choose to do the opposite? Another entry (Write code top-down) discusses one big reason, but here I want to argue for a mindset that values simplicity over almost anything else.

Yes, the program must do what the customer wants it to do. But the next highest priority is simplicity. Specifically:

The above advice goes against best practices. Everyone knows good programmers should plan for the future, should avoid boilerplate, should write elegant abstractions. Don’t. Those “good programmers” write heaps of garbage that get thrown away. Write the least code that will get the job done, and you’ll perhaps have a chance to build a large long-lasting program.