A Little Horror Story

You’re a consultant. You got sent to this new project, and it has been around for quite a while, and lots of bright and not-so-bright people worked on it over the past few years. Lots of functionality in it, they say, and even though the project has been wildly successful in the business eyes, do you have any idea regarding what to expect from the codebase?

First, you check everything out from the insanely bad SCM tool, to find out your favourite IDE won’t have enough RAM to build the thing, and you’ll have to use something else. You also find out that most tools can’t help you anymore, because they die a horrible death when trying to make sense of all that code.

You try and follow Michael Feather’s brilliant Working Effectively with Legacy Code (PDF link), and manage to isolate a tiny bit of functionality, test it and make sure you can fix the behaviour properly. That gets you trapped in a maze of circular dependencies with some other 30 other packages.

Your vision gets blurry, and you go out looking for something sensible to do, like searching for pictures of screaming trapped babies.

But there’s more. The build is so complex Ant didn’t cut it, and using something built in-house was the best way. But you don’t want to mess with that yet, because you don’t know what else could break. In fact, breathing near some parts of the code could make them break. And it takes time to know it, cause it takes half a day to get feedback from something you committed by the continuous integration machine.

You yearn the days when Find Usages was one of the most valuable keyboard shortcuts in your IDE. When using one O/R mapper was already troublesome enough - instead of the handful you have now.

If you excuse me, I’ll go look at some more pictures of screaming babies.