Unworkable project

Started by
34 comments, last by wodinoneeye 9 years, 2 months ago

Let me guess: AMD display driver?

Nope. It' a "swiss arny knife" application that manages salaries and a shitload of other things. It's for a major tech company that I can't name because of NDA's.

Advertisement

Is there anyone else still at the company that understands the horror of it?

If so, see if you can get them all in a room with yourself, the first-line manager above this project, and their manager to demonstrate for them how bad it really is. Remind them that the last three engineers on the program quit.

Present a business case to management that continuing to service this project is costing them the happiness and loyalty of the employees they've hired and invested in. They may not be able to drop the project like a hot potato due to contract obligations, but at least they'll have some idea that perhaps they simply made a bad deal, mismanaged the project, and will have to eat some of today's costs incurred as a result (e.g. putting resources into re factoring that aren't being billed to the client) -- or at the very least, they'll know to not allow the contract to be extended without making it prohibitively expensive for the client -- OR -- perhaps rather than maintaining the project any longer, your company can offer a fair price on a green-field rewrite (when the client's prospects are pony up for the re-write or see their critical system EOL'd, they might become more pliable).

But one thing's for certain, and that's that you need to get away from the swiss-army-knife approach. I'm pretty sure I'm preaching to the choir, but those sorts of systems invariably begin to creak under their own weight. They're essentially impossible to refactor because no one dare's disturb the unknown dependencies, and basically no one person is a domain expert in all of the various aspects of the program, and hence no one is equipped to begin cutting those ties. You can't even test anything in isolation, so even if you do manage to pull things apart, you're essentially working without a net. As a result, these kinds of projects only become heavier and more complex over time, never lighter or simpler.

throw table_exception("(? ???)? ? ???");

There is probably a better way. Come up with reasons to get to the newer stuff. Look at timelines and see if something can be replaced in a year. You have to show them how the new stuff will have better ability to do stuff that they would want done a year later.

It will take lot of lobbying and basically showing them that its useful. It is more of business undertaking and you have to show them profits to put in money.

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.

Is there anyone else still at the company that understands the horror of it?

If so, see if you can get them all in a room with yourself, the first-line manager above this project, and their manager to demonstrate for them how bad it really is.

I really wouldn't do that. The outcome (the codebase) is primarily the result of management that has absolutely no clue about what's going on. The only reason why it's still ongoing is probably because there's one guy that's been here for ages and knows all the hidden screws under it all that keep things running. So that guy is able to satisfy management even though the product is crap.

So the combination of clueless management and one guy (or some guys) that can satisfy management will very likely lead to give the new guy the "always complaining but not delivering" stigma if he tries to make management understand how bad it is.

The only advice that I can give the OP is to compare pros and cons. If the codebase is a nightmare but everything else is awesome (payment, climate, flexible times, boss,...) then it might be worth it. If the other things aren't too sweet either I'd really consider looking for another job. There's little you can do to help this situation.

A few weeks later, things a little less desperate. Turns out that some thought actually went into the architecture, even though it's muddled by years of patching. The system is still a hideous mess, but at least I don't feel like jumping off a bridge anymore. jefferytitan's suggestion to document as I go was helpful.

So the combination of clueless management and one guy (or some guys) that can satisfy management will very likely lead to give the new guy the "always complaining but not delivering" stigma if he tries to make management understand how bad it is.

Exactly! I've been trying, very gently, to explain the situation to my boss. But I'm a nerd, not a diplomat. I only get responses of the type "I'm sure you'll figure it out".

The only advice that I can give the OP is to compare pros and cons. If the codebase is a nightmare but everything else is awesome (payment, climate, flexible times, boss,...) then it might be worth it. If the other things aren't too sweet either I'd really consider looking for another job. There's little you can do to help this situation.

The pay is pretty good. Not spectacular, but good. The coworkers are awesome. I kind of like the boss too; he's an old developer who can talk shop (to some degree). But I can't tell him what I really think of the project.

So I quit the job, option #3. In 3 more weeks I'll be a free (unemployed) man. The poor chap who takes over has no idea what he's getting into. I don't care. Nice guy, but I don't care. I'm going to save my own sanity, and fsck the consequences.

So I quit the job, option #3. In 3 more weeks I'll be a free (unemployed) man. The poor chap who takes over has no idea what he's getting into. I don't care. Nice guy, but I don't care. I'm going to save my own sanity, and fsck the consequences.

At least you stuck it out for a few months and tried to make it work.

I think, therefore I am. I think? - "George Carlin"
My Website: Indie Game Programming

My Twitter: https://twitter.com/indieprogram

My Book: http://amzn.com/1305076532

Did you find another job first or are you doing that now?

I think, therefore I am. I think? - "George Carlin"
My Website: Indie Game Programming

My Twitter: https://twitter.com/indieprogram

My Book: http://amzn.com/1305076532

Did you find another job first or are you doing that now?

I'm doing that now. Haven't found one yet. It's a risk, but I can't stay there any more.

I've been in a similar situation at my previous job. Very nice coworkers but clueless/toxic management and the worst code base I've ever seen (Imagine a C++ code base written using only the worst possible aspects of C in the worst possible ways by an egotic self taught medical doctor who reinvented everything from strcpy to his own "database engine" which had all the referential integrity of an alzheimer patient, and it was used to manage an hospital, everything from medical records to prescriptions)

You did the right choice (although myself I did wait until I had a new job lined up to put in my resignation). There's no use being miserable in a job where you are the sucker stuck working on some horrible shit that management is unwilling to give the time and resources to fix.

This topic is closed to new replies.

Advertisement