Many of us groan when they have to deal with legacy code. Especially those among us who fancy themselves to be craftsmen or clean coders often complain about long convoluted classes and methods, no tests and a tangle of dependencies.
I wrote before that you should shy away from the temptation to rewrite a legacy project. Today I'll go even further:
Be grateful for the code no matter how messy it is!
If you have to work with this piece of code it is a strong indication that it does something usefull.
Actually everything we do depends on legacy code.
Your operating system: legacy (yes even the nice fruity one)
Your IDE: full of legacy code
Your Continuous Integration system: mostly legacy
Your Application Server: nothing but legacy
So the next time you encounter legacy code: stop swearing. Relax. Think of all the things it does for you and your boss or customer. Thank the creators for this.
Then concentrate on the thing it doesn't do or does wrongly and fix it in a nice and clean way.