What is a real life project - one can ask. The real life - in terms of software development - is built of limitations. Your time is limited, the budget is limited, your abilities are limited and even knowledge of what you should exactly do is limited. Only your client's expectations and need to maintain the legacy code are unlimited. Funny - but let's puts jokes aside as this article should have some limit too.