What we like more from the previous snippet is that we start always with a lot of enthusiasm, our initial code state is in a clean and beautiful state, all seem to be perfect like in a piece of art

Disclaimer: this article is written by a PHP software engineer’s prospective, even that, principles and concepts illustrated below can be easily applied to other popular Object Oriented programming languages such as Java, Python, Ruby [..]

But later, you all know, new features are coming, the project gets bigger and complex and the code starts becoming a pure mess. Is that what we start calling it code that sucks! Nobody wants to work on that crappy and messy code and moreover everyone want to start over all from scratch.