Jump to content

  • Log In with Google      Sign In   
  • Create Account

Unworkable project

  • You cannot reply to this topic
24 replies to this topic

#1 LNK2005   Members   -  Reputation: 154

Like
5Likes
Like

Posted 14 June 2014 - 12:47 AM

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.
 


Sponsor:

#2 Nypyren   Crossbones+   -  Reputation: 4279

Like
6Likes
Like

Posted 14 June 2014 - 01:23 AM

- 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?

Edited by Nypyren, 14 June 2014 - 01:28 AM.


#3 LNK2005   Members   -  Reputation: 154

Like
1Likes
Like

Posted 14 June 2014 - 01:26 AM

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.



#4 Nypyren   Crossbones+   -  Reputation: 4279

Like
3Likes
Like

Posted 14 June 2014 - 01:32 AM

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.

Edited by Nypyren, 14 June 2014 - 01:33 AM.


#5 LNK2005   Members   -  Reputation: 154

Like
0Likes
Like

Posted 14 June 2014 - 01:43 AM

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.


Edited by LNK2005, 14 June 2014 - 01:46 AM.


#6 Shippou   Members   -  Reputation: 1522

Like
0Likes
Like

Posted 14 June 2014 - 06:54 AM

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 ...


 Reactions To Technologies:
1. Anything that is in the world when you’re born is normal and ordinary and is just a natural part of the way the world works.
2. Anything that's invented between when you’re fifteen and thirty-five is new and exciting and revolutionary and you can probably get a career in it.
3. Anything invented after you're thirty-five is against the natural order of things.

- Douglas Adams 2002


 


#7 jefferytitan   Crossbones+   -  Reputation: 2118

Like
4Likes
Like

Posted 14 June 2014 - 07:00 AM

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.



#8 LNK2005   Members   -  Reputation: 154

Like
0Likes
Like

Posted 14 June 2014 - 08:47 AM

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.


Edited by LNK2005, 14 June 2014 - 09:07 AM.


#9 TheComet   Members   -  Reputation: 1568

Like
1Likes
Like

Posted 14 June 2014 - 10:39 AM

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.


Edited by TheComet, 14 June 2014 - 10:39 AM.

YOUR_OPINION >/dev/null


#10 mhagain   Crossbones+   -  Reputation: 7959

Like
2Likes
Like

Posted 16 June 2014 - 03:38 AM

Let me guess: AMD display driver?


It appears that the gentleman thought C++ was extremely difficult and he was overjoyed that the machine was absorbing it; he understood that good C++ is difficult but the best C++ is well-nigh unintelligible.


#11 Orymus3   Crossbones+   -  Reputation: 8945

Like
0Likes
Like

Posted 16 June 2014 - 02:07 PM

Be sure to at least voice it once, however mildly, that this codebase is shit.

When you leave, kindly remind them that this codebase is shit, and is the one reason why you've never even considered staying...

Hopefully, with some luck, they'll address the issue in some way, and the "next guy" won't go #4...



#12 LNK2005   Members   -  Reputation: 154

Like
0Likes
Like

Posted 17 June 2014 - 10:09 AM

Be sure to at least voice it once, however mildly, that this codebase is shit.

When you leave, kindly remind them that this codebase is shit, and is the one reason why you've never even considered staying...

Hopefully, with some luck, they'll address the issue in some way, and the "next guy" won't go #4...

Everyone involved already knows the codebase is shit. The previous three(!) developers who worked on it have all quit, and I understand them. But like I said, the client won't pay for a rewrite, because it "works". So this zombie will live to suck another day.



#13 Orymus3   Crossbones+   -  Reputation: 8945

Like
0Likes
Like

Posted 17 June 2014 - 11:42 AM

And what you're doing is essentially maintaining the code, or adding new features?



#14 jefferytitan   Crossbones+   -  Reputation: 2118

Like
0Likes
Like

Posted 17 June 2014 - 10:38 PM

Out of curiosity, is the problem a cheap client? I have seen situations where the client knows their system is bad, but are unwilling to make any significant investment in it. Quick patches accrete until you get a "pearl" such as you have.

 

