Unworkable project

Started by
34 comments, last by wodinoneeye 9 years, 2 months ago
So I started a new job and inherited an old project that's a waking nightmare. They gave it to the new guy because nobody else would touch it. It's deliriously complex and messy. All of it is highly critical and there's zero tolerance for mistakes. Every time I almost understand some part, I discover new layers of WTF. Hundreds of tables without foreign keys. Spagetti routines thousands of lines long. Hundreds of unreadable (and of course, critical) shellscripts.
The system is a fractal monstrosity, completely unmanageable. Not even the previous developer, who's been working on it for 10 years, really understands it. During a meeting, when they showed me the flowchart for a single feature, I had to bite my tounge not to blurt out "please tell me this is a hoax".
I've narrowed down my options to:
1. Tough it out. One ugly detail at the time.
2. Wait for everything to go to hell, be fired and take up heavy drinking.
3. Quit and retain a little sanity, but risk not finding a new job.
4. Jump off a bridge.
#1 isn't realistic. I'm not exaggerating, it really is an epic horror. In 25 years, I've never seen anything like it. #2 is the natural consequence of #1. Every day before lunch, #4 seems like the best option. After lunch, #3.
Advertisement
- Incompetent database architecture: check.
- Shell scripts doing ANYTHING mission critical: check.
- Functions more than a page long: check.
- Codebase existing more than 10 years: check.

"I'm sorry, I'm afraid the cancer has spread throughout its entire body. There's nothing we can do for it anymore." - Doctor Nypyren


Why not look for a new job while you're still employed and bail out the moment you find one?

Why not look for a new job while you're still employed and bail out the moment you find one?

I didn't think of that. Actually a really good idea. Thanks.

Just don't let anyone at your current job know you're searching. They aren't too happy if they find out.

Also, if you quit, make sure to give a couple week's notice (or whatever's required by law, if you have a law which covers this). I quit one of my summer jobs at a grocery chain once without notice and they blacklisted me from ever working there again.

Just don't let anyone at your current job know you're searching. They aren't too happy if they find out.

They'd be furious and probably lose the client. (The contract says 4 weeks notice btw). Still, it's my sanity vs the loyalty.

How feasible is it to start to rewrite the functions one at a time ?

I'd personally hit the "delete" button and blame a system glitch ...

I cannot remember the books I've read any more than the meals I have eaten; even so, they have made me.

~ Ralph Waldo Emerson

In general I agree with getting out of there. Having said that, I wouldn't skip out too soon just for the sake of your reputation. Give it a few months.

In the mean time, do what you can do to improve your situation. Some examples:

  • Document code as you go.
  • Document business processes as you go.
  • Split large methods to be smaller and easier to read.
  • Write unit tests to ensure you don't break anything.
  • Over-estimate quotes to make the time to do this.

Also remember to paper-trail everything - if a change seems risky, email them with concerns and questions and make them make the call. Make it clear that the project is difficult and dangerous. Suggest measures to limit risk, e.g. disaster recovery, backups, staging servers, QA protocols, source control everything.

How feasible is it to start to rewrite the functions one at a time ?

Not feasible at all. In a perfect world, I'd rewrite the whole thing with a modern architecture (using, say, Hibernate. And get rid of all those messy scripts). But that would take months or years and require a budget that's not going to happen.

I'd personally hit the "delete" button and blame a system glitch ...

No you wouldn't. Not if 20,000 people don't get a salary this month because of that "glitch";-)

In general I agree with getting out of there. Having said that, I wouldn't skip out too soon just for the sake of your reputation. Give it a few months.

Very true. So far I've never stayed less than 3-4 years at one place. Job-hopping too much looks bad on the CV. Makes you look unreliable.
In the mean time, do what you can do to improve your situation. Some examples:
Document code as you go.
Document business processes as you go.

The existing documentation is actually pretty decent. The system is a horror, but the docs are ironically much better.

I'd personally hit the "delete" button and blame a system glitch ...

That might actually work if they don't use version control and everyone is gullible enough. Not hard to imagine considering the circumstances, but it's a stupid move.

"I would try to find halo source code by bungie best fps engine ever created, u see why call of duty loses speed due to its detail." -- GettingNifty

Let me guess: AMD display driver?

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

This topic is closed to new replies.

Advertisement