Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Pollyanna
Mar 5, 2005

Milk's on them.


This is a ~7 year legacy system from the inception of the company built around a vendor’s product whose website currently points to a 500 error. It is old as poo poo and we hate it. I am currently in charge of ripping out the pre-processing logic and data and putting it into the older lovely old monolith (which we also want to split up into not-poo poo pieces). Getting everyone to agree on what the code does or should do, and even telling me if my understanding is even correct, is like pulling teeth cause 1. it’s summer and people are out which is totally fair 2. we all have so much poo poo to do that coordinating people-in-rooms is a pain.

It could be worse, but...I mean, I wonder how much of it is of my own making. Good to hear that it’s not out of the ordinary, though.

Adbot
ADBOT LOVES YOU

BurntCornMuffin
Jan 9, 2009


Pollyanna posted:

Legacy bullshit.

My last client (who probably made a decent amount of the products in your home, to give a sense of scale), had a legacy system like that, which was a web app built approximately 20 years ago. My job was to port a specific integration for an external system to a temporary api for the new system, as the integrated tool was in itself deprecated.

I had hoped to have the project in production long before I left. Instead, I spent my final two weeks in an archeological dig, because the team maintaining the system I was integrating with didn't know who how their stuff worked. I spent a week discovering there was another team nobody knew about managing file transports between them and myself, a week realizing the file transport was also deprecated and about to be replaced, a week learning that they failed QA and didn't bother to follow up, and the day before I left some guy two desks over who isn't even related to my program found a document on a file share I had no access to that described poo poo I had to reverse engineer weeks ago.

The day I left and the end to end testing I wanted to perform a month prior was still blocked by this other team.

I've never seen such horrible internal communication in a company before.

kitten smoothie
Dec 29, 2001

Pollyanna posted:

Holy poo poo, I’m the main point person on our push to kill off and split up an old legacy system and bring it into our newer stuff, and I am loving it up so badly. Every time I think we’ve accomplished a new milestone some new insight on how the legacy system works or some data relation is clarified and I have to interview/meet with people to determine if what I’ve got is actually what they expect or if I need to change it up. I feel like I’m stumbling over so much poo poo in the way of doing the work. :suicide: Am I bad at my job?

You're not a bad dev, welcome to dealing with undocumented old systems!

Also don't be alarmed when you cut over to the new one and weeks/months later you find there's still stuff missed.

I have yet to see a time in my career where a legacy system has been decommissioned without someone coming back six months later saying something like "I do <thing> as part of annual fiscal year closeout and the old system would make that report, this one doesn't, CFO's office needs that data yesterday btw."

CPColin
Sep 9, 2003

Big ol' smile.

Pollyanna posted:

Getting everyone to agree on what the code does or should do, and even telling me if my understanding is even correct, is like pulling teeth…

Bonus points here when people use "what the code should do" to mean "what the code doesn't currently do, but I want Pollyanna to add now that I can pretend it isn't feature creep."

Clanpot Shake
Aug 10, 2006
shake shake!

I like when you discover a weird edge case bug that you fix in the new version, only to discover some other department was using this "feature" for Very Important Business Reasons.

Or that time I discovered and fixed a decimal rounding bug, only for our entire QA suite to explode because they wrote everything to expect 0.4999999999999 instead of 0.5.

Slimy Hog
Apr 22, 2008

Clanpot Shake posted:

I like when you discover a weird edge case bug that you fix in the new version, only to discover some other department was using this "feature" for Very Important Business Reasons.

Or that time I discovered and fixed a decimal rounding bug, only for our entire QA suite to explode because they wrote everything to expect 0.4999999999999 instead of 0.5.

My co-worker alphabetized some attributes on a class today just to have a bunch of tests fail. It was pretty funny.

BurntCornMuffin
Jan 9, 2009


Another legacy data system story:

One of my colleagues had the privilege of integrating data from a bunch of old systems into a new system. All of these old systems were coded to an internal, company-specified data formatting specification, "Universal Data Format" (name changed). There were hundreds of teams using this format, each of which rolled their own tools to interact with the format.

My colleagues job was to centralize all these UDF files into a single system that all teams would access through a common application. Now, I should mention at this point that all of these teams are engineers who make critical airplane parts, as in if one fails, the plane will fall out of the sky in most newsworthy fashion. Given this, quality and reputation matters a lot to this company, so these guys are very stressed, very detail oriented, and very OCD; meaning that they will notice and complain should anything behave in a manner that is inconsistent.

As it turns out all of these hundreds of implementations of this UDF format interpreted the specification just a little bit differently. The entire six months I sat in his office, he was chasing down edge case after edge case on his UDF parser, because of how many minor differences there were between these UDF implementations, and the business refused to make any clarifications or judgement calls on this "standard". Last I heard before I left that company (about a year later), he still never delivered a final product, because he kept finding fiddly inconsistencies with everybody's interpretation of the standard.

