This is the one, the only, the quintessential rule to programming. AKA, the KISS method (Keep It Simple Stupid) is, to me, words to live by. From the implementation of a simple class to the design of a complex application you constantly have to keep this in the forefront of your mind.
Far too often I see the most talented of developers letting themselves get carried away with something they are working on. This inevitably results in the worst kind of code, over-engineered, over-complicated, and under-tested. I presume this is caused by their own miss-guided love of a project or component they are working on. Open source software often exhibits this, I would guess this is due in part by these projects being developed by those who love the project.
I have often been guilty of this pleasurable curse myself. The only effective way of curtailing this innate behavior has been two things. First, constant reminder of KISS, and second, self discipline in extensive unit testing. Honestly, the later serves better than the former… having to test everything you write often kills unnecessary and frivolous features. I would guess the best example I have of KISS is the silly little ‘Check.cs‘ file I created. Since I have not needed more than it’s 3 or 4 methods I have not written more. I have not added to this class not because I can’t imagine a whole host of other routines than could be added and perhaps useful *someday*. Rather I have not added anything I did not have an immediate need for very intentionally.
For those of you still confused: Simple Code == Less Code == Less Bugs