There are many types programmers, there are many skill levels and there are too many views on what simple is.
Keep it simple stupid is preached by many if not most. But what for one is simple for the other is hell to go through when time comes to debug. In my opinion some well-read and ambitious developers will create a complex programming design just to prove to themselves that they can. They will do it so during an interview process they can brag that they did this AND that. Sounds great, looks "smart", is complex and it is costly to debug and maintain. But those guys do not care, they are senior developers, they can write software, they can create solid and robust designs and it cost the company 2-3 times more to build and much more to debug.
Simple for me is different than for you. Simple for a guy who is paying my salary is completely different than for a guy whose book I just finished reading. Developers tend to write more complex and more costly software than business people would want them to. Problem is, most business people do not know it, and they do not have a choice so they pay. Pay for one consulting company custom made software - even though the consulting company could have use free/open source or licence based solutions - but why? we charge +$100/hr so why can't we recreate the wheel? and once we leave some other company comes to add "value" by ripping previous designs and implementing its own. oh! did I mention charging +$100/hr again.
Both companies could have used something easy and make it simple but ... we are senior developers we write complex applications because we can abd business will pay.
more thoughts are coming.
http://www.DenverPracticalCourses.com