The hardest thing to do while programming is not the programming itself. It is the "Not Programming".
That is to say, the hardest part is not adding feature #65353, which you're probably never going to use, but it makes the code ever so much more flexible. It is the question of "Why am I doing this? Do I really need it now (or ever)?"
Lately I've very much been on a simplicity kick; looking around at a lot of projects around me and how they're buzzword compliantover architected, I can't help but to think of all the ways in which people are prone to feeping creaturitis and Big Mac Programming.
I think that there are several things which can help -- in fact, I've coined a phrase "Just Enough Programming" -- more about that will follow, but here are a few things to help with "Not Programming":
- BDD and/or TDD, although I think that BDD is better about understanding why we are doing something.
- DRY code
- Lighter frameworks -- ones which do not require as many lines of configuration as they do of code. Infinite scalability is for imps and monkeys with typewriters.
- Declarative code -- it can be easier to limit ourselves this way (by the same token, do not fall into the trap of Rococo Programming)
A student once approached the master and asked, "Does a Foo have the Bar nature?", to which the master replied "Groo" and returned to his meditations.
- Shorter integration cycles