If the client is not cheap, maybe they just need the correct business case for improving/rewriting some part of the system. Reasons may include:

  • Increasing maintenance costs
  • Obsolete technologies
  • User pain points that can't be fixed economically with the current architecture
  • Increased scalability


#15 LNK2005   Members   -  Reputation: 154

Like
0Likes
Like

Posted 18 June 2014 - 10:53 AM

 

And what you're doing is essentially maintaining the code, or adding new features?

So far mostly maintenence, but some bigger projects are in the pipeline. The dread keeps me awake at night.

 

Out of curiosity, is the problem a cheap client? I have seen situations where the client knows their system is bad, but are unwilling to make any significant investment in it. Quick patches accrete until you get a "pearl" such as you have.

I'm not sure how cheap they are. I assume they are because they keep on to a 15-year old project, but maybe i misunderstand. Maybe I should lobby for a rewrite. Later, when I'm not so new on the job. And if I'm still around.

 

"Everyone involved knows the codebase is shit" was probably an overstatement. Everyone who's wrestled with it certainly knows. My bosses have some idea, I think. The client, I don't know. The users seem relatively happy, for some reason I can't quite understand. Old habits, probably.



#16 Glass_Knife   Moderators   -  Reputation: 4421

Like
3Likes
Like

Posted 18 June 2014 - 11:26 AM


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

 

 

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.

 

 

A few years ago the group I was working with started letting people go.  I worked for a large company, so I began looking for a transfer so that I wouldn't be laid off too.  I found one and move my family across the U.S.  After about two months I realized that the group I worked remotely with (they were in another state) had no idea what they were doing.

 

To this day it is the worst code I've every seen.  I wasn't aware that a group of people could write such hideous and un-maintainable code.  You would think, way before it got to that point it would just implode and consume itself.  But somehow it just go more unwieldy.  It was Java, with a JBoss server that took minutes to start, had huge XML files that serialized all the data, and could only be stopped by using the linux 'kill' command.

 

And the customer paid millions for it.  In the span of one year, I was never even able to get the software to build, yet alone run.  I am not exaggerating.  The team would change the design of the system every few days, and never talk to anyone else about it.  Add a few developers doing that, and a boss who was only concerned with nice suits, good watches, and climbing the corporate ladder selling snake oil, and you had a nightmare.

 

There was no fixing it.  I found another job.  I bet they are still using it, and I feel sorry for whomever has come in contact with it.  I came to the hard realization that there are some groups out there where everyone is in one of two groups:  those too stupid to leave, and those too stuck to leave.


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

#17 Orymus3   Crossbones+   -  Reputation: 8945

Like
0Likes
Like

Posted 18 June 2014 - 12:24 PM


Orymus3, on 17 Jun 2014 - 1:42 PM, said:
And what you're doing is essentially maintaining the code, or adding new features?
So far mostly maintenence, but some bigger projects are in the pipeline. The dread keeps me awake at night.

 

Find something else quickly then :) (before the storm hits)



#18 LNK2005   Members   -  Reputation: 154

Like
0Likes
Like

Posted 25 June 2014 - 10:20 AM

In a normal project, you can read the code and the docs and sort of understand what's going on. That is not an option here. I've read the docs, and they almost make sense, but the code just leaves me completely baffled. Worse, the docs and the code rarely match. There's just no way to understand it. It would take years to read up on the system, but the maintenence needs to be done today. This horror wakes me up screaming at 4AM every day. I'm in Hell.
 
If people in general knew how web applications are often written, nobody would dare use the internet.

Edited by LNK2005, 25 June 2014 - 10:24 AM.


#19 Nypyren   Crossbones+   -  Reputation: 4279

Like
1Likes
Like

Posted 25 June 2014 - 11:07 AM

If people in general knew how web applications are often written, nobody would dare use the internet.


If people could see all of the code I've seen in the past 20 years, nobody would dare use desktop apps, mobile devices, or consoles, either ;)

(But yeah, web applications are by far the worst)

#20 LNK2005   Members   -  Reputation: 154

Like
2Likes
Like

Posted 25 June 2014 - 11:11 AM

Also, if anyone didn't already know, programming sucks







PARTNERS