geeves
Sep 16, 2004

Phobeste posted:

Don’t freaking post or pm it lmao

Shirec can't post it on the forums due to the rule about homegrown.

Seriously that review, I want more.

Shirec
Jul 29, 2009

How to cock it up, Fig. I

Slimy Hog posted:

My co-worker alphabetized some attributes on a class today just to have a bunch of tests fail. It was pretty funny.

In the interview I had on Tuesday, one of them was telling me about debugging a system that had been written so sloppily that all the numbers for a finance system were being saved as floats. I visibly recoiled in horror.

smackfu
Jun 7, 2004

People have a nasty tendency to assume that gnarly untested poorly written legacy code is simple. Usually leads to the replacement project cratering.

FlapYoJacks
Feb 12, 2009

Shirec posted:

In the interview I had on Tuesday, one of them was telling me about debugging a system that had been written so sloppily that all the numbers for a finance system were being saved as floats. I visibly recoiled in horror.

Don’t worry, the micro code in basically 1/4th of all the gas pumps out there is a few hundred thousand lines of spaghetti code with every variable being a global with a shitload of ASM made by two engineers and 0 unit tests or documentation.

Janitor Prime
Jan 22, 2004

PC LOAD LETTER

What da fuck does that mean

Fun Shoe

BurntCornMuffin posted:

My last client (who probably made a decent amount of the products in your home, to give a sense of scale), had a legacy system like that, which was a web app built approximately 20 years ago. My job was to port a specific integration for an external system to a temporary api for the new system, as the integrated tool was in itself deprecated.

I had hoped to have the project in production long before I left. Instead, I spent my final two weeks in an archeological dig, because the team maintaining the system I was integrating with didn't know who how their stuff worked. I spent a week discovering there was another team nobody knew about managing file transports between them and myself, a week realizing the file transport was also deprecated and about to be replaced, a week learning that they failed QA and didn't bother to follow up, and the day before I left some guy two desks over who isn't even related to my program found a document on a file share I had no access to that described poo poo I had to reverse engineer weeks ago.

The day I left and the end to end testing I wanted to perform a month prior was still blocked by this other team.

I've never seen such horrible internal communication in a company before.

Haha when I was Amazon this was the kind of bullshit that all the legacy teams had to deal with. I heard through the rumor mill that the entire warehouse inventory system was in a constant state of churn, new devs having to fix/implement code that was not documented and no knew how any of it worked.

spiritual bypass
Feb 19, 2008

Grimey Drawer

smackfu posted:

People have a nasty tendency to assume that gnarly untested poorly written legacy code is simple. Usually leads to the replacement project cratering.

It's quite true. Makes me think a vigorous practice of refactoring is superior. Refactoring may not handle everything quickly, but at least the project does not simply fail. The business logic remains intact, too.

Dr. Poz
Sep 8, 2003

Dr. Poz just diagnosed you with a serious case of being a pussy. Now get back out there and hit them till you can't remember your kid's name.

Pillbug

Slimy Hog posted:

My co-worker alphabetized some attributes on a class today just to have a bunch of tests fail. It was pretty funny.

When I was working for a payment gateway processor we discovered a rounding bug in our DoubleParser class. The problem was we couldn't just change the behavior as we had a long list of banks that had signed off on and the rounding behavior it produced and would have poo poo if suddenly amounts started changing. We knew that we couldn't let any new implementations use this flawed behavior though. That was when I had a moment of inspiration.

I renamed DoubleParser to TerribleDoubleParser and implemented the correct behavior in a new class named DoubleParser, this way any new developers would fall rear end backwards into the using the right one if they just look at the list of whats available. If they were looking at any legacy code using the old one they would see it named TerribleDoubleParser and either avoid it or ask questions about what makes it terrible and why they shouldn't use it.

Volmarias
Dec 31, 2002

EMAIL... THE INTERNET... SEARCH ENGINES...

Dr. Poz posted:

If they were looking at any legacy code using the old one they would see it named TerribleDoubleParser and either avoid it or ask questions about what makes it terrible and why they shouldn't use it.

No one did though, did they.

JawnV6
Jul 4, 2004

So hot ...
Legacy re-writes should be aware of Chesterton's Fence, but it should be expected that something will get dropped in the shuffle and require firefighting.

Carbon dioxide
Oct 9, 2012

I just got a message from a random recruiter that starts with:

"Based on the insights from our A.I., we might have an interesting proposition for you regarding a new job opening"

Their AI, huh? :v:

Keetron
Sep 26, 2008

Check out my enormous testicles in my TFLC log!

code:

if(candidate.hasPulse()) sendMessage(shittyJob);

Note: the above is valid java but causes a policy violation on our Sonar because it has no curly braces.

