Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
![](/static/devrant/img/pipeless-devrant-banner-white.png)
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - ";legacy"
-
I've learned that trying to jump into a project without properly understanding everything it will entail is bad.
I recently worked on a project that involved modernizing a legacy system and no one on the team (including me) fully understood how the legacy system worked. This led to us missing a lot of edge cases and attacking the project in a way that really wasn't beneficial overall.
If we had thought about the entire system beforehand and mapped out the legacy system, the project would've turned out much better.10 -
Reading through legacy code, only to discover the comment:
/*
* to the poor guy who has to fix this
* ...
* I'm sorry
*/3 -
Holy fucking hell!
Who the fuck sets up a local network with an 255.255.0.0 subnet mask and then lets the dhcp-server distribute clients onto the 192.249.x.x., 192.2.x.x and the 192.22.x.x networks AT FUCKING RANDOM???
I need to SSH onto 40 routers distributed across the entire campus and have a WORKING internet connection while doing so and you make me spin the connect-disconnect-wheel. Fucking hell dude, don't give me that "Uh, it wasn't intended for this size"-bullshit. You have about 200 active devices. And in one subnet you have space for more than 60 000. Fuck you, dumbass! OH, YOUR FUCKING LIST IS FUCKING WRONG AND YOU DON'T REMEMBER THE IP OF THE ROUTERS? OH FUCK YOU EVEN HARDER!!!
Goddamn people why does legacy maintenance always suck so much?😭😭😭4 -
I got a work on legacy code. The app really depends on a library that was last updated on 2009. The website docs also missing
RIP18 -
After opening the legacy code and finding out that the entire shit has 15000+ LOC and without proper commentsundefined devrant please help fbi fucking comment the code properly comments thensa legacy code notnsa devil wk58 god3
-
My teammates are working on a legacy codebase so shitty awful, so poorly written, so full of pitfalls, hidden information and intricate relationships, they gave a name to their development style:
Indiana Jones programming.6 -
Our project is a legacy of all legacy projects. The developers imported the third-party libraries by copy-pasting the whole source codes into the project. Ohhhh yeahhh!!!8
-
If you thought your legacy code was bad, this is what I'm dealing with. The below SQL is stored in a cookie on login and executed to on every further request to determine the user / privileges.15
-
Business: How long will it take to add that feature to the legacy system?
Programmer: When will the new system be implemented?
Business: 6 months
Programmer: The new feature will take 7 months3 -
I just got handed a legacy php web project... Full of vulnerabilities... And it's using only mysql_ functions... Not only it's not OOP, there is not even a single class...
How good it's coded: User profiles are created manually by the frontend dev as htmls, and then the past php dev implemented them as links etc in the current page.
This is how I feel:5 -
I can maintain your shitty legacy node 6 code
And the shitty m3 ec2 instance with Ubuntu 16 that it runs on
And another one with postgres 9
But if I have to make a powerpoint presentation, I am jumping ship.
A man has his limits11 -
Refactored a legacy source file and reduced it from 2.8k lines to 300 lines.
Mixed feelings: happy that it is much simpler now and sad that my current project team members never go back to delete unused code.
Testing pending though 😜7 -
I don't know why my position has to be labeled "developer", when in reality I ain't develop shit, all I do day after day is fixing legacy code7
-
Looking at code in our workplace.. I realized one thing. Like Devops, legacy code is actually a mindset.
So here goes my thought:
A piece of code is not legacy because it was written ten years ago.
A piece of code is legacy because it looks like a piece of legacy code.
With the legacy code mindset, you end up writing legacy code no matter where you are, when you wrote it.
I was looking at some part of our code which we written in just the last few months, and I can’t help but think that they were legacy, so it really doesn’t matter when it was written!
It is more about how you write your code that determines whether it is legacy :)
Hopefully this was not crazily confusing anyone. Have a good day guys & gals!7 -
That creeping realization how the legacy code works.
The "it's not possible. They couldn't have... yes. Yes they did."
It should have a name3 -
Found this in a legacy codebase at work. Can't imagine what the coder was thinking. "Just in case"?5
-
"Our last lead-developer was a real smart guy, he modernized the legacy code and we all learned a lot from him"
I need a beer, and a shotgun.10 -
So I once had a job as a C# developer at a company that rewrote its legacy software in .Net after years of running VB3 code - the project had originally started in 1994 and ran on Windows 3.11.
As one of the only two guys in the team that actually knew VB I was eventually put in charge of bug for bug compatibility. Since our software did some financial estimations that were impossible to do without it (because they were not well defined), our clients didn't much care if the results were slightly wrong, as long as they were exactly compatible with the previous version - compatibility proved the results were correct.
This job mostly consisted of finding rounding errors caused by the old VB3 code, but that's not what I'm here to talk about today.
One day, after dealing with many smaller functions, I felt I was ready to finally tackle the most complicated function in our code. This was a beast of a function, called Calc, which was called from everywhere in the code, did a whole bunch of calculations, and returned a single number. It consisted of 500 or so lines of spaghetti.
This function had a very peculiar structure:
Function Calc(...)
...
If SomeVariable Then
...
If Not SomeVariable Then
...
(the most important bit of calculation happened here)
...
End If
...
End If
...
End Function
But for some reason it actually worked. For days I tried to find out what's going on, where the SomeVariable was being changed or how the nesting indentation was actually wrong and didn't match the source, but to no avail. Eventually, though, after many days, I did find the answer.
SomeVariable = 1
Somehow, the makers of VB3 though it would be a good idea for Not X to be calculated as (-1 - X). So if a variable was not a boolean (-1 for True, 0 for False), both X and Not X could be truthy, non-zero values.
And kids these days complain about JavaScript's handling of ==...7 -
"Holy shit that was fucking traumatic to look at" you whisper under your breath
That moment you get the satisfaction of deleting 2468 lines of legacy code.5 -
Legacy code.
Honestly though, this is some of the better legacy code I've worked with at this company. It's a nifty alert system wherein you can trigger sending messages to subscribers of that alert via whatever means (phone/email) they've entered.
I'll save you the technical analysis of its internals, but suffice to say it's actually pretty nice, with good separation of concerns, internal logic hidden away, dead-simple public interface, etc. documentation is kinda crap, but it exists (!), so that's a nice change.
but.
For some unknown and bloody bizarre reason, the thing breaks when a user wants both sms AND email notifications. Either by themselves work totally fine, but both together? nonono. Email alerts give ArgumentErrors, so something internal isn't correct, and SMS alerts complain about uninitialized Twilio::Error constants.
but.
they both work fine otherwise?
also, the two notification preferences aren't stored on the same object anywhere. if a user wants both, the user creates two AlertContact objects with different info, and when performed, the Alert basically iterates over these and does its thing for each, so there is no knowledge shared between them. totally should work the same regardless.
idfgi.
ALSO.
AND THIS PART REALLY PISSES ME OFF.
WHEN THERE'S AN ERROR, THIS THING DOESN'T LOG IT. IT STRINGIFIES THE ERROR OBJECT (basically just extracting the message) AND INSERTS THAT INTO THE DATABASE INSTEAD. WHAT THE CRAP.
So, I don't get a stack trace, line number, or anything. just the basic error message. instead of my alert text. because of course that makes sense and totally helps debugging.
aklsjfak;sldfj.
legacy code.5 -
Another non programming related rant although kinda tech related.
So I work in a distribution center and today I learned box packing.
1. THEIR LEGACY ASS SYSTEM ONLY RUNS ON IE (FUCK ME IN THE ASS SIDEWAYS PLEASE).
2. SYSTEM CONSTANTLY FREEZES.
3. THE HAND SCANNERS RUN ON AN OLD FUCKING LEGACY WINDOWS (PRE 2000 I THINK) SYSTEM AND IS SLOW AS MOTHERFUCKING HELL.
Yes, it is VERY frustrating to have to work with this FUCKING SHIT THE WHOLE MOTHERFUCKING DAY.
Plus side today, the locations I had to pick from today included 200, 403 and 404. Had loads of inside jokes about not being able to find locations and not having permission etc 😆6 -
I've found this beauty in our company's legacy code.
The main doubt is: is that possible have the required strength to refactoring this 💩?22 -
While trying to learn a legacy codebase, I realize one library supports almost everything. I decide to look it up.
Last updated: 19962 -
There’s nothing like opening a legacy system you didn’t build and has for some reason lasted the turn of the century, only to add a new feature without breaking anything.....
Would have been nice if I had written that JS function before saving the other file 🙄
There’s nothing like building in production 💩 -
Me trying to debug CSS compiled from a legacy SCSS-project containing 100+ files and no source maps.6
-
My own personal hell was a html page that had a script tag that called a rest endpoint that sent back a text block of JavaScript that was then dynamically executed to redirect the user to a php 3 page that was the exact same thing as the original page but with an extra bit of css to make the buttons blue and slightly rounded
You can’t make this shit up6 -
Today I started work on a new project that contains a lot of legacy. I asked the developers about unit testing javascript and was told that not only is there none in place, but it's not worth adding any in.
At first, I grimaced and thought fair enough. This is their codebase, it's their choice. I've now been thinking about this for a few hours and have instead decided that screw those guys, I'm adding in a testing framework, a module pattern that's compatible with the existing code, and unit testing the crap out of it. If they don't want it they can refactoring it out, but I can't bring myself to intentionally deliver code I know is crap.
I WILL FORCE CODE QUALITY ON THEM.7 -
Anyone else work in a codebase that is so deeply convoluted, that the only way to make new features work is to write new code in a similarly convoluted way?
Everyone wants to refactor our system, but we're a small shop with an insane amount of technical debt, so it likely won't happen for a long time. Any suggestions in the meantime? I feel like I'm spending more time figuring out how to make something work in our system then learning actual good practices.6 -
My worst "legacy code" experience was when the company I work at couldn't get their heads out of their asses and stubbornly continued to write legacy code. As of this day they are still doing everything according to what was hip around 2004. And they even force me to write new legacy code.
New legacy code: it sounds like a paradox, but this company makes it happen.6 -
Fun drinking game: work on a legacy system for a few hours. Every time you say "what the fuck?" equals 1 shot.3
-
Everytime I'm digging into some random legacy code where no one knows its original intention I'm seeing "Software Archeologist" as a well-paid job sooner or later...
Fucking undocumented legacy code...1 -
At an auto parts store and was taking a look at the UI.
I FOUND A DINOSAUR!
More realistically I saw F20 as a shortcut key. How I know it wasn’t a typo? There was also F16. Wow. Even their keyboard stop at F12.
Talk about legacy program.2 -
It's 5 AM and I don't want to shit on anybody's party but trust me when I say most of you here complaining about legacy code don't know the meaning of the word.
As someone who maintained a PHP4 codebase with an average file length of 3000+ lines for almost 4 years, I feel you, I feel your pain and your helplessness. But I've seen it all and I've done it all and unless you've witnessed your IDE struggle to highlight the syntax, unless you had to make regular changes in a test-less SVN's working copy that **is** the production and unless you are the reason that working copy exists because you've had enough of `new_2_old_final_newest.php` naming scheme, you do not know legacy. If you still don't believe me bare in mind I said "is" as in: "this system is still in production".
But also bare hope. Because as much grief as it cost me and countless before me, today of all days, without a warning, it got green lit for userbase migration to a newer platform. And if this 20 years of generous custom features and per client implemented services can be shut down even though it brings more profit than all the other products combined, so can happen to any of your projects. 🙏
Unfortunately, I do mean *any*.7 -
[...] great! Nice to hear from you that you've got experience using C#! Our shipping company will also need a mobile interface for our IBM AS400 relic older-than-the-pyramids server, can you do that?
Me (a little displeased about the idea of working on a pre-existing legacy server): yes sure, I'm working on a Android project right now, so I'm learning a lot about it lately, I think it's totally feasible
Them: oh, but we are using a windows mobile device
Me (wondering why they are still using Windows phone): I can look it up and let you know btw
> Windows Mobile /= Windows Phone
> Deprecated since 2010
I'm fucked.4 -
What you see:
"we gonna build a new application to replace our legacy one"
How to read:
"we gonna make you put more shit in the legacy app whenever we want and still keep asking about the new app you don't have the time to make"2 -
Legacy projects are cancers of this profession. I would not wish maintenance of legacy code(written by someone else) on my worst enemy.14
-
Legacy code written under the pressure oft a deadline by people not knowing the capabilities of the framework they use.
I am doomed...2 -
I've pulled the third all-nighter in a row because of a ridiculous bug in legacy spaghetti..
I finally kicked its ass so I can now emerge from my cave, feeling like both a lifeless zombie and someone who got reanimated after half a week.
You all helped me through this tough time, love you all devRant ♥ -
These motherfucking incompetent programmers... Demon spaghetti code base saga continues.
So they have a password change functionality in their web app.
We have to change the length of it for cybersecurity insurance. I found a regex in the front end spaghetti and changed it to match the required length.
Noticed 7 regexes that validate the password input field. Wtf, why not just use one?! REGEX ABUSE! Also, why not just do a string length check, it's fucking easy in JS. I guess regex makes you look smart.
So we test it out and the regexes was only there for vanity, like display a nicely designed error that the password doesn't have x amount of characters, doesn't have a this and that, etc.
I check the backend ColdFusion mess that this charismatic asshole built. Finally find the method that handles password updates. THERE'S NO BACKEND VALIDATION. It at least sanitises the user input...
What's worse is that I could submit a blank new password and it accepts it. No errors. I can submit a password of "123" and it works.
The button that the user clicks when the password is changed, is some random custom HTML element called <btn> so you can't even disable it.
I really don't enjoy insulting people, but this... If you're one of the idiots who built this shit show and you're reading this, change your career, because you're incompetent and I don't think you should EVER write code again.7 -
(As a freelancer I was asked to do a couple of tasks on legacy code)
Let’s check this code, how bad can it be?
- all of the following: unreadable mess, no auto linting
- tests: some are there cause there’s not enough automation, others are poorly named
- frontend: somehow a genius made a react component for every variable in the store which only passes the variable to the child (wtf)
- backend: death by best practices
- ci/cd: “we have it but it’s broken”
Let’s fucking goooo 😎
Diagnosis: my therapist is getting rich
Chances to not cry tonight: close to zero
At least they pay well 🤷♂️5 -
So basically, we're all just constantly writing legacy code of the future. RIP programmer kids of today.4
-
Damn I'm pretty hard hitting my limits here
My company asked me if I would like to work some extra hours because otherwise they don't make all the deadlines
But damnit asking 10+ hours a day from a junior web developer is quite a lot
😒 Especially if it's an old legacy project where I have to work on...8 -
Been asked if we can make a few "minor tweaks" to a Visual Basic 6.0 application last worked on in 2013.
I haven't coded in Visual Basic in approximately 20 years, the project can't be opened in Visual Studio 2012 or above and the code I've seen is a dumpster fire.
Please send help.4 -
The feeling when you realize some people on the project are writing legacy code from scratch. Apparently it seems they've never heard of any coding standards, they think clean code and style guidelines are for the weak and single responsibility means one single method is responsible for a bunch of unbelievably diverse things. They are like the Gumbys of the dev realm but it's my brain that hurts every time I have to deal with their code.4
-
I hate hearing "this should be a quick one" from the client. Especially when your code base is a fucking legacy with no documentations, no testing, and a multisite that shares the same classes where functions has some crazy if conditions just to satisfy each site's requirements.2
-
Sometimes my boss wants me to fire a bullet without a gun, they want me to throw the bullet so hard that it feels like it was shot via a gun.
Maintaining a legacy app sucks so bad when you don't even have the full codebase and some douche bag decided to just randomly throw the codebase on the fucking SVN. 😠1 -
Quitting job because of Java and legacy corporate OSGI codebase. Being junior developer I'm just done with no documentation, terrible team support and non existent code review. After 18 months I can't justify staying any longer. Never had luck with Java and I guess some things just stay the same.
Joined only because of Javascript part, just to be thrown into fullstack position. Stayed way longer because of COVID. Good old simple PHP I loved and foolishly left because of money.4 -
The legacy codebase, episode 4584985948:
- outdated comment
- die parentheses space string no-space parentheses
- die AND exit, just to be on the safe side
- won't comment about the screaming boolean
- at least they used triple equals (and yep, that's a font ligature)4 -
Don't you just love it when an official Docker image suddenly switches from one base image to another, and they automatically update all existing tags? Oh you've had it locked to v1.2.3, guess what, v1.2.3 now behaves slightly differently because it's been compiled with OpenSSL 3. Yeah, we updated a legacy version of the software just to recompile it with the latest version of OpenSSL, even though the previous version of OpenSSL is still receiving security fixes.
I don't think it's the image maintainers or Docker's fault though. Docker images are expected to be self-contained, and updating the base image is necessary to get the latest security fixes. They had two options: to keep the old base image which has many outdated and vulnerable libraries, or to update the base image and recompile it with OpenSSL 3.
What really bothers me about the whole thing is that this is the exact fucking problem containers were supposed to solve. But even with all the work that goes into developing and maintaining container images, it still isn't possible to do anything about the fact that the entire Linux ecosystem gives exactly zero fucks about backwards compatibility or the ability to run legacy software.15 -
The legacy codebase, episode 94385948:
How to neatly organize your code in the age pre-docblocks.
Bonus: could this function be renamed to colectomy? Or maybe de-punctuation?
(yep, probably a bad joke with a "typo", sorry)
Bonus 2: seriously? A function for that?13 -
Who here sends their releases through email 🤢🤢, because I do and because it is a closed off system, and because the company we are contracted for lives in 2008. Ah legacy systems....4
-
Have you ever been at at that magical point where you have to decide if it's worth putting the effort in to understand the legacy code, or just delete it all and start again?2
-
In my short career, I've seen projects become legacy before their first release. Hell, I've seen proof-of-concept apps turn into technical debt because to management as long as it works we won't rewrite it.
-
Going through legacy or other developers code which don't have documentation or even comments. Plus the author of the code is not working in same organisation anymore to consult. We have to understand the code like deciphering any ancient language. 😥2
-
Imagine updating a legacy web app and the code is so bad it physically makes you sick every time you look at it. Tables with over 400 columns, . And don't even get me started on the security issues. Apparently writing "Confidential" on the top of the page is enough security. And that's just the tip of the iceberg. People should get licenced before being allowed to code.2
-
The most C++ I know is from 5 weeks of 'learning' it in college. Now I've been handed a legacy C++ project from sometime before 2004 and am expected to figure out how it works, update it to either a newer C++ version, and compile it to NOT a 16 bit dll (like the current version is) to replace the one on our servers.
Ummmm... wish me luck2 -
I just found a 980 line long method in one of our legacy code bases.... And I need to add to it. There are no unit tests and I desperately want to refactor that shit....4
-
Legacy code is like overgrown bangs 😋 It's very hard to decide if you have to let it grow out or trim it.8
-
When you're the only one in the office that codes in C++ and you get this email -- legacy project code here we come.1
-
How to deal with legacy code when you see such thing:
if function() == !!!false
1. Ctrl+A
2. Del
3. rm -rfv /3 -
Started to write a blues song about this depressing legacy code base, but then it turned into an emo song, and now it's very heavy metal.1
-
Legacy tech be like:
"The connection to this site uses TLS 1.0 (an obsolete protocol), RSA (an obsolete key exchange), and AES_128_CBC with HMAC-SHA1 (an obsolete cipher)."2 -
Just got an internship in a big company. Related to web development but they want me to use/maintain legacy jsp, servlet code. Should I take it? There are other departments too but I have been put in this shitty one.4
-
If you think your legacy code is bad - this is what I came across in a system I'm refactoring this morning... and this isn't even the bug I was looking for.1
-
I hate legacy code.
Introduced some new changes to our application and voila! A bug in the legacy system surfaces. It was just hiding in there, waiting to ruin my weekend.2 -
The problem method calls into the...back-end framework!
The back-end framework was built on top of...the older framework!
The older framework was built around...the legacy framework!
The legacy framework was a...piece of shit!
And that's why the site just hangs!2 -
I hate my current work with this piece of bad written legacy $hit. As 2 year old 'junior' without any code review and mentor I feel depressed. I should improve my skills at home and run away from it.
F#$ck you, corpo.3 -
There is a commercially sold ERP solution that has it's DB schema in excel and Other documentations in MS Word. And its not even properly structured, no schema diagrams, last updated for a 4 year old major release 😒😫.
I have to develop a custom module for it and that requires building an ActivexDLL Project in VB fucking 6 😭😭 .
VB6
Unstructured Documentation
Legacy code
Incomplete documentation
FML
Tell me if you want ss in comments.5 -
So I am managing some legacy code and I found quite the gem last week.
The code went something like this :
IF(methodA()&&methodB())
However, methodB returned ! methodA...2 -
No raise. Not like I single handedly rewrote one of our weirdest and most complex legacy code bases or anything... Oh and even so they whined about how long that took that's probably reason they'll cite if I ask about this lack of raise thing.
I mean, technically I got a little more just because the tax rates are different for the new financial year but come on5 -
!Rant
I just found something insanely fascinating for the nuts-and-bolts computer history nerds. It's an article by Eric S. Raymond titled "Things Every Hacker Once Knew." It outlines old general-knowledge shit about the computers of the 60s-90s: ASCII, terminal protocols, bit architectures, etc. which can still be useful for anyone roped into repairing or maintaining arcane or legacy systems.
http://catb.org/esr/faqs/... -
Omfg... Fixed 3 LifeRay 6.1.1 ce security bugs in less than a day. I should be proud, but I am actualy fucking worried I've been with this project for too long if I can already make liferay fixes THAT fast...
Am I becoming a legacy...? Shit5 -
When refactoring legacy code and your colleague committed this a week ago... As punishment we made him listen to "You're too fat to fly" all day long.
-
Oh boy. 2.5k loc of legacy bash code. The task is to give every function its own script since that is literally what this script is. Cha8ned together individual scripts . Fingers crossed its actually just breaking out functions :x
-
Today I stumbled across one the worst UX's for a filter I have ever seen, and yes it was a legacy system.
So there is a screen to show a data grid of all orders in the system with accompanying filters; date, status, free text etc.
And there is also a drop-down that allows users to filter by order number, but the genius that made it figured the best way to allow users to search for an order was to render all possible order numbers inside a single drop-down :| and they are not even ordered!5 -
We have a standalone api acting as a legacy adapter to our actual api, and as you can imagine it's a festering hellpit of hacks and workarounds which is not intended to be maintained after its EOL.
I recently had a dream - more of a nightmare - where our actual api had to support the legacy calls indefinitely.
I told our PO about it as a funny anecdote and he gave me 3 days off. -
I think I may have officially gotten myself fired before I even started a new job. My salaried start date was supposed to be Jan 3 but they hired me to do spot work at my hourly rate until then. My server side PHP skills were never great but they appear to be completely inadequate to the task of patching their undocumented, spaghetti legacy code. I just sent a note basically saying I either need to convert their entire site to something else 3 weeks ahead of the timeframe we planned or to basically outsource my work to another developer to patch this code. Feeling like a total imposter at the moment. I wouldn't hire me.4
-
Have a big legacy project which should be updated to current technologies,
but when it's done, these current technologies are outdated already, so you
Have a big legacy project which should be updated to current technologies, -
It is fascinating to see how my motivation and productivity decreases while working on legacy code.2
-
I really do wish that there are parallel universes. So, there might be a universe where I am not maintaining legacy code.1
-
Ugggh. Has anyone else on here worked with MFC?
I've been updating some legacy software and it's been like wading through a swap that was caused by a malfunctioning trailer park septic system: no map, and mostly shit with the occasional nasty surprise. -
Today, i discovered thus beauty within our legacy code:
// TODO: this is probably the most dirty thing in our product. It needs a model more than anything else
This captions a crappy part of controller code for several years :/ -
We have a an existing legacy project full of sh*t. I am developing now an additional feature. What will you do if the one who will review your code is the one who developed this legacy project in the first place? @@#&#-$
-
Ooh what a nice feeling it is when you come back from a short vacation and everything is in the gutter... My team is divided into the two other teams... (I said divided but I ment everyone got assigned into team X... And I am the only one who was put into team Y)
Besides the whole team fiasco, I think my legacy project decided to role around in the garbage... Because I have no idea where all those bugs came from...
One positive thing is that I won't be working alone on that legacy project anymore, at the start of next week I get help from my new team... Now let's hope they don't suck!1 -
I know that if something looks stupid but it works, it ain't stupid... but this is just plain borderline.
Basically, a cast from int to String to int to String from some legacy code I'm working with7 -
Trying to refactor legacy code can be a real adventure. It's like exploring an ancient ruin, except instead of hidden treasures, you're uncovering cryptic code and dead ends. But the real plot twist comes when you realize there are no unit tests to guide you. It's like trying to navigate a maze blindfolded - you never know when you're going to hit a dead end and end up with a headache! 🤯6
-
New day. New legacy project that needs triage.
The project has existed since before 2000 so it all "works" and has no known business logic bugs. It does however have performance issues which sure I can have a look. It can actually be quite fun and rewarding to optimize performance.
This is a titanic dotnet framework leviathan consisting of over 12,000 cs files using razorpages, entity framework, and... nhibernate? I have my gripes with both EF and NH but they are both fine if used correctly, like any other tool. I've never seen them used together however.
As It Turns Out™, NH was implemented first and at a time when NH did not support async operations. It made sense if you look it up and it's meant to delegate commands via a separate layer, but different story.
Then for... reasons... EF came in and gradually took over.
Because of the way this is all set up, everything will faceplant if you try doing anything async, even if it has nothing to do with calling the db. Any attempt in making this work leads you down a slippery slope of having to rewrite the entire thing, which is out of the question in terms of their budget and expectations.
Sometimes it's a detriment when it works in spite of its issues.1 -
Working on a big project with lots of legacy code and terrible code. Full of jewels like this:
$('.form-item-to input').parent().removeClass('isOpen');
Man... .form-item-to IS the immediate, direct and only parent of the only input child!!! -
The moment when your code is like,
Yeah I'm working, not throwing errors, but not doing anything closely related to the things I should do.
Fuck this construct, I'll recode the whole thing and stop using any two-year old legacy code, for this project -
Client: "I've started as a software developer too" *chuckling* "so I understand EXACTLY what you say... But could you just explain me what do you mean with 'legacy code' ?"
Me: :|2 -
You know I really hate uncommented legacy code especially when it was written by the PM himself years before and will never admit fault with this God awful unholy hell spawn
-
Just started a new job as a software developer, even though I basically applied as an embedded software developer. I knew from the interview there was gonna be alot of legacy / high level stuff and they were pushing me away from embedded with the promise I could do it 'later on'.
Finally started and it turns out there's a shit tonne of legacy Python code for their non-existent test framework that's basically tied directly into a Qt GUI app and I'm doing shit that nobody else wants to do. Can't see myself wanting to do this for anywhere more than 2-3 months. Should I just bail now? Seems a bit dodgy if I leave having only worked there for a week? Job actually pays really well though.
Plan was to take an extended vacation around July/August, so quitting this early and then telling another employer later on that I need to bail for summer seems wrong also, not to mention COVID sucks and is making everything hell now.12 -
My company never used unit tests. And i would love to educate but i do not know how to unit test properly. I always en up with: if i want to properly test all ins and outs of this class's + operator. I need to add checks for positive number, negative numbers, nan, infinites, nulls etc. Etc. It needs so many tests for something so stupidly simple, that i don't see a way to motivate people to use it.
Am i missing something? Is there a guideline for "ok coverage"? Is testing just that much work and is that why nobody cares until it is too late?
I have been reading a book about working with legacy code. But still i got no answers. Halp!7 -
a question for y'all:
just out of interest I would like to know:
are you *mainly* working on legacy stuff that is - without a question - just too old? everyone in your corp knows it needs rework but "EfFoRt JuSt ToO hiGh"? Where at the same time, most of dev time goes into maintenance and bug fixes instead of feature implementation.
If yes, do you fear that you're losing relevance on the market by not keeping up to date? What are your feelings about that situation?
did you maybe even quit a job in the past because of such situations?
---
Why do I want to know that?
- Had some beer
- As a freelance dude I often see battlefields right out of hell. I csn easily go, but the dudes working 9 to 5 on that??? Hoe can you oO22 -
After years of back-end development there's a thing which keeps bugging me: how little "interactive" the development process can be.
When I did front-end I took for granted that the application I was developing was easy to run so I could immediately test any little change I do on code but on back-end this is rare to see: you develop with tons of external dependencies (authentications, VPNs, databases...) so getting your application up and running can be an huge hassle and testing API controllers can be slow and frustrating since I have to continuously juggle multiple development environments, manually regenerate tokens, do guesswork to find which parameters you have to use for your API request, maintain my Postman/Insomnia HTTP calls collection to prevent it from turning into an unusable spaghetti mess... lots of repetitive tasks which kills my focus and makes me struggle in getting into a decent flow.
Automated testing has lot of potential in helping with that but its hard to introduce when you're rewriting a legacy sistem and you're already exceeded your budget.
I wonder if I'll keep doing back-end once I'm done with this project.9 -
Patching a legacy project: all logic inside an 8000-line file called class.cms.php, on frontend, one js file with about the same file size...
-
Meh. FFS. Thats how this shit starts.
Get a call to say 2018 Bank Holidays not showing on legacy web calendar.
/me looks for bank holiday code in PHP file ..... no dice.
/me finds a dBase table that holds all Bank Holiday info. Not ideal, but I can work with that.
Enter all Bank Holidaya into dBase. Sit back, relax, wait for page to reload to show me Banks .... no dice.
Huh??
Read code more closely ......
Included file (inline, half way through PROCEDURAL FILE FFS) and notice that the linked file has all Banks hand formatted into Calendar events, and minified.
If I ever meet the old dev in the street, so help me god. 🤬2 -
Another tale of the legacy app, so I'm redoing the user roles using the cancancan gem.
Hop into a meeting to go over why I'm re-doing the authorisation, currently, the app is using the rails-authorization-plugin, yes from Rails 2.0.
me: *explains why this is the way to do it*
other dev: "Can we just fix the custom code we have added in that plugin?"
me: "Well given that it's a massively out of date plugin and we have a ton of deprecations, probably not"
other dev: "so let's try and fix it"
Christ, why are we still clinging onto 10+-year-old plugins if were going to keep getting errors when we upgrade?27 -
How can code refactor be so stressfull that even doin' it on YOUR OWN CODE looks like taking a slow walk over broken glass? More than never: GOD BLESS THOSE WHO DAILY DEAL WITH LEGACY CODE
-
13.5 million steps on my little Fitbit Zip named Dino. Long walk last weekend and lost him. Backtracked a mile and found him. So happy. But car had run him over and crushed Dino. So sad.
Carefully operated on him and although his screen (face) was smashed he had one more synch (breath) in him with me holding his little metal prongs.
Gave him a little funeral. He will forever have a cherished spot in my sock drawer.
I went to the Fitbit store and Sally his little sister was born to carry on his legacy. -
I've got an enquiry for all you devranters. Is anybody here using WPF and XAML in their everyday life at work? If so, is it for legacy or new projects?
I'm interested.3 -
Does anyone watch the movie The Mack (1973)?
Today I am working with some legacy code written by a shitty developer who isn't with us anymore. Every time I make a change the code screams at me with problems.
Every error makes me feel like saying this quote from Goldie the pimp...
"List to me and listen good. I don't give a shit what happened to you!.......get back out there and get me my money!" -
One of my greatest personal challenges has always been to try and balance "good enough asap" and "but I know how to do this better if I spend a few more days on it". I like to think I've gotten better at it; Leaving things be if they are to spec and keeping my implementations consistent with existing work even if I disagree with it being ideal.
Which makes this new project we're taking over my trial of fire. The combination of the codebase - a Vue app from a previous rant where Vue is mostly used as a callback function to alter the dom using the document api in plain js - and the expectation for us to implement new features and minor tweaks to a user base of literally 4 people is like a charicature of the type of work I struggle with.
Even writing all this I'm evaluating if I'd be able to remake it all from scratch fast enough to sneak it in without anyone noticing.
It's an uh, "opportunity" for me to learn how to handle these situations, I suppose. Have mercy.1 -
Just read Uncle Bobs book series:
Working with Legacy Code,
Clean Coder,
Clean Code,
Clean Architecture
Read it in this exact order and each book was better than the one before.
What did you think of them and what other books do you recommend reading?
(Coding books of course)3 -
I so hate working with legacy db code! I wish I could migrate all to entity framework but the migration is a pain in the ass and would take hours which the client wouldn't like.1
-
My biggest ongoing sin is that I neglect commenting while maintaining a legacy system. No one else has commented anything so why should I? Well I should. I comfort my self with the fact that this legacy system will be replaced with a shiny new well commented one in the near future, which im also working on.
-
Project Lead in the morning: This one story needs to be finished till 2pm for the QA department.
Me: No problem, everything is finished and there is only one test case open. It should be finished in no time.
Also me: Spends 7 hours of intensive lagacy code debugging to find out why this shit isn't working sometimes. Try to fix it, broke some other things. Retested all cases and found 3 other minor bugs. End of the day, story is still not finished.
Now: Project Lead is mad, QA guy is mad, I am mad.
Conclusion: I hate debugging legacy code and I never again trust the last open test case!!2 -
People always say thet you should not quit your job before you have the next job lined up, but what if you plan to do freelance? This is my dilemma.
A bit of context (rant).
My current job is my first official job. Small company, VERY HIGH staff turnover rate. I have been here for 2 and a half years. My commute on a good day is < 20 mins, and money is relatively good.
During the last 6 months, all devs above me resigned, which lead to the system maintenance being passed on to the few devs left. Our biggest system is a legacy system (Windows CE), and new clients are actively signed up and new features requested. The codebase is not even worthy of being called spaghetti, changes break every client, I need to wash my hands every couple of minutes. Seriously, I would rather maintain obfuscated code. It is like a bunch of highschoolers wrote the system, though I think they would have done a better job.
Management is nice and understanding, but the state of the codebase is killing the spirits.
I fill my nights and weekends moonlighting to keep my mind off of the 'daymares' at work. I have never been a team player, and thrive on my own. I have been thinking quiting and going full freelance/contract the last couple of months. Should things not work out, I can always go job hunting (see issue in par. 1)2 -
"Delete all code!" That should be the mantra!
Was watching some stuff from destroyallsoftware.com. Not entirely convinced. So I should cook up my own shit.
So here is how the argument goes:
There's quite some negativity in the term "legacy" software. Partly it may be the envy to software that runs on actual machines and is not that phantasm, that perfect first lines on a greenfield project until it gets messed up as it has to put up with all the real world messiness. But the negativity it deserves is actually for the code that we cannot get rid of. This ugly class or function that soaked all the complexity and functionality so it defies any positive change. And always when it appears on your screen, it irks you, enrages you, makes you punch the screen, because you can almost feel the distaste physically. - *That* is the definition of "legacy" in its true negativity. No software should be like that. On the contrary. Every line should be replaceable, dispensable, disposable. At the verge to deletable. Because you know: the best code is no code.
This is where my hatred of code could get productive: Delete all the wretched, loathsome stuff and replace it, with something that just sucks less and can be thrown away any time. Don't expect beauty or perfect design. It'll never finish.3 -
Current deploy process on the legacy project I'm on right now: ssh to server, check out branch with new feature, test on live, if it works then merge to master and check out master.
Oh... Oh no... -
I'm working on an ecommerce site but it's attached to an old legacy system that the company used for logistics and point of sale
I just realized the previous lead dev structured it so all of the tables used in the new site are just the tables from the legacy system except prefixed by "new_"
Fuck this redundancy makes me angry -
I don't think I'll ever understand how someone can complain about a legacy code base in one breath, and then justify a bad design with "that's how the system does it everywhere else" in the next.1
-
When you feel that only you and maybe one other guy from the team care about product and do effort to actually refactor legacy spaghetti code while others just patch it up or even build changes on top of legacy spaghetti!2
-
Is there a definition for the feeling of fulfillment and joy that occurs, when reading through a rewrite or something overly complicated and messy legacy into a neat and tidy set of classes?1
-
Having to work with a legacy system is often hard enough, adding New features content when it's a ancient access system is worse. Secretly started remaking the entire CRM system in .net instead of stabbing myself with a plastic fork to get out of the project.1
-
Did it ever happen to you that you were needed to map a mental and overly complex for no reason db schema to a simple json, and you hate yourself more every key you press because rewriting it more efficiently and simply is never an option?
How do you cope with managers and legacy code?
If it works does not necessarily mean that we should keep it, jesus christ.2 -
Inherited a legacy system from a developer and it's a freaking nightmare! The majority of the system uses timestamps and not record ID's to handle data. When the clocks change (daylight savings) none of the records can be seen in the system because the freaking timestamps don't match up!! Arrghh this is going to take me ages to fix!!2
-
Alright, I need an advice.
I have legacy Angular client. It’s impossible to refactor it. The only real option is to rewrite everything from scratch, however, while the team does it, it needs to be accessible to our clients.
The approach I am thinking of is making micro-frontends out of original client and rewriting each of them (in React, Vue, don’t know yet.)
Anyone has experience with that? I would appreciate any advice or suggestion.6 -
You know it will be a fucking glorious day when you open up that legacy project from 3 years ago.
Calling those NPM package dependencies "outdated" is an understatement...
3 years equals to roughly 1 million new JS hipster frameworks.1 -
It’s another rubber duck story. I had trouble working with company’s legacy framework and had the senior developer (who is busy AF and practically lives at his work desk) come over to help me out like 10 times a day and 98% of the times I figured the problem out while explaining it to him. WTF can’t I pay more attention??
-
This one makes me legitimately angry:
https://github.com/fzaninotto/...
This library is used by thousands of devs on a daily base while the code-base is an unchangeable legacy monster.
I could vomit, because I'm so happy!
Jeez! -
So i recently inherited some legacy code.
Its actually not to bad. Just a few thousand locs which are mostly stretched across a handfull of functions lmao (800lines per function yay).
So the main thing i wana ask. Does someone here know of good techniques to gradually reimplement all of this.
Since im not gonna apply bandaids to this mess anymore than is needed.
Unfortunately this is a very important system and it only runs on production xD.
Idealy i would somehow be able to duplicate the tcp traffic to the reimplementation but that doesnt seem feasible.
Also what the individual modules classes and so on do wa snever documented and no one even knows how or why certain things even exist.
If anyone has any idea of what i can do. Apart from hoping to god i dont miss any weird quirky edge cases. Do let me know7 -
Legacy app using jQuery to attach event listeners to table rows just to change the background color. That's gross, even for legacy.
-
Dreading the end of this bank holiday weekend, tomorrow I must wake up and return to working with legacy code.
-
Two years ago we took over this project which has been a nightmare to maintain. It's a set of netcore 2.1 webapps running on an on-prem windows machine. Everyone who has worked on it so far has quit, leading to two episodes of it being passed on with near zero handover.
Its function is fairly simple, so naturally we have been nagging to redo it and cloudlift it.
I was finally given one week to see how far I'd get, and had a poc running in Azure after one day; 4 apps in clean net6, SSO, and managed identities. The only thing lacking was setting up the authentication for third parties.
And... they still don't want "something new" when the old one works. Back to IIS and debugging windows event logs.1 -
Could people kindly stop trying to expand upon the native DI in dotnet!
This is my third project where "you don't just" add new services because you have to carefully conform to hundreds of lines of boilerplate while "remembering to" whatever it demands because someone spent weeks hacking the builtin functionality in order to make it easier and shorten the startup file.
I'm trying to swap out one of the implementations that are used by one other class via DI and so far I've changed 12 files. It's literally more work to do the thing DI is designed to solve compared to not using DI because they "improved" upon it.
Sure, it might be that I'm not using your thing correctly, but that's not much better, is it. Everyone already knows how to use dotnet's DI. Literally noone knows how to use your improved version aside from yourself.
I liked how one of the team members put it after one of the former devs apologetically explained how this was some long-gone dev's baby: The only thing this code does for us is that it needs a diaper change every time we deal with it.2 -
Fuck smb1, smb2, lanmanworkstation, mrxsmb10, mrxsmb20, Windows 10 and samba 4 on legacy mode
That's all :)1 -
I'm in need of advice. I reckon this is no stack overflow but that's probably for the best as I wouldn't feel as comfortable posting there as I am doing it here. So, back to the question: I'm currently working with legacy code, written in .NET 2.0. This code is responsible for calling upon PEC services in order to finally create personal smart cards. I was tasked with the job of creating a repository system that would allow the program to call on the old legacy services or the new ones without any distinction. We are talking about SOAP services in both cases. The issues is: the new service definition is comprised of soap policies. This wouldn't be a problem per se, with more modern version of the framework, but with .NET 2.0? Yes, it is. It doesn't support policies and signing the body with a certificate right out of the box. How can I manage this? I feel like the only way would be letting the proxy class do its thing up until the very last moment: intercept the SOAP request before its sent and modify it according to the specifications. But I reckon this is very bad practice. Is there any other way out of this?
Thanks for anyone that would like to help. 🙂6 -
Just updated one of our age old legacy projects. Customer wanted to discontinue the software for two years...
Codebase was quite solid but I am so sick of it - I keep bolting on bugfixes until it crashes and burns - and I will be happy. -
I was originally employed as a Full Stack Python Developer. But this year so far, I only did operations. Now I also got a project to host the legacy Python 2.7 Plone/Zope applications of another company entirely on our infrastructure. This means, that I'll do hardly anything else from now on, i.e. no programming. It was already decided that we'll do the project, and it landed on my desk when everything was fixed.
So I'll quit my job to build my own company with some friends, but I can only leave after a two month notice period. So I have to do the project anyway, for which I feel absolutely zero motivation.
I wanted to become a good programmer, but in my last two jobs I just was a mediocre Ops guy. This is because most other programmers would make even worse Ops guys then me.7 -
fuck VBA, fuck retard business users, who think it's proper to use it in 2019....
fuck them all, with their "save money" shit, then expect old shit to work "like at google".... let's STOP USING SHITTY LEGACY TECH, JUST BECAUSE THE LEADERS ARE TOO INCOMPETENT AND NEVER INVOLVE TECHNICAL PEOPLE FOR SELECTING SOFTWARES / SOLUTIONS....
Go back to the 80s and give'em a terminal to work... I'd like to see those fuckasses in pain....3 -
Found bug in legacy code with comment "4 days to release workaround, works predictably".
Added "No, it doesn't!" and committed to main branch before I start reworking the entire spaghetti mess of a codebase -
Got to do some security audit of legacy ABAP code for SAP systems. Do people still use it? If yes, why.3
-
Writing a test helper that handles all the fuckery with DB connections and transactions when the legacy under test uses multiple DB connections is so 👌👌👌👌👌👌👌👌👌👌👌👌👌👌
I can write tests for code that was untestable before 💦💦💦
*nerd-gasms*2 -
Finally dropped our old useless in-house legacy content editor (built by another team) today. Going through the database and ripping out all the shit that we had to keep for legacy support is the most liberating feeling I've had in weeks!1
-
My code check-in today contains comments like "Last resort methods, never use except explicitly ordered by lead".
Gotta love legacy code hacks... -
My first dev job was as an intern. Hired for my skills in Java and C++, had to maintain a big legacy software in VB.NET. I felt kinda lost and disappointed ...
-
At my company they have this legacy system that's been around for a good 10 years now. The company told me they plan to break away from the legacy system, and this was 2 years ago. The reason that nothing has changed is because anyone that knows the legacy system have already left, and there's one service that relies on it. That team absolutely refuses to break away from it so everyone is stuck where they are. Given the attitude of the company employees, I'm pretty sure this legacy system will be around for another 10 years.
-
Legacy code in java :
boolean recursiveMethod(args){
Int i= 0;
Boolean doublon = false;
For(--whatever the loop--){
If(condition1 && condition2){
If(i++ > 0){
doublon=true;
Return doublon;
}
}
}
[...]
}5 -
Joined a new team at work hoping to learn something new. Was told by the team lead that they will be starting development on a new project that I was interested in.
Guess what it was all a fucking lie. I'm assigned a task to create documentation for some legacy java shitcode without any fucking comments.
Fine I get it, they say it's required going down the road of the new project as it will work alongside the old application. But the code is so fucking bad. For starters
-The db host and credentials are hard-coded in a million places
-it stores user credentials in plain text
-its creating files in the fucking filesystem to store things instead of storing it in the db
-each functions ranges from 100 to 8000 lines of code
Who even codes like this 🤯
And I can't fix these issues. All I need to do is document every function and class and package. Fine. Fuck this shit -
Who knew FE development could be so much fun (working on FE tasks after months of shitty legacy BE code).
-
So I've had a few rants now about this dumbass legacy Apache Wicket project I'm on.... Latest was that the guy who kind of knew what was going on but was impossible to communicate with is was leaving which meant I'd be inheriting this shit show. I was on leave his last week and he had the task of onboard the new senior.
I get here this morning and meet this guy. Seems a nice enough champ, well spoken (praise be.) First thing the man says to me is that this code is a mess and he doesn't really understand the IP... Yea me too, buddy, me too2 -
When they introduce you to an older project and before opening it up they say “well we got much better since then and do much better coding now..”
This is the moment when you know you’re f*cked -
Rails views are not meant to have a ton of logic, local variables and 3 or 4 levels of if/else nesting. That's what presenters, view models and assorted other patterns are for. Or helpers, if you really have to.
Yes, this codebase is so packed with legacy it still runs Rails 2.3, and there's no plans to upgrade it, but that's no excuse to keep writing code like it's 2008. MVC does not mean all code must fit in a model, a view or a controller, ffs.1 -
This article about the types of legacy code bases you will have to deal with just made my day!
Not only do I have every one it describes but somehow it even made me laugh at thought of each of the std riddled petri dishes of code that I reluctantly maintain... My "Happy Place" is a folder dedicated to reliquary projects I like to look at when I feel sad to lift my spirits and restore hope that one day things will be better.
Do you have any definitions to add or know where to find more? I'm hooked.
Link: https://medium.com/@dylanbeattie/...
Excerpt:
The Reliquary
The reliquary is that one repository full of really good ideas. Clean code. Brilliant algorithms. The OpenID implementation that you optimised until it shone. Classes so beautifully designed and perfectly documented that they’d make a senior architect weep.
You remember the big rewrite? The project that was going to fix everything, only you never worked out how to actually launch the thing, or get any revenue from it? The reliquary is where you’ve preserved it, pickled in revision control like a fabulous museum specimen. A treasury of good code and good ideas; maybe even an entire codebase that was “a couple of weeks” away from shipping before somebody finally looked at the number of critical features the team had somehow forgotten to include and discovered — to everybody’s surprise — that validated XHTML, normalised data models and 95% test coverage are not actually features any of your end users cared about.
Like Buran or the Spruce Goose, the surviving artefacts stand as a testament to the quality of your engineering… and a poignant reminder of just how much fun engineers can have building high-quality stuff that nobody actually wants to use. -
Reworking old java apps. Holy shit im gratefull i can use spring boot.
But this code is handsdown awfull. Every file contains more ifs than other words. upto 6 layers deep. Thank god its at least properly commented.
But seriously how did this shit ever pass any QA. All legacy apps around here are a massive pile of if statements.1 -
Nothing can take the joy out of programming more, than having to redo and implement new features in uncommented legacy code, that takes 2x as long to understand than to actually code.
- Gonna be a long ass week. -
Ok so slowly learning C also figuring out how to get a few Legacy Opengl code examples to compile. (yeah yeah it's old yada yada) maybe I should try finding unconventional ways to help aid with my learning.
-
There's nothing worst than legacy code without documentation. That means I have to spend more time understanding the legacy code than actually coding.4
-
foreach(var strTable in strTableNames)
{
DjingisKhanWantsMyDataEverywhere()
}
...I am not fond of legacy code -
Code comment in legacy codebase that says "Mr.Foo Bar doesnt understand why this is required but removing it may result in spontaneous combustion"