At the beginning, a program or application makes the most fun. Programmers like to start from scratch, when the project is fresh, clean, shiny and new and problems are rare and easy. In the beginning you have the most freedom, no limitations, and no restrictions.  Everything seems to be possible, every choice is open. You can change anything you want without much ado. Projects are small at the beginning. There are only a few lines of code, which can be changed easily. Small projects are comprehensible. They are easy. They are fast. Loading, saving and executing them is quick. So is programming at the beginning, too: easy and fast.

Once a project grows older, it becomes larger, slower, and more complex. Like a screenwriter who is limited by the own settings, a programmer is limited by the own choices. Every choice which is made introduces more limitations. The more code, the more limitations. It starts to drag you down. In the end, sometimes nothing seems to be possible easily. Every choice is constrained. You can not change anything without breaking the code. Especially if your design is based on a big ball of mud, unfortunately the de-facto standard software architecture ;-)

That’s why it is important to Do The Simplest Thing That Could Possibly Work

  • You get done sooner
  • Your work is easier to communicate
  • Tests are easier to write
  • You feel less stress, which enhances all of the above