baquerd
Jul 2, 2007

by FactsAreUseless

Carbon dioxide posted:

I just got a message from a random recruiter that starts with:

"Based on the insights from our A.I., we might have an interesting proposition for you regarding a new job opening"

Their AI, huh? :v:

Regex is probably indistinguishable from AI to your typical recruiter.

Volmarias
Dec 31, 2002

EMAIL... THE INTERNET... SEARCH ENGINES...
Wherever I get an email with "After looking at your job history at <employer> I really think you'd be a great fit at these jobs in <thing I don't do> for <ten random companies>", I send an email of "oh cool, what in my history makes you think I'm a good fit" and I don't regret wasting their time just like they're wasting mine.

Xarn
Jun 26, 2015
I should try that, right now I just bin those emails.

Fellatio del Toro
Mar 21, 2009

I was really impressed by your background!

Bruegels Fuckbooks
Sep 14, 2004

Now, listen - I know the two of you are very different from each other in a lot of ways, but you have to understand that as far as Grandpa's concerned, you're both pieces of shit! Yeah. I can prove it mathematically.

Pollyanna posted:

Holy poo poo, I’m the main point person on our push to kill off and split up an old legacy system and bring it into our newer stuff, and I am loving it up so badly. Every time I think we’ve accomplished a new milestone some new insight on how the legacy system works or some data relation is clarified and I have to interview/meet with people to determine if what I’ve got is actually what they expect or if I need to change it up. I feel like I’m stumbling over so much poo poo in the way of doing the work. :suicide: Am I bad at my job?

Hey, so if you're wondering why developers change jobs every couple of years or so, let me give a summary of me at the six year mark of my job.

1. We have a legacy system that has code from the nineties that references IE in it. There are no unit tests, the workstation client itself is over six million lines of C++, registers itself as a windows shell namespace extension, and does all sorts of crazy poo poo.

2. Working on the replacement for this thing is my first project as a developer - the idea is to adapt a codebase used for something else that's only ten years old to replace the twenty year old one.

3. I work on this project for like, let's say, from 2012-2014. It gets canned. The lead developers of the replacement leave the company. I am stuck on a relocation contract and am uninterested in paying back the money, so I stay on.

4. In 2014, we decide that everything is going to be HTML5. I work on the replacement for the replacement client using all this new web junk, which I know nothing about.

5. In 2015, PO decides development is too slow and we should stop writing unit tests for the UI. I complain that some of the features are not feasible with the new architecture and get placed on another project.

6. In 2016, worldwide release. Everyone complains about the performance. Hundreds of bugs about how the system doesn't match the legacy system - bug tracker blows up like Zimbabwe currency. We start thinking about the replacement for the client.

7. 2017 - we start working on the replacement for the replacement of the replacement of the product. This project fails.

8. 2018 - the architect agrees with my 2015 assessment of the problems with the architecture, and we decide to to a replacement for the replacement of the replacement of the replacement of the product. Unfortunately, the HTML5 refresh of the client was successful enough that it was able to pay for a huge monolithic QA team and raises for all the people who made mistakes. Instead of actually having technical standards, now closing bugs in tfs has twenty three required fields, closing user stories requires sign offs from three different teams.

9. After some initial progress, the fundamental problems with the client still exist in the new version. I get asked to work on this new version. I tell them that they can go gently caress themselves (I say the word 'gently caress' in meetings a lot at that company, this is not met with surprise) and the project is going to fail, and ask for a transfer to architecture team instead.

10. I transfer out of my old group, but my new boss has a stroke before it's finalized, so now I don't actually... have a boss. Or assignments (sure I'm supposed to deliver a tumor recognition AI and the replacement for the current architecture sometime in 2019, but it'll have to get in line behind finishing all the quests in the witcher 3). The checks are still coming in the mail. I try to go to the office once or twice a week just for appearances sake and maybe leave the office at seven.

MrMoo
Sep 14, 2000

Bruegels Fuckbooks posted:

the workstation client itself is over six million lines of C++, registers itself as a windows shell namespace extension, and does all sorts of crazy poo poo.

Think about the fun times that led up to that alone.

Keetron
Sep 26, 2008

Check out my enormous testicles in my TFLC log!

Bruegels Fuckbooks posted:

8. 2018 - the architect agrees with my 2015 assessment of the problems with the architecture, and we decide to to a replacement for the replacement of the replacement of the replacement of the product. Unfortunately, the HTML5 refresh of the client was successful enough that it was able to pay for a huge monolithic QA team and raises for all the people who made mistakes. Instead of actually having technical standards, now closing bugs in tfs has twenty three required fields, closing user stories requires sign offs from three different teams.

The rise and fall of QA empires. They are always build on fear for bugs and always dismantles for stifling progress.

Pollyanna
Mar 5, 2005

Milk's on them.


Bruegels Fuckbooks posted:

Hey, so if you're wondering why developers change jobs every couple of years or so, let me give a summary of me at the six year mark of my job.

1. We have a legacy system that has code from the nineties that references IE in it. There are no unit tests, the workstation client itself is over six million lines of C++, registers itself as a windows shell namespace extension, and does all sorts of crazy poo poo.

2. Working on the replacement for this thing is my first project as a developer - the idea is to adapt a codebase used for something else that's only ten years old to replace the twenty year old one.

3. I work on this project for like, let's say, from 2012-2014. It gets canned. The lead developers of the replacement leave the company. I am stuck on a relocation contract and am uninterested in paying back the money, so I stay on.

4. In 2014, we decide that everything is going to be HTML5. I work on the replacement for the replacement client using all this new web junk, which I know nothing about.

5. In 2015, PO decides development is too slow and we should stop writing unit tests for the UI. I complain that some of the features are not feasible with the new architecture and get placed on another project.

6. In 2016, worldwide release. Everyone complains about the performance. Hundreds of bugs about how the system doesn't match the legacy system - bug tracker blows up like Zimbabwe currency. We start thinking about the replacement for the client.

7. 2017 - we start working on the replacement for the replacement of the replacement of the product. This project fails.

8. 2018 - the architect agrees with my 2015 assessment of the problems with the architecture, and we decide to to a replacement for the replacement of the replacement of the replacement of the product. Unfortunately, the HTML5 refresh of the client was successful enough that it was able to pay for a huge monolithic QA team and raises for all the people who made mistakes. Instead of actually having technical standards, now closing bugs in tfs has twenty three required fields, closing user stories requires sign offs from three different teams.

9. After some initial progress, the fundamental problems with the client still exist in the new version. I get asked to work on this new version. I tell them that they can go gently caress themselves (I say the word 'gently caress' in meetings a lot at that company, this is not met with surprise) and the project is going to fail, and ask for a transfer to architecture team instead.

10. I transfer out of my old group, but my new boss has a stroke before it's finalized, so now I don't actually... have a boss. Or assignments (sure I'm supposed to deliver a tumor recognition AI and the replacement for the current architecture sometime in 2019, but it'll have to get in line behind finishing all the quests in the witcher 3). The checks are still coming in the mail. I try to go to the office once or twice a week just for appearances sake and maybe leave the office at seven.

:wtc: I guess it could always be worse.

Ghost of Reagan Past
Oct 7, 2003

rock and roll fun
All legacy code is bad.
All code is legacy code.

All code is bad.

spiritual bypass
Feb 19, 2008

Grimey Drawer
All coders are bastards

netcat
Apr 29, 2008
All code is good :love:

fantastic in plastic
Jun 15, 2007

The Socialist Workers Party's newspaper proved to be a tough sell to downtown businessmen.
Out of the crooked IDEs of humanity, no straight thing was ever made.

Blinkz0rz
May 27, 2001

MY CONTEMPT FOR MY OWN EMPLOYEES IS ONLY MATCHED BY MY LOVE FOR TOM BRADY'S SWEATY MAGA BALLS

netcat posted:

All code is good :love:

code is terrible and so are computers

Bongo Bill
Jan 17, 2012

all code is valid

if it compiles

Sage Grimm
Feb 18, 2013

Let's go explorin' little dude!

Bongo Bill posted:

all code is valid

if it compiles

I have a parser that returns 1 for any input. It will compile all code.

Volguus
Mar 3, 2009

Ghost of Reagan Past posted:

All legacy code is bad.
All code is legacy code.

All code is bad.

If I wrote it in the last 6 months, it's good code and everything makes sense.
If I didn't write it or I wrote it in the times of the dinosaurs, it's bad code that should be replaced asap.

Volmarias
Dec 31, 2002

EMAIL... THE INTERNET... SEARCH ENGINES...

Volguus posted:

If I wrote it in the last 6 months, it's good code and everything makes sense.
If I didn't write it or I wrote it in the times of the dinosaurs, it's bad code that should be replaced asap.

Same but 6 days

Ghost of Reagan Past
Oct 7, 2003

rock and roll fun

Volmarias posted:

Same but 6 days

More like 6 hours

Pollyanna
Mar 5, 2005

Milk's on them.


More like immediately, holy poo poo I am useless.

The Fool
Oct 16, 2003


More likely a function of learning quickly.

ChickenWing
Jul 22, 2010

:v:

Bruegels Fuckbooks posted:

Instead of actually having technical standards, now closing bugs in tfs has twenty three required fields, closing user stories requires sign offs from three different teams.

:shepicide:

Adbot
ADBOT LOVES YOU

champagne posting
Apr 5, 2006

YOU ARE A BRAIN
IN A BUNKER

Mission accomplished: you will never close anything, tickets closed will go straight to zero

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply