View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

# Unworkable project

35 replies to this topic

### #21LNK2005  Members

Posted 25 June 2014 - 11:42 AM

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.

Edited by LNK2005, 25 June 2014 - 11:44 AM.

### #22Ravyne  Members

Posted 25 June 2014 - 12:46 PM

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("(ノ ゜Д゜)ノ ︵ ┻━┻");

### #23gautamn15  Members

Posted 27 June 2014 - 09:32 AM

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.

### #24ilreh  Members

Posted 30 June 2014 - 02:03 PM

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.

### #25LNK2005  Members

Posted 18 July 2014 - 09:38 AM

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.

### #26LNK2005  Members

Posted 05 February 2015 - 11:46 AM

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.

Edited by LNK2005, 05 February 2015 - 12:00 PM.

### #27Glass_Knife  Moderators

Posted 05 February 2015 - 03:44 PM

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 Book: http://amzn.com/1305076532

### #28Glass_Knife  Moderators

Posted 05 February 2015 - 05:31 PM

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 Book: http://amzn.com/1305076532

### #29LNK2005  Members

Posted 05 February 2015 - 09:58 PM

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.

### #30Zlodo  Members

Posted 06 February 2015 - 04:06 PM

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.

Edited by Zlodo, 06 February 2015 - 04:07 PM.

### #31Brain  GDNet+

Posted 06 February 2015 - 04:25 PM

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.

I know where it is. It's thedailywtf.com isn't it!

Games Currently In Development: Firework Factory | Seven Spells Of Destruction | Latest Journal Entry: Radioactive goop, flashing lights and lots more! (21-Jul-2016)

### #32LNK2005  Members

Posted 06 February 2015 - 08:39 PM

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.

Thank you. I needed to hear that.

### #33Brain  GDNet+

Posted 07 February 2015 - 04:31 AM

You could always think of it as job security... If you learn the system inside out over the next decade you would be in a position to negotiate any salary you wanted and any bonuses as they wouldn't easily be able to replace you.

Edited by braindigitalis, 07 February 2015 - 04:31 AM.

Games Currently In Development: Firework Factory | Seven Spells Of Destruction | Latest Journal Entry: Radioactive goop, flashing lights and lots more! (21-Jul-2016)

### #34LNK2005  Members

Posted 07 February 2015 - 06:11 AM

You could always think of it as job security... If you learn the system inside out over the next decade you would be in a position to negotiate any salary you wanted and any bonuses as they wouldn't easily be able to replace you.

Yeah, probably, but I hate the job with a passion that can't easily be described with words. I've held good jobs before. There must be at least one available somewhere.

### #35Brain  GDNet+

Posted 07 February 2015 - 07:06 AM

You could always think of it as job security... If you learn the system inside out over the next decade you would be in a position to negotiate any salary you wanted and any bonuses as they wouldn't easily be able to replace you.

Yeah, probably, but I hate the job with a passion that can't easily be described with words. I've held good jobs before. There must be at least one available somewhere.

My job is similar in that my role is to maintain an ugly esoteric system filled with wtf. I am the only one really who knows it inside out but the difference is upper management respect my recommendations and if I choose to rewrite a part of it this is usually what happens. If you could at least get them to respect your advice, then the problem is manageable...

Games Currently In Development: Firework Factory | Seven Spells Of Destruction | Latest Journal Entry: Radioactive goop, flashing lights and lots more! (21-Jul-2016)

### #36wodinoneeye  Members

Posted 07 February 2015 - 05:26 PM

Is this a maintenance job (just keep it running) or do they expect you to constantly add features/options ontop?

If they expect you to do significant 'patches' into it, you may simply have to write up your assessment of the system and make recomendations and leave it upto them to either carry out proper reworking of it (== \$), or otherwise tell them you cant do what they need under their limitations.

Ive done maintenance/bug fixing as part of my job after the original programmers were long gone and was able to stabilize it and add error tracking and such  (old C days when the bulk of that original code didnt even check function return codes and first thing was to add error checking logging/reporting everywhere it was like that, to actually determine what was failing to help debugging - that without changing the process logic much which took me 6 months to get a grip on to be able to do significant changes).  Of course that was probably a smaller and not such a 'rat nested' mess as what you describe.