A colleague keeps telling me I should "keep it simple". I'm afraid I have to confess to finding it irritating.
It is all well and good saying "keep it simple", but the crucial question is how do you define "simple"?
Simple is a surprisingly relative term, and depends a lot upon the abilities of the people involved. There are some people that might be heard to say, "Oh, that was actually very simple brain surgery", yet I could never say it.
As well as this simplicity in level, there is simplicity in time. Something that may be simple to implement now, may not be easy to maintain in future. Correct separation between components can be difficult to achieve at the beginning of a project, but if done well, can make the project simple to maintain.
If I recall correctly, extreme programming phrases it "keep it as simple as it can be, but no simpler". This is clearly showing that it is possible to oversimplify a problem.
"Keep it simple" is a very easy thing to say, but is actually a very difficult thing to understand and pin down.