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

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 -
Wife discovered MS Paint on her laptop.
She asked me how long the ink would last and how to recharge it when it's finished.
I love her anyway.11 -
Found this 2 years old beauty today:
public boolean hasPermission(User user, Permission permission){
// TODO
return true;
}
The author quit last year.7 -
Reading through legacy code, only to discover the comment:
/*
* to the poor guy who has to fix this
* ...
* I'm sorry
*/3 -
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
RIP20 -
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 -
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 -
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:6 -
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 -
Fucking hell, the devs before write a query that pulls 30ish column for a report. When I break it down MANUALLY, since it’s a spaghetti on top of another spaghetti, you only need 6. Fuck you, did you dropped your head when you was a kid? Fuck sake, and every query is written in stored procedure even though you’re using an entity libraries19
-
Today I inserted a single row into a table which triggered four triggers which inserted 5 rows each to different tables triggering 9 triggers inserting 3 rows which triggered more triggers... Nothing about this is ok.6
-
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!8 -
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
-
Just learned that my previous workplace hired someone to take over the frontend which was my first big javascript project, and now I have an odd fear for my life.3
-
Found this in a legacy codebase at work. Can't imagine what the coder was thinking. "Just in case"?6
-
I really feel sad for the person that is going to manage my code in future :(
Poor guy will have nightmare about this6 -
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 -
The upside of having to go through code you wrote years ago (while mumbling WTFs) is that you realize how far you've come in those years.1
-
I'm working on the project with the weirdest combination of technologies ever:
Vue.js on the frontend, FORTRAN 77 on the backend. :D
(Plus a thin Spring MVC layer that converts the f77 routines into REST API)6 -
"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.6 -
"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 -
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 -
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 -
Preface: My company took over another company. A week ago I inherited their IT.
"IT" !!!! Are you fucking kidding me?!
Their server stood at an ex employees homeoffice. So I drove to her and she had 0 idea about IT. Server was just "Running". I tore that fuck down and saw an aweful lot of Hentai in all home folders.
WTF?!
Not enough, their crm was a makroinfested access table. Shit was protected so I couldn't even edit the makros. The retarded fucktards hardcoded paths to serverside folder \\fuck\you\hard\cavetroll
Just so that server will never see the light of my domain! Damn you? Mothership of sisterfucking dickgirls!11 -
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 -
Found this gem in some old piece of code:
public static void printStackTrace(Exception e){
e.printStackTrace();
}3 -
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 💩?23 -
One of the biggest reality checks you will run into when starting your first dev related job - and which they don't teach you about in school - is that a lot of the time will be spent working with other people's code, and rewriting it into "your own" is rarely an option.
You might be super into making things, but not everyone manages to maintain that same spark while taking over a 15 year old project with fundamental issues that have to be triaged "for now" because you need a hotfix on this other specific thing out in prod before lunch.
There are no gods now. They left the company years ago and nobody knows why they used the windows registry as a user repo.3 -
Story: Password hashing and UTF-8
Context: PHP 5.6, 270kloc 15+ years legacy project. ~3 years ago. tl;dr at bottom.
Password hashing & verification was done with an obsolete way of hashing passwords. I was given the task to update our password handler to from now on generate passwords with PHP's good built-in password hashing function.
It was decided that old passwords still needed to work, instead of prompting users to set a new password. The old password verification still had to function in conjunction with the new.
The previous password handler was split into multiple classes, due to (I assume) poor structuring and shoehorning in an object oriented approach. Furthermore, it abused global variables.
A new password handler had to be created.
I implemented the new password verification and creation methods (which now used PHP internal password functions), and it worked perfectly. Then to get the old password verification to work.
I removed all obsolete methods from the old handler, and was left with a hashing function which took in a password, salt, and a secret key. I copied this code into the new handler.
It failed. It returned "Password does not match" for old passwords. I was unsure what had happened here. I did all sorts of shotgun debugging. I ended up with two versions of the login page next to each other, which used the old and new code respectively. I started modifying the original code, extracting variables, logging, you name it. I ended up with exactly the same snippets of code in both password handlers, and yet it failed.
The culprit? The character encoding.
Because this project was over a decade old, the .php-file had the encoding 'windows-1252'. When I created the new password handler, my IDE set the file encoding to 'UTF-8'. Then when I copied the secret, my IDE converted the string to 'UTF-8', effectively changing the value of the secret and causing any password verifications to fail. The solution was to manually create a string using the byte values in the old secret.
<rant>
It is these extreme, obscene, scenarios which makes working with legacy projects a living hell. In this scenario, it was my IDE at fault for changing the character encoding.
But my IDE is not the root problem. No, I blame it on the lack of maintenance from previous developers. Not keeping the codebase up to standard causes problems like this in the long run.
</rant>
tl;dr: copied hash secret to a file with another encoding. IDE changed the byte values for those characters, causing password verification to fail. fml.2 -
While trying to learn a legacy codebase, I realize one library supports almost everything. I decide to look it up.
Last updated: 19962 -
Dev manager: Php 8 is around the corner and i'd like to move the project to it
Dev: this would be a huge change I don't think you understand what you're asking...
Manager: Yes I understand, we'll plan 2-3weeks for the migration
Dev: the app is under symfony2.4, what you're asking is completly off the mark
Manager: look we'll plan it and we'll see don't be pessimist
Dev: ok whatever
I left the company, good luck to my fellow dev5 -
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
-
VB3.
In my last rant I mentioned I used to convert VB3 code to .Net. Before that, I used to work on the VB3 product itself. This software emulated something from the real world, and as such complied with a bunch of regulations that changed on a regular basis, and always had additions and removals that were to be done on a strict schedule (e.g. "we're adding a new product next month, so we have to be able to sell it by the first of the month"). As such, it was a huge sprawling mess.
One day, I was given a task to change some feature slightly. The task was simple enough and really only required adding one line of code. I added that line and clicked "Run".
Error: Too Much Code
What? What do you mean too much code? I asked a colleague for help. "Oh, don't worry, it happens when a function is too long. Just remove one or two of the comments and try again." The comments were, naturally, old deleted code that was quite meaningless so I had no qualms about removing some. It worked, and I went on with my life.
This started happening on a regular basis on our larger functions. But there were always comments to remove so it wasn't a big issue.
One day, though, it happened on a five-line function. This was puzzling - the error had always happened when a function was too big but this one clearly wasn't. What could the error mean? I went to the same colleague.
Apparently, there's also a limit to how big the entire code base can be. "Just find a function that isn't used any more and delete it." And so I did. There were many such functions, responsible for calculating things which no longer existed so they were never called. For months, I'd find functions and remove them. Until there weren't any more. I checked every function and subroutine in our codebase, and they were all used; I checked every possible code path and they were all needed.
What do I do now, I asked? The colleague, who was an expert on VB3 but worked on another project, came and take a look.
"Look at all these small functions you made! No wonder you're running out of space!" Apparently each function created a lot of overhead in the compiled executable. The solution was clear. Combine small functions into large monolithic ones, possibly passing flags in them to do completely unrelated things. Oh, and don't comment on the different parts because we have no room for comments in our code base.
Ah, the good old days.5 -
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 -
I really, really, fucking god damn it REALLY need to move a legacy project from the grave yard server and get it in git, and then build a dev environment for it, so I can stop making incredibly volatile changes direct to PROD (backend, frontend and DB all at once and then test it while it’s live and being used, but fuck me if I can be bothered digging through a 10GB code base and attempting to make it work in a multi-environment setup when it’s going to be a long trip down the error logs until it works again 😱🔫2
-
"Hi, can you help me? I accidentially removed some coding in this method. See version 23, line 2150. Is there a way to bring it back?"
...wait....method line two THOUSAND one hundred and fifty?..13 -
Fun drinking game: work on a legacy system for a few hours. Every time you say "what the fuck?" equals 1 shot.5
-
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 -
While messing around with the Windows WM_NCPAINT message, I forced the WindowProc to return without calling DefWindowProc.
This resulted in interesting effects when pressing mouse buttons down on the right hand side of the title bar. This is on Windows 10.
Bottom part of the image is when I clicked on things and is Windows 9x-XP style. Top part of the image is when the window was deactivated and is Vista/Windows 7 style. Once they appear, the buttons behave as they did (visually - e.g. highlighting) as they did on those versions of Windows.
Just found it funny to see older bits of the Windows UI still hanging around behind the scenes!3 -
My manager thinks I am Superman! and he is so confident that can do any shit he wants me to do.
Yesterday he asked me to merge an ancient code hotfix (literally ancient) with latest branch of changes.
1. Hotfix is really old, most of the things are hardcoded, very specific to a stone age client.
2. Code documentation does not exist.
3. Developers of that code are probably dead.
4. Many Libraries which code uses are deprecated.
5. It's a legacy code, so no one has fucking idea what a particular clumsy block of code do, or what will happen if you remove it.
'if it runs don't touch it' policy by management.
Despite all this shit I successfully merged the the hotfix, refactored outdated code so as to run the application.
Showed this to my manager in full swag!
He was surprised at first, and asked me to show the code changes.
'Code review' was done by comparing files 😅
Manager: Dude, you have changed these lines, why? Explain.😧
Me: those lines won't work with new build, with new libs.☺️
Manager: then why can't you do old build with new changes?🙄
Me: umm.. wait... what???🤔
Manager: the code was working previously, it must be working even today without these changes.😡
Me: it was not working hence I made changes and now it's working fine see! ☺️
Manager: you have removed this, this and this!!! 😡
Me: but I also added that, that and that!😔
Manager: "don't touch it' if it works!"😡
Me: ... Idk what to say!
(In the back of my mind: "Don't touch it even it doesn't works!")😌9 -
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 -
Most of our university courses are stuck in the early 2000. Feels like it's mostly due to lazy professors who just use the same material year after year.
What do you think?
It feels like I'm not learning anything useful anymore. Should get out of here ASAP.10 -
Recently for a project I needed to read/write ID3 tags from MP3 files. And after a long search, I found this bloated, monolithic but quite stable library, "getID3".
So, I was looking through the code-base and I found this. This guy literally storing the key value based data embedded as comments within the class file. Then wrote a method to parse the data and even used caching to ensure maximum speed! And such usage is repeated all over the code-base.
So, this is what people used do before arrays were invented :314 -
That feeling when the business wants you to allow massive chunks of data to simply be missing or not required for "grandfathered" accounts, but required for all new accounts.
Our company handles tens of thousands of accounts and at some point in the past during a major upgrade, it was decided that everyone prior to the upgrade just didn't need to fill in the new data.
Now we are doing another major upgrade that is somewhat near completion and we are only just now being told that we have to magically allow a large set of our accounts to NOT require all of this new required data. The circumstances are clear as mud. If the user changes something in their grandfathered account or adds something new, from that point on that piece of data is now required.
But everything else that isn't changed or added can still be blank...
But every new account has to have all the data required...
WHY?!2 -
Yay, I have to rewrite + design a 15-20 year old website 🎉
Originally written in, God knows what version of php, HTML and JS by a Java dev, and patched every other year when something broke or a new feature was needed, every time by someone new...
Some years ago the system was moved from a Windows host to Ubuntu and that was a nightmare in its own, because of all the hard-coded paths...
Welp, at least some fucker found another fucker who is willing to create a new design for the site, so that's off my plate...5 -
My worst devExperience since there are dev evperiences for me, was when I had to rewrite a pretty important tool to the new onlineshop we created.
See https://devrant.com/rants/1016596/...
My best devExperience in 2017 was going live with one of our biggest web projects I had to develop all alone and hearing only great feedback. My boss told me there were more than 30'000 visitors one day after going live.
It was and still is quite satisfying. 😎1 -
[...] 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 -
Legacy code written under the pressure oft a deadline by people not knowing the capabilities of the framework they use.
I am doomed...2 -
So I setup a nice csv file for the customer to fill in the shop items for their webshop, you know? with a nice layout like
name - language - description etc.
(just temporary, because the legacy website is going under a ((sadly frontend only)) rework, so it now also has to display different 'kind' of products... and because the new cms isn't done yet they
have to provide the data with other means)
my thoughts were to create a little import script to write the file into the database.... keep in mind of the relations... etc...
guess what? TWO MONTHS later, I get a file with a custom layout, empty cells, sometimes with actual data, sometimes (in red / green text color) notes for me
I mean WHY.... WHY DO YOU MAKE MY LIVE HARDER???
So now I have to put data in 6 columns and 411 rows in the database BY HAND...
oh and did I mention they also have relations? yeah... I also have to do that by hand now...3 -
Just found an interface in an app of my company that uses the best of both worlds: csv AND xml 🤦🏻♂️
<Name>John;<Lastname>Doe;
🤣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 -
First rant (well, first on devRant anyway)! So, I'm working on a project to refactor a decade old codebase so that all references to ip addresses are in config. It sucks. But I did find an ascii art fish in an old cron script, so that's something.9
-
There I was, foolishly thinking that I had escaped legacy land for good.
Today I ventured deep into its realms again to solve a bug in our old system. It's a maze, with tons of branches, frontend and backend code entangled in each other (think: echoing a call to a JS function from the PHP controller, and much much more), and classes with functions that often span 500+ lines.
I have lost my way and just lit a campfire. Hopefully I will find my way out by daylight.2 -
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 -
Today I met the spaghetti man who wrote the code I work with.
Guess who's sharpening his knife (and d*ck)8 -
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 ♥ -
Overwhelmed by a shitty codebase? Use the boy scout rule and leave the code you're editing a little better than you found it.
Worked wonders for me when I realized I could spend literal months refactoring and desperately needed a systematic approach.
Little by little that rotting house of cards will turn into something okay. It's a nice feeling looking back after a couple of months and see what you've done to make things better.
Also, make sure to remember the cost of wrestling with hurried legacy solutions in your estimates as well. Just adjust the level of bluntness depending on your work environment: admitting that things can/need to be improved can be unpleasant for some to hear even though it's true.5 -
That fealing when someone that picked from the graves an old project that you've started when you were just a noob developer... and then you look at the code... and then the shame.2
-
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'm a contractor at a product company and today I had the pleasure of working with some jQuery.
A function needed to be called before another function, hard work right?
So I moved the call to the function 3 rows higher, checked it in, set the task as ready for test and started to look for other tasks.
Within a couple of minutes I get a direct message from another dev, let's call him Steve.
Steve wanted me to set the task to ready for code review instead of test, so I did just that and tried to move on.
Some minute or two later Steve contacts me again:
"It would be great if you'd move the comment so it'd be over the call to the function"
Well, I'm not one of those who likes comments... If you need a comment, it's probably not good/readable code. In some cases sure, it might be a complex block coming up.
Sorry, lost my train of thought.
I answered Steve : "Are you sure, I could just remove it instead?"
(for readability S will be Steve and M will be me)
S: Well, it's always good to have comments
M: In this case I think it will be alright.
S: But it's nice to see what the function is doing.
M: I'll do it if you really want me to.
S: It's better to have the comment than to not have it and needing it.
M: Okay then
The name of the function : LoadOrganizationTree()
And this is the comment :
//Load organization tree6 -
So basically, we're all just constantly writing legacy code of the future. RIP programmer kids of today.4
-
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.3
-
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
-
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
-
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 -
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 -
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
-
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
-
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 -
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 -
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
-
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.
-
why on Earth do I find PHP error notices in the _JS_ console when debugging this old project... and those notices are even stopping the code from working. seriously, PHP, why??6
-
Legacy code is like overgrown bangs 😋 It's very hard to decide if you have to let it grow out or trim it.8
-
Who has the craziest (not largest per se) Production stack?
I just found out we have tomcat webapps, calling Angular, which is calling Java to call a Perl script.4 -
When ActiveX is proposed as a solution for a staff facing web application, but all the staff run Windows 10 and use Edge or Chrome...2
-
So, a close relative of me is a local politician in my hometown.
I managed his political website for a while but then I completely left it in the hand to who deal whit is PR.
Today he emailed me to update only the header photo. No big deal.
After a bit of scrambling I find what I used when I made that.
FML I hate me of the past -
My last company had a code base originating in the 90's and they still write most parts of the GUI with a library that is a thin layer on top of Win32 API, with a self-rolled "ORM" for DB access (with LOTS of enums) and all that with >2million lines of C++ code. The code includes at least two implementations of std vector and std:list. One of which is even *named* std::vector. Feels good remembering that I have left that behind2
-
Fixed a bug in a code wrote 11 years ago.
It took 11 years for a user to find a bug.
The user must have a prize: a Bug Bounty.
My Boss does not like Bug Bountis4 -
I am both happy and sad looking at the code I wrote some time back. It makes me realize how much I have learned and at the same time how stupid I was.1
-
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
-
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 -
As the ones who read my previous rants know, I work with legacy code a lot and I regularly have ' how the fuck did this ever work??' moments. So I decided in order to deal with all the crap I encounter, I will make a hall of fame / shame of bad code as my own side project. Does anyone have an idea for a good name?3
-
How to deal with legacy code when you see such thing:
if function() == !!!false
1. Ctrl+A
2. Del
3. rm -rfv /3 -
One thing that really bothers me is that people use use megabyte to mean mebibyte. What makes it even worse is that Windows does it too. It says it shows gigabyte but actually shows gibibyte.
Now imagined my frustration when I saw this D:13 -
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
-
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
-
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
-
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. -
var _self = Object.create(Rant);
Hello devs I'm back
A few months ago I joined a software development company and I was pretty specific that I wasn't going to do support or maintenance only feature development, well, this past 3 months I've been doing dev helping stablish good practices and a better architecture for the app, but guess who is joining a support team tomorrow, they sold me the idea of a refactor team, I was trilled and accepted, now they tell me it's a legacy bug fixing team, damn I hate this crap, hope y'all doing betterrant upvote it i'm back baby pichardo for president bugfixing crap another useless tag legacy support5 -
That member of staff* that decided to write a batch script with calls to SVN, and named it svn.bat
*me -
!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/... -
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 -
That moment when you come across an amazing repo with last commit 7 years ago
Hurts right in the meow meow (~_~;)7 -
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 submitted one of the worst PR's of my life.
We have to use a service which was developed sometime during the cold war and we query data from it. The exchange is soap.
When you just query the service, it returns over 50k lines of gibberish.
It would stand to reason thay a flag called include X information set to false in the request would eliminate only that section(largest of those 50k). Well... not really...
What actually happens is that everything except the basic information gets excluded once you apply a filter. In order to get the rest of the necessary data, you have to specify flags with the value of 'true' for each section. There are over twenty sections.
Long story short, my pr was over twenty lines of 'setX(true)'. It's horrible and I hate myself for doing it but at least the 50k lines are down top 911 useful ones.
Also, the company that still maintains this crap said that this is perfectly ok. 😐8 -
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 -
I have 9 voicemails on my work phone. We have to change our six+ digit PIN every month, so I'm just going to not check my voicemails.1
-
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
-
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 -
I really do wish that there are parallel universes. So, there might be a universe where I am not maintaining legacy code.1
-
It is fascinating to see how my motivation and productivity decreases while working on legacy code.2
-
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 -
So, if you were supposed to work on a website that is already pretty shitty coded, shitty styled and outdated... Would you go on coding like shit for the sake of consistency or would you embed a new mini-system in it trying to pay some fucking respect to everything you have learned?
Edit: in this scenario, you can actually make a choice haha7 -
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
-
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.
-
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 :/ -
I'm in involved in a situation where one old corporate is helping build solution for another old corporate's Windows 98-XP systems.
Still a better love story than twilight.1 -
Working for one of our oldest customer, in some serious old, ugly and outdated code(web service).
The dev db doesn't contain any relevant data.
The QA service points to production, so can't use it for any tests.
My contact, at the customer, is going on vacation tomorrow.
Their pm is going on vacation next Friday.
No time for refactoring, db data updates or otherwise do important and much needed updates.
They want it to be done yesterday.
FML. -
Finally leaving a job that I've been working at. All we did was maintain a codebase that was originally built as a prototype by an intern, with no hopes of getting a green light on refactoring or rewriting. So glad I'm no longer part of that mess. Don't know why I'm writing this but it's just like a weight has lifted off my shoulders.2
-
So I've been hired as a senior software developer with all the tags included (mentoring, innovating, pushing forward changes) for a company that is trying to move away from waterfall development (yup, it's 2019 and this exists) to a more iterative workflow.
I was initially hired and sent out to do some "field work" abroad for 3 months and then worked "remotely" from the local office with our field partners.
During all this time it seemed that my ideas go through smoothly, there was a lot of chatter about how things are moving forward, how new projects, innovations and new methodologies are implemented.
And yet, after my "remote" work has finished and I have to do things locally more, all of the skeletons fell out. It's just talk, nothing seems to be changing at all and yet any attempts to talk with the brass is like hitting a brick wall.
Not only that, I've been handed a 12 year old project with no possibility to refactor, no technical documentation, very few comments and in a terrible style.
The atmosphere in the company is odd as hell. People are either not very initiative, nor they seem to really care about all of the "changes" that "should be happening".
It almost feels that I've arrived in a company that still lives in 2007 more or less.
Should I quit, or perhaps it's a little "too soon" (have spent 7 months in the place already)? What I don't want is to get in the same train again (work for a company for 8 - 12 months, feel burned out because of the divergence between actual things done and "plans" and then change the job).5 -
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 -
By Thor (not the god, the dragon), Belial and Thor (the god, this time)...
Just got the sources for the software that runs on the SDR for my project. I think I just found the mother of all legacy code:
The whole behaviour is described in a single, 4000 lines C file. Most of the code is in a giant switch with cases selected from an enumeration with names that don't match their function. All varnames are overly long, yet hopelessly unhelpful. And why three fuck would you use pointer[0].data instead of (*pointer).data or pointer->data like a sane person would !? pointer isn't even an array, so why would you use []?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 -
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 -
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!!! -
We've got a big legacy app which we have to rewrite. The current client applications are only working on XP(!). We have to move the clients to the browser so we can finally get rid of all XP vm-s. The db schema is complex but still 1000+ stored procedures and functions and about a hundred tables with 13 years of data.
So I ask the guy responsible for maintaining the DB code. (he is ~25 years older than me)
me - Where is the source of the database. Which project?
he - Where would it be? It's in the db.
me - So we've got a huge db without VCS, upgrade/downgrade scripts, etc?
he - Yes. I don't get why young developers always want to use shiny new tech like git just because it is cool. It has nothing that an external usb backup drive can't do.
me - VCS has been around since the early 1980's...
he - If you really want, you can put it under git or whatever, so you can sleep better, but I still think it is stupid and a waste of time.
I get that it's hard to keep up, but getting personal... -
So, it's been a while since I've been working on my current project and I've never had the "luck" to touch the legacy project wrote in PHP, until this week when I got my first issue.
And damn, this goddamn issue. It was a bug, a very strange bug, that only happens in production and that nobody has any idea what was happening, so yeah, I didn't have anyone to ask and I got less time than usual ( because Thanksgiving ).
And thus, I have no starting point, no previous knowledge on PHP and less time! I expected a very fun week 😀 and it was beyond my expectations.
First I tried to understand what might be causing the issue, but there wasn't any real clue to star with, so no choice, time to read the flow on the code and see what are they're doing and using ( 1k line files, yay, legacy ). Luckily I got some clues, we're using a cookie and a php session variable for the session, ok, let's star with the session variable. Where it's that been initialize ? Well, spoiler alert, I shouldn't start with that, because my search end up in the login method of the API that set a that variable and for some reason in the front end app it was always false and that lead me to think that some of the new backend functions were failing, but after checking the logs I got no luck.
Ok, maybe the cookie it's the issue, I should try open the previous website on the brow...redirect to new project login, What? Why ? I ask around and it's a new feature push on Monday, ok I got Chrome Dev tools I can see which value of the cookie it's been set and THERE IT WAS it has a wrong domain! After 2 days ( I resume a lot of my pain ) I got what I've been looking for, so now I should be able to fix the bug. Then where is the cookie initialized ? In the first file the server hits whenever you tried to enter any page of the app, ok, I found the method, but it's using a function that process the domain and sets it correctly? wtf ? Then how in heaven do I get the incorrect domain ? Hello? Ok, relax, you still have one more day to fix this, let's take it easy.
Then, at the end of the Wednesday, nope I still have no clue how this is happening. I talked with the Devops guy and he explain me how this redirection happens and with what it depends on, I followed the PHP code through and nothing, everything should works fine, sigh. Ok I still have 2 days, because I'm not from US and I'm not in US, so I still have time, but the Sprint is messed up already, so whatever I'm gonna had done this bug anyhow.
Thursday ! I got sick, yay, what else could happen this week. Somehow I managed to work a little and star thinking in what external issue could affect the processing, maybe the redirection was bringing a wrong direction, let's talk with the Devops guy again, and he answer me that the redirection it was being made by PHP code, IN A FILE THAT DOESN'T EXIST IN THE REPOSITORY, amazing, it's just amazing. Then he explained me why this file might be missing and how it's the deployment of this app ( btw the Devops guy it's really cool and I will invite him a beer ) . After that I checked the file and I see a random session_star in the first line of the code, without any configuration, eureka ! There was the cause and I only need to ask someone If that line it's necessary anymore, but oh they're on holiday, damn, well I'll wait till Monday to ask them. But once and for all that bug was done for ! 🎉
What do I learn ? PHP and that I don't want any more tickets of PHP 😆. -
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...
-
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 -
Do you ever look at old code from years ago a think “god that was bad”? I’m so embarrassed by something I wrote on 2010, it’s shockingly bad!
I actually feel a little low and think maybe I’m not very good! Of course now my code is so much better but think to myself, is what I’m writing now gonna be the same down the line?2 -
Man... I hate refactoring. After I had finished up an issue this morning, I had to refactor old sql queries and the parsing to the views.
I've worked on it all day and I still haven't finished! Still loving my job, tasks like these are unavoidable but they drain the life out of me.3 -
"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.4 -
That feel when you retire 152 files worth of dead code...
The diff was so big, it crashed our review tool! -
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. -
Learning institutions move so slow. Kotlin and Swift are nowhere to be found in this mobile applications course.8
-
Why why why the fuck would you assign the same variable name at the start of a function to completely different data? These aren't params, but variables being assigned different things, no comments, no documentation, crucial in the operation, but assigned wildly different values with different behaviors through the code.
-
Assigning me to another project because my current project is soul crushing is only helpful if you ever let me stop working on the current one. Otherwise I just have a new set of meetings to attend where my only contribution is that I didn't get anything done, and probably won't today either.
-
Oh, god...why? (my reaction reading my code from 5 years ago, when I got my first programming job)
I still work there and I love it. I learned a lot in these years... -
Three months ago I called function smartToggle(). And now I don't understand what this very smart shit is doing2
-
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
-
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 -
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
-
Took over a project where a dev created a table with no primary key and enforce a unique constraint in code. Wtf? He also always selected top 1 so if you added a record directly in the table it completely fucked the expected data.
So, when I took this piece of shit over I didn't realize what the table was and when I tried to convert it to EF it barfed since there was no PK. Was a complete PITA and had to create all new tables.
Some people shouldn't develop software!!!!!!!!! -
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 -
SOAP. Was integrating a service provided by a telecom and it was written in SOAP. No easy RESt but fucking SOAP.5
-
!Rant
Why in hell did we try to get smart with this shit!? As simple as storing 2 values and reading them... But no... Someone wanted to get pretty with it, stored the two values but just read one because the other can be calculated...
Makes sense (btw it's [field] in minutes and [field] in seconds)... Some problems:
1. Why? Oh because someone designed it as int...
2. Why not just in seconds? Fuck you that's why...
3. Who the fuck thought that getting seconds from minutes is better then getting minutes from seconds when we only store integer values?
Thank you... I feel better4 -
Today I had to spend the whole day fixing a stupid bug in a legacy application in a completely different tech stack than I'm used to...
At my company we have an Internet application running where we can upload a word document and using some mailmerge variables magic, can set those vars and receive the personalised word doc back...
Now this is great, when it's working, and is used in various projects we have up and running... Suddenly the application decides to crap out for no apparent reason and guess who drew the short straw....
Anyhow I ask our sys admin for the password to the server, I remote desktop to it, turns out its a fucking Windows 2008 server...
But wait it gets better, the application, a shoddy mess of c# code, is not under any sort of version control, has to be developed on that same server and to top it all of, I have to follow some obscure barely documented deployment precedure to get my changes live....
So after a lot of cursing on the dev (not working at the company any more) who did the original setup, and hours of painstakingly piecing together how it works and what went wrong and how to fix it, I finally managed to get it working....
After this rant, I'm mailing my technical lead about this in the hopes we can get someone to do it right (yes, I'm that naive)1 -
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 -
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!" -
Working on a piece of code, first created in 1994 and has had constant changes and modifications till 2014
I need to take it and turn it into a procedure library and new methods and classes and I have 3 weeks to do it.
Worst off I'm a junior programmer and I only have 9 months experience with the language5 -
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 -
> Client: Could you check for me where did they[code authors] put logic for this and that
> Sure!
> okey, api endpoint here, hmm
> oh sure here is the database access
> where tf is some logic....
> fml, am I blind, lets check frontend
> FUCK
> it's there
> it's on frontend
> and backend just puts it into database, no checks
> FU0!@#% )(#*%)H )F+#+!!@!
> *to client* We need to talk about future of this project. -
From log debug to taking care of a whole software written by a guy who does not work in the company and did not spend any time commenting the freaking code.
The best part? The code is not finished and guys above you do not decide what needs to be done but expect stuff from you. -
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 -
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
-
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)2 -
Second Monday rant...
F%$@ YOU Visual Basic 6, your STOOOOOOOOPID SSTab control bullshit and the fact that I can't remove a tab by simply clicking a "Delete" button! -
Unbelievable. 14 out of 16 runs of integration tests errors unexpectedly with no error message, port was already used (not released from last cycle) or timed-out in the before all hook. Well done whoever wrote this suite!
-
We use MDD!! I coined this term one night after getting frustrated and having a lot of drinks. What's that, you ask?
MAGIC DRIVEN DEVELOPMENT
It's when you're working on a not-so-recent code base and are afraid to make any changes in fear of breaking things up. You've touched some modules, and now you restrict yourself to work only on those treating all others as a blackbox. Even if something can be achieved by a small change in one of the blackboxes, you still go for multiple changes in the modules you're familiar with! Such is the horror. You start saying that those modules work by some dark magic that nobody understands! -
The person who wrote this map framework in our old fat client has such a deranged mind that 4 days in I still haven't fucking clue how it works
-
Im having to learn coffeescript to work on an old project and man its funny.
Coffescripts tutorials show how it compiles to the most recent ecma-script. Well im sure 2014 that comparison was a jaw dropping difference. Now the two are near identical.
The tutorial comparisons are more so saying "Heres how ecma does it. We offer the exact same thing with a small syntactical difference"
Coffeescript example: multiply = (x, y)-> x * y
Ecma comparison: const multiple = (x,y) => x * y;
Weeeeeeeeellll this will be a waste of personal memory assignment.7 -
Finish this one project which already takes way too long and like an onion there always appear new layers of fucked-up once I get through one of them.
-
I am losing my mind trying to create a new feature to a 2013 code base.
This project uses Zend Framework 1.12 and jQuery 1.4, so I added Vue and things went better but I have some tests to do.2 -
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... -
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 -
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.
-
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 -
This comment is why iis is an abomination for allowing multiple languages
/*Didn't know how to do this in php so wrote in asp just call it do do the task*/ -
Dreading the end of this bank holiday weekend, tomorrow I must wake up and return to working with legacy code.
-
Inherited a massive code base today... All JS is still being accessed via global scope... what are modules & modular design even... SOLID and DRY are things that clearly never crossed the devs mind during inception of this beast... and to top it all off all there is a weird BEM / SCSS style going on that somehow manages to confuse the IDE... thus all style helper utilities in the IDE are useless...2
-
<previous_developer>'s_file_of_shame.me a log of hideous code base I've inherited. is growing and growing. The more I write the more I wish I would be rid of it.1
-
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 -
The bug: Some string values for an identifier property in the data objects are being sent from our frontend prefixed with a '0'. Sometimes. When it happens, it usually gets stripped away again by the time it's passed to our backend. But not always.
This 0 is never explicitly set anywhere. I even searched for a few variants of " = 0" in both the frontend and backend projects without receiving any results. You might already be suspecting where this is going.
So it turns out.
The data object which holds this value is being initialized in the aspnet (don't ask) backend and passed to the frontend, which then hydrates it. This value is always an integer number, albeit incidentally so which is why string is used as the actual type. When this object is initialized, it's hardcoded with an anonymous type where this property is set as int because I guess someone figured "it's always an int though". Being a typed language, primitive scalars can't be null objects which means the property's value becomes the concrete int 0.
Okay weird. I can think of better ways of doing this but let's just set it to string as I can't start overhauling things right now. Let's just go find where this value is somehow concatenated into the incoming parameter.
You see, this happens because at the point where the frontend sets this value, it may be an int or string depending on where it came from, and I guess someone figured that in order to cast it to string you just go prop += arg seeing as the prop is empty string and all. Because explicitly casting it or - as much as I get a rash whenever I see it - going prop = "" + arg would be too verbose and unoriginal.
Bonus round: How come the 0 only sometimes made it all the way to our backend? The thing is that this bug has been fixed before. The fix is that because this string is "always" an int, you can parse it to int before passing it to the backend in case it has leading zeroes. This path is only taken in certain views because someone forgot to copypaste their fix into all the places this is repeated.
Sometimes you find a bug and you are just somehow more grumpy after fixing it.1 -
FOR FUCKING FUCK SAKE
I have a shit ton work to do. Just finished (hopefully) all of my exams, came back to work and got tasked with simultaneously developing a new app (Android), adjusting some of my own code to work with client's specific requirements in completely different project (C#) and also I have to fix a legacy app (Android) because UE comitee will be visiting us on wendesday.
I've never seen this code earlier. I've never seen this WHOLE SHITTY PROJECT. Guy that was developing this left few years back.
It's a complete spaghetti. 550 FUCKING LINES OF CODE for a one class, most of the methods are deprecated and won't even try to work on Android > 4.0. No documentation. Nothing works. Whole code is ridden with bugs, warnings and looks like it's glued together with duct tape. I even had to migrate from fucking Maven to Gradle it's that old. -
I had a discussion with my colleagues about my bachelor thesis.
Together we created within the last 18 month a REST-API where we use LDAP/LMDB as database (tree structured storage). Of course our data is relational and of course we have a high redundancy there. It's a 170 call API and I highly doubt that it's actually conforming REST.
Ensuring DB integrity is done in the backend and coding style there is "If we change it at one place, let's make sure to also change it everywhere else", so you get a good impression how much of spaghetti code we have there.
Now I proposed to code a solution in my bachelor thesis where we use a relational database (we even have an administrated Oracle DB with high availability) and have a write-only layer to also store the data in LDAP but my colleagues said that "it would add too much complexity to the system".
Instead I should write the relational layer myself and fetch the data somehow from the existing LDAP tree.
What the actual fuck, spaghetti code is what makes the system really unnecessarily complex so that no one will understand that code in 2 years.
Congratulations, you just created legacy code that went into production in 2018 while not accepting the opportunity to let that legacy code get eliminated.
Now good luck with running and maintaining that system and it's inconsistencies.1 -
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! -
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??
-
We are awesome in creating incredible things but totally suck in maintaining or discard them properly.
-
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 -
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
-
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
-
Is it unreasonable to refuse the tickets and to demand that the dev who came up with the God awful solution should make it work?1
-
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
-
So I have inherited a crappy Symfony 1.4 application and I need to rebuild the lucene indexes. Anyone know if it's safe to do this while users are in the application?5
-
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 -
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 have been working on a really interesting project for the last 6 months, now they put it on hold because another department wants something else done.
Now I have to go back and work with shitty tech and horrible legacy code.
They said is only for a month or so, but I can feel that it will be more, way more.
I feel like it is bothering me more than it should, probably because the other project was mine since day one and was way more enjoyable to work with.
Part of me wants to quit because of this, part of me tells me that I need to wait and I will get the other project back.
What would you do? How can I shut up my internal quitter voice? -
Inherited a project with random include '*.php' and mysql_* functions littered everywhere, this will be fun 😀😂😐😔😞😭
-
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 -
Currently debugging a project that was written over 4 years ago...
At first all was well in the world, besides the ever present issue off our goddamn legacy framework. This framework was written 7 years ago on top of an existing open source one, because the existing one was 'lacking some features' & 'did not feel right'.
Now those might be perfectly fine reasons to write a layer on top of a framework, but please, for all future devs sanities, write fucking documentation and maintain it if you're going to use said framework in all major projects!!
Anyhow back to the situation at hand, I'm getting familiar with the project, sighing at the use of our stupid legacy framework, attempting to recreate the reported bugs...
Turns out I can't, well I get other bugs & errors, but not the reported ones. I go to the production server, where I suddenly do can reproduce them...
Already thinking, fuck my life, and scared for the results... I try a 'git status' on the production server....
And yep, there it is, lo and behold, fucking changes on production, that are not in git, fuck you previous dev who worked on this and your stupid lazy ass modifcations on production!
Bleh, already feeling royally pissed, there's only 1 thing I can do, push changes back to git in a seperate branch, and pray I can merge them back in master on my dev environment without to much issues...
Only I first have to get our sysadmi. to allow pushing from a production server back to our git server...
Sigh, going to put on my headphones, retreat to my me space and try to sort out this shitpile now... -
"This service runs outside of k8s so it can only be accessed from other services in prod"
Yay... Don't you love it when things can't be run outside of prod... -
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
-
My code check-in today contains comments like "Last resort methods, never use except explicitly ordered by lead".
Gotta love legacy code hacks... -
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
-
# ./symfony test:unit
Propel-Exception: Unable to execute DELTE ALL statement [...] Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails.
WHY ist a UNIT TEST reaching out to a REAL data base?
And who in their right mind would create a different data base schema for the tests?
This was with a clone of the real thing. Removing the FK results in double PK-errors...5 -
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 -
Third-party integrations are the worst. To top it all if the company is working on PHP5 and expects API requests/responses in XML is recipe for disaster.
Old companies running code and standards older than a decade should just die and shut shop.5 -
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 ...
-
Who knew FE development could be so much fun (working on FE tasks after months of shitty legacy BE code).
-
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 -
Got to do some security audit of legacy ABAP code for SAP systems. Do people still use it? If yes, why.4
-
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 -
The world is talking about all the cool stuff meanwhile I work for a bank for a legacy system. My average finish time per task is 2 weeks, like add a button, a field and save it into the db. The good thing is my pay is higher than the avg. not sure it's good or bad. U use react? We have project in backbone and requirejs. Oh I heard u're on webpack? Whatever..2
-
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 -
Fuck you mysql and your new fucked up 8.0 login. Fuck you 100 times. Now I need to restore my computer because of you.4
-
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. -
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.
-
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 -
One of those debugging days where minutes feel like hours, and hours like days.
I had the bad luck of being asked to dive into a legacy project which was unmaintained for months, but of course it's still on prod. And very suddenly the urgent need arrises to change stuff.
Yet: the docker stack won't work. It builds fine but the stack crashes.
Long story short: some internal api URI were renamed and at some point one internal api started to always require an access token. Which we set for the stage, prod env yet somebody forgot to mention that to the devs of legacy-project.
That ain't too bad.
WHAT IS FUCKING BAD IS THAT YOUR SHITTY APP SWALLOWS THE ERROR MESSAGE!
I mean it's bad enough I have to `var_dump && die` your app since you never bothered to setup a xdebug that I could use out of the box, yet egregious fact that your app would catch a valid exception but transforms it into an "internal warning" is borderline insane!
It's ok to throw exceptions. It's ok to let your service die. That's how other will know what and where to fix it. (You may want to restrict the data visible to the outside, but that's a whole different conversation.) -
PHP gurus / masochists.
I've been using Symfony components for new, isolated features in a legacy php application for awhile now. the time has come to integrate using the kernel, and routing for new endpoints while existing endpoints use the existing apache means of loading pages.
It's not my first rodeo doing this, but I'd appreciate any wisdom/resources/patterns you followed for anyone who's had to do the same.
My clients don't have the means to do hire the appropriate ammount of devs to do a proper port, so this is a long path towards modernization by ceasing to bolt on features to existing code and instead, when working on something, updating it to the new design pattern and then extending that, with a spec, documentation and code coverage.3 -
But yeah.... IPMI is fancy.
IF PEOPLE USED IT PROPERLY
FUCK IBM
More like... FUCK <COMPANY>
USING 10 YEAR OLD SERVERS
HOW THE FUCK DO WE SUPPORT THIS
SWITCHES ARE OUT OF DATE BY AGES
WE NEED TO UPDATE EVERYTHING
Software at least anyway.2 -
Software Installation happens through "point and click", also does system configuration and infrastructure. Servers are _pets_ and get reused and re-purposed after decommissioning. Command Lines, Terminals and scripting languages are buh and scary; We don't use them. Repetitive tasks are good, because once you know them you can do them faster and better. Windows servers are good, because we want to be like Microsoft ...2
-
Began working on an old project at work today. It has been about 6 months since I last touched it and 10 months since I began working here. No one that works here knew how to get the project running on anything other than one specific computer in the office...i work remotely. So instead of remoting in I finally figured out how to run it on my computer!
*crash*
Turns out it only runs on vista.... -
Built my first MVC application today. Building proof of concepts to hopefully modernize my workplace!1
-
Code comment in legacy codebase that says "Mr.Foo Bar doesnt understand why this is required but removing it may result in spontaneous combustion"
-
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.
-
I was given a project to fix and improve a legacy unity VR project I was told was for the oculus rift Now the problems started almost immediately partly stemming from the fact I’ve never used unity before this project was handed to me as my long term TA assignment
And partly from the fact there was no oculus integration in the game at all. it was built for GoogleVr and most of the code the last person wrote consisted of massive sections (25-50 lines) of commented out code and no explanation of what the hell the non-commented parts are supposed to be doing
So long story short. I’m now in a basic unity course, six feet deep in documentation trying to read resources that go way over my head in understanding, and am rebuilding the project from basically scratch (took the assets and saved the c# scripts for reference) and have finally figured out how to at least get the player character constantly moving forward and stream in the WRLD3D environment like the last guy did. Now to get the player character to turn and change direction when the player turns their head with the oculus headset
By the way. WRLD3D is a really cool api thing in my opinion -
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. -
As time goes by, older stuff just does not open in browsers anymore. Ok, so I'm not talking about web pages on the Internet, yet some of this surely applies. I just hate that it's 2020 and I'm facing these issues.
Storage interface uses adobe flash. Some other pos uses java that can not be run in any browser anymore.
Vendors should know better and release a compatible management software that works with this legacy piece of garbage.
I could scream at anyone that says "Out of support".
So far I could find workarounds for my issues, but it requres way too much thought and effort.