I beg to differ.

Thanks Raph for sharing your perspectives.

That might be true if your application is not going to be maintained, that is not always the case in most situations, code is read much more often that it’s written. Scope changes, project owners do come with new requests every now and then and simple apps do turn rapidly from simple to relatively complex ones. I think it’s better to have such situations planned out for from the onset.

“What is understandable for one is hard for other”, I agree but almost anyone can spot the difference between a simple and a complicated solution.
 Here is saying from one of my favourite authors: “If a solution to a problem can be coded at the level of an elementary school student or at a Ph.D. level; code at the elementary level. You should code at a level that can be understood easily by virtually anyone who picks it up.”