08/09/2011
Posted by Clinton
Overengineering and You

I have been developing software for over 5 years now, and one of my largest pitfalls that gets me is my tendency to overengineer.
Overengineering, for those who have yet to experience, or recognise it in their own work, is creating additional complexity to a solution with no, or negative results stemming from it. Usually added in for the sake of abstraction, preferred software patterns or sometimes irrational levels of encapsulation.
I started overengineering when I finally “got” Object Oriented Programming (OOP) back in 2007. Just like many of us, I saw the power in representing solutions in terms of objects. My reaction was to convert all of my current projects into Object Oriented format within the PHP language.
Anyone who knows PHP will know why PHP is bad. At this point it is important to note that PHP has never been designed for Object Oriented Programming.
I was developing an image host that I have mentioned in the previous post called “The Rotating Signature Host”. When I completed the first edition of the site in OOP, I looked back at the code and saw it had patterns, that parts could be abstracted and reused. And so I set out to abstract all of these behaviours so that I could reuse them. Everything from page loading to session management, to language, to every little aspect was consolidated into it’s own module.
This might seem ideal at first, as this is essentially what a framework does. It might seem that all of my future products would have benefited from this awesome framework.
That was not the case (more…)



