Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Search - "refactoring"
Every time I do a dirty fix and someone in my MR comments "have you investigated the root cause" I wanna kill myself.
No bro, I havent investigated the root cause because this ticket is 3 months old and was passed around like a hot potato from team to team until it got assigned to me.
If you want I can add a comment to refactor this in the future. As far as Im concerned any refactors are out of scope, also I atleast came up with some kind of solution that noone else was able to in 3 months. So im not gonna waste my time on refactoring this piece of shit code under immense pressure from management who thinks it was me who dragged this ticket for 3 months.
Its working, it doesnt cause any side effects, we all gonna die soon and nothing really matters, so fuck off.9
In the darkest of days, I discovered how to remote login to my computer at work through the company vpn. I then proceeded to work overtime at night in secret for a week or so, writing documentation and refactoring code.
I finally woke the fuck up and realized that I shouldn't be obsessing over proprietary codebases that do not belong to me, and I should put this misguided energy into my own projects.
So yeah, as a bad dev habit I'm working on fixing, this fits the bill.4
We were still using python 2.7 waaay into 2020 - It had been heralding the impending doom since 2018 and finally end-of-lifed in 2020.
That's when I finally managed to be the loudest asshole in the room and allocate a team (myself included) to refactor shit up to 3.6 (then somewhat more modern) for a month or so.
COVID the destroyer may have helped by wrecking havoc on our client's demands pipelines.
It was the third week into "the red sprint" when my entire team (myself included) were beheaded out of the company since we had "not delivered ANYTHING in weeks!" (emphasis in the original).
Frankly, being laid off was by a large margin the best thing that company ever did for me.
I heard from a poor schmuck who stayed behind that they were still using the shitty spaghetti code from before our refactoring - in freaking November 2021 - and that our entire last effort was thrown out because "nobody knows how to use it".
There is tech debt and there is tech bankruptcy.
I may have a lot of tech schadenfreude now :)13
In the begining of time, when The Company was small and The Data could fit in some fucking excel sheets, Those Who Came Before implemented some java tool to issue invoices, notify customers and clear received payments.
Then came the Time Of The Great Expanse, when The Company grew to unthinkable levels. Headcount increased with each passing day, and The Data shows that everything was going great!
But when the future seemed bright, came The Stall-Out. The days when The Company could not expand as fast as it did before. And Those Who Came Before left, abandoning their Undocumented Java Tool to its own luck.
Those who came after knew nothing of the inner workings of the Undocumented Java Tool. They knew only that the magical Jar would take a couple fucking excel spreadsheets and spit out reports and send emails like magic.
And those were The Dark Days.
In the darkness, The Data grew to be a monster. Soon a fucking excel spreadsheet could not hold The Data contained any longer. Those Who Came After, fearing the wrath of The Undocumented Java Tool, dared not mess with its code. Instead, they fucking cut away the lowest volume transactions from the fucking input spreadsheet, and left the company to report the unbilled invoices as "surprise losses". Fucking script kiddies, were Those Who Came After.
Then, at The Darkest of Days (literally, Dec 21st), marched into the project The Six Witchers, who fear not the Demon of Refactoring.
This story is still unfolding. Will The Six Witchers manage to unravel the mysteries of The Undocumented Java Tool? Will they be able to reverse engineer the fucking black box, and scale it's magic into a modern application?
Will they decrease revenue forecasting error by at least 2% in a single strike?
Only the future will tell.16
Oh boy, my riskiest coding decision was certainly that one time when I refactored some 50k lines of critical legacy shit code in 3 days, straight up merged everything into master and then deployed to prod.
Luckily there was only one minor bug I had to fix after that... phew...
(To my defense: I was solo-working on it - the infamous CMS Of Doom™)2
My advisor thought that my MCL algorithm behaves a bit strange, so he wanted me to investigate it. I said I'd be happy to review the code because I anyway considered refactoring, and asked if I can have another pair of eyes to help me.
A more senior PhD student was assigned to help me, and by the suggestion of my advisor we tested my code against a very well-written and well-performing implementation of MCL. This implementation was written by another professor, who is a close friend of my advisor and the actual supervisor of the student assigned to help.
But this implementation was optimized for a very specific type of maps, and on the maps I worked on it just failed consistently. The student, in a misguided attempt to protect the pride of his advisor and subsequently his, wasted days adding code and fine-tuning the implementation.
In the meantime, my MCL has a stable configuration that converges on both types of maps. It behaves differently, but the outcome is about the same as the other implementation.
I am a little sick of wasting my time (week+) on someone else's attempt to reassure their ego, so I'm doing my planned research work on the weekend...1
When wrote some abstraction,
commented out the old stuff,
replaced it with the new calls
and after it passes all tests
get to remove all the old crud.
( ☼ ◡ ☼ )
I feel clean again.5
Just spent 10+ hours refactoring a code, and at the end I've figure it out a one line fix to the problem... just wasted 10 hours of my life.. :)7
You know a Repo is fucked when you have to rely on global text search to find and rename symbols like method or class names.4
Story of WTF happened to my job
During my employment in (name censored) was stressful, They claimed I didn't complete my task on time which they constantly remove me from git and documentation(which have to follow their style of returning data), I kept emailing, slack, WhatsApp calls them, mostly and predictably got ghosted and blocked.
So How the fuck am I supposed to push my code or code without the documentation (I can actually, prevent refactoring every time, following the documentation is the good way to go.)
On the sprint review, they will complain about me not committing and pushing the code. (I did commit locally, but can't push, they removed me from the fucking repo) and not done.
Tried reasoning, telling the obvious reasons with them, doesn't work. They come out the second reason of me "NOT COMMUNICATING". Sometimes I can get to git merge from dev to my branch and get tonnes of fucked up code. I reviewed the code, and I can't tolerate it.
Lately, I overheard them mocking and cheering me about to get fired over a zoom meeting (I was in there, they forgot to remove me). Their conversation is about me being a coloniser, a jerk, betraying Chinese ancestors for being not Chinese enough.
I was like: "Why the fuck does their conversation sound like they are tucked in the Qin dynasty?"
Frequently I got labelled as unprofessional.
How is cussing about my ancestors, personal and life a professional behaviour?16
If refactoring scares you, fuck off out my team.
If you keep code in the codebase simply because it took you ages to write it, fuck off out of my team.
Some people must be wishing pain and suffering upon themselves and their colleagues.8
how often did this happen to you?
- fix a bug
- think, now that i'm here, let's smuggle in some refactoring, just this aspect, won't take too long
- spend more than half a day refactoring, finally finding yourself entangled in a spaghetti nightmare
- stash / shelve and revert all your refactoring changes
- continue on your other tasks and talk to noone about it ._.6
First code review ever, and it's for my job.
Guy was really nice and polite.
Even correctly guessed I don't have much experience with professional coding outside my associates degree and prior job where I was the only programmer most of the time I was there.
Said that since it works functionally and is such a small program there's nothing wrong with it if it meets our purposes ( low priority project )
Then he politely in his words 'nitpicks' 3 points and gives me ideas on how to make it more reliable and less likely to need replaced or completely refactoring in the future.
I think my first time getting code reviewed went well. And one of the things he mentioned was something I didn't know how to do and only took 20 some minutes to implement so I also learned something new from this7
Is it common to look at code you wrote 1 to 2 years ago and think "what the hell was i thinking, this mess needs refactoring"?9
Problem: ugly-ass php spaghetti code that has a technical debt of 16(!!!) years. I mean, it's so spaghetti that has two legacy frameworks that talk to each other inside the same monolith.
Observation: after two months my colleagues, trying to refactoring stuff, they were able to touch so little stuff that it almost made no difference.
How much is worth a rewrite? Because i don't think i can make a difference on a codebase so messy.
I know that rewrite is not the answer 99.9999% of the time, but i have tons of doubts here.14
Monthly Update call
Me : I need 2 undivided weeks in the next 3 months to make some refactoring to our codebase, so we dont have issues in scaling.
Senior Manager (with years of tech experience almost equal to my age) :
Why would we need that, We are already hosted on AWS so we can just spin up more instances.
Me ( trying to hold the rage inside) : No it doesnt work that way, that will only hurt us more than help.
Him : What if we try with a bigger instance size. Its AWS, sure they will have a bigger instance.
Me : No, tha....
Him : (cuts me off) How about we use autoscaling and let AWS decide
Me : (Silently praying for a gun that shots across video calls.)8
My 5 cents about refactoring.
People often postpone it, making it harder down the line.
From my experience, it's better to just do it as you go. 5 min can otherwise become 30 min thing after a while, and combined with some other 5 min thing, this can become 2 hour thing after some time, for example.
Also good luck convincing management (especially bad one), that you need 2 weeks of refactoring. Doing tiny 5 min refactoring, no one will notice.7
It‘s just amazing how much a proper type system and a modern language makes refactoring a good dev experience.3
Management has been promising we'd leave .NET framework for 2 years now. Never fucking happens. A new ASP.NET project was just started last week and yup, OF COURSE, its .NET Framework 4.8.
I'd even be happy with one of the earlier .NET Core versions at this point for fucks sake. I have no clue why tech leads are so happy to create a brand new project on a deprecated framework version.
And yes, I have checked thoroughly. Our whole infrastructure works with .NET Core onward. People are just too lazy to learn new stuff.
Stuff like switching to .NET 6, actually doing unit testing, improving our CI/CD pipeline, refactoring problematic codebases, etc. -> all this stuff is the kind of things they promise me I can work on later whenever I'm so bogged down with work that I'm looking for a light at the end of the tunnel. All empty promises.
Ideally we should be on .NET 6 since its LTS and just stay on the LTS versions as the year goes on.8
I don't fucking see how others get their stuff through code review, if when I make an enhancement it gets stopped for stuff other people did before me. Like, at this point it seems like I'm spending more and more time refactoring than simply doing the requested enhancements.
I don't blame the team, they're going off of the documentation. But this is getting ridiculous.2
Do you know feeling when you have just so much fun refactoring + ( listening + singing / humming ) to music that you can't even properly type anymore because you move around too much?
I feel so happy rn, maybe it's also the coffee ..3
I have been working on this software for 3 years now. The code base was a working prototype made by my boss before I came, not more, not less. Php + Angular. Have been refactoring a lot, backend is backed with hundreds of tests now, frontend still lacks a lot. Still a lot of programm structures are still the same weird ones my boss once created in a rush between two meetings while learning Angular to get the prototype finished. Now it's used in production which makes hard to refactor, because we have to maintain backwards compatibility. Neither the parts I added or refactored completely are satisfying, because they are built on this structures, because i never got any feedback for anything I decided and because I changed my own paradigms over time.
So I am all alone on this project. All genuinly new projects are assigned to the new team members (i was the first one, no we are five plus my boss) because I wont have time, have to maintain the old one. So I never can do something new which is quite frustrating.
I did a little side tool, the only thing I invented and did completely by myself in our repertoire - and now some stakeholder shows big interest onto this. Instead of giving me the task to make a real project from this my boss wants to give it to them to develop it. Why? Because I need more time for the main application.
Also the more the software is used the more bug tickets and feature requests come. I was crying for help for months but the others had appareantly more important stuff to do.
This might be true to some extend. Yesterday we had some kind of crisis meeting and my boss wanted again to assing pur junior to help me, who has a shit load of other things to do and is a student. I insisted that this would not be enough, and one of the fulltime devs has to get involved because the thing is our core application and I am only part time btw. So my boss said we wont decide today but one of them should do it. They should have some time to figure out who which is understandable but it's not that I didn't keep saying this for months. Now they are all like whimp whimp when I have to do php i will quit. The new projects are all typescript, with node backend if any. But alas, one of them even said yesterday he doesn't want to do js anymore. Okay... but... this is our tech stack then get another job allready?
And I should do the same probably. But then again I feel very sorry for my boss who helped me in very dark times of corona and more. If both of us leave, the project he worked on for decade (including convincing poeole, collect money..) might be suddenly at it's end while he is so exited about it's access today...
I also get insecure if it's really that they hate php so much or that they don't want to work with me personally because maybe I am a bad team Player or what?
I experienced the same at my old workplace, got left alone with big parts of the project because they didn't want to do php and js in this case and it ended up five devs doing the python backend and me doing the frontend and the php cms part all alone. Then I quit and now everything seems to happen again.
And then again I think I am only fucked up so hard by this stuff because I do not really like being a developer at all. I only do it for the money and because I am good at it (at least i think so. Nobody ever bothers to ever to read my code and give me feedback, because you know, php and js). So I guess I would hate any other job in the field maybe likewise?
This job *is* convinient, salary, office
position, flexibility could not be better. At the end of the day it's not that stressfull. And i don't have any second of freetime (due to family) or energy i could offer a new and more demanding employer, can't work over time or even take a fulltime position, can't home office, can't earn less, can't travel very long to the office and especially can't go back to school to learn something completely new. Some of these constraints are softwe then other naturally but still my posibilities at the Moment are very limited. That might change in about five years if the family situation changed. So it would most likely be reasonable to stay until then at my current job? And bear being alone with this app, don't getting involved on any new project, don't learn anything new, don't invent anything.
There was one potential way out, they considered offering me PHD position to the upcoming ml part of the project... But I learned that I would attend to a bunch of classes at university first, which i would like to, but I don't think i have the time.
I feel trapped somehow. I also feel very lonely in the Office because those fucktards keep saying in home office.
Man, I don't want to go to work today.6
Unpopular opinion: unit tests are often overrated.
Although a well written test suite is almost essential in some parts of the application (I.E. business logic) I cringe when I see hundreds or thousands of line which “mocks” everything to test a micro service which just does CRUD operations on a database, in cases like that unit tests are just a waste of time because almost every operation involves a mock which may not behave like the real database and often needs to be rewritten when the code undergoes a huge refactoring. In these case a integration test suite is faster to write and way more helpful.7
I've been asked to join a recruitment process to popular airline company. The same day I received email with instructions:
"[...] This is a short test comprised of 18 multiple choice questions. [...]
The total time for the test is max 16-minutes."
Yeah, I tried to open test on the phone. Fortunately, website prevented me from doing this. I had like 14 closed questions (not even multiple choice), the rest (at least 5 as I remember) was open questions including implementing whole app in React and refactoring some trivial code example. "Max 16 minutes" was 3 hours. I did everything except application because I wanted to distract my thoughts anyway because I had to say goodbye to my pet that day.
A week later they sent me an email that unfortunately "I don't meet their technical expectations" so I emailed them back that the test didn't meet my expectations as it was completely different from what I've been told and I did much more than I should anyway.
I just hope they are better prepared for recruitment processes for captains than programmers.1
My biggest problem with Visual Studio Code is that every fucking piece of shit dev thinks it's their duty to introduce it to me. STOP. Just stop this shit, alright? Wanna use vscode? Fine, just don't tell me it's the best tool and I MUST use it instead of the tools I'm used to. I'm tired of this bullshit.
Every new project, every new team. Starting from js/java/.net monke and ending with PMs, I must hear this bullshit about god blessed IDE that I must use, because "why you need intellij/webstorm/rider? just install vscode and some plugins. we all use it in our project and it's ok".
FUCK YOU! Refactoring is not just renaming variables and extracting blocks of code into functions. If you want terminal integrated into your text editor with highlighting and LSP support, so be it. I want an IDE with rich refactoring tools, code analysis and good completion, database viewing/modeling support, good build tools support, good UI for git and git-diff, good test and code coverage support. I don't want your semi-IDE, bloated with hundreds of bugged third-party plugins, which I must spend a week on to configure and merry with each other before using.
JUST STOP this crap and let people use the tools they are proficient/comfortable/productive with.18
In flutter , there’s something called TextButton.icon. Which render a button look like this :
(👍🏼 Like Button)
But there’s this tiny twat decided to use countless of nested column in a nested row and containers just to create a fucking button! This particular class contains 1438 lines of code! Most of the code are redundant and nested fucking shit.
I want to punch this guy so hard but I do not intend to start a ww3 with china.
That means I have no choice but refactor it as I implement a feature requested by the product team, every components break. It is like a land mine field here. One changes , the entire application crash.
So there are useless mother fucking Sherlock fucking holmes kept telling me that “don’t worry about refactoring now , just complete the task.” , like seriously “how in the name of mother fucking god of all arseholes can I complete my task when I can’t change even one component?”
These people are fucking genius. Their intelligence resurrected Einstein and made him die the second time.3
FUCKING HATE VUE 3
It's pointless, it's not an incremented version of Vue 2, it's basically a completely different framework, probably one nice to start a project with... But migrating from an existing Vue 2 project to Vue 3...
What the hell were they thinking!
first, setup() with all the logic and functions in it DOESNT MAKE ANY SENSE to me!
second, your old DEPENDENCIES NO LONGER WORK!.. good luck finding replacements for EVERYTHING, and do the necessary adjustments to work with the LASAGNA CODE YOUR PROJECT HAS BECOME!!
PS: the update/upgrade PR has almost 300 changed files!!!!19
“Practical” tech interviews for senior roles (from my experience): DONT worry! We won’t give you any “leetcode” problems!! Instead, we’re giving you only 40 minutes to do this huge laundry list of tasks that are simple but hella time consuming. We want to see how fast you can type. So you have 40 minutes to write a mini app while we take note of the shit ton of simple errors you make due to the time crunch as your fingers burn through the keyboard and then wonder why no one can pass our “simple” tech exam!!!!
DAMMIT!! the only tech exams I enjoy are ones that involve refactoring existing code bc everything else is a fucking speed test! I’d also MUCH RATHER take these exams WITHOUT someone there taking notes like I’m a fucking lab monkey!10
Dev: Woah look at this code! I might be a genius!
Also dev a few months later: Woah WTH is this shit? Was I totally dumb or what?2
Today was a bad dev day working on a shitty React project. Not that React in itself is bad, but it can be hell to work with when the code is a big pile a crap full of anti pattern code. I spent the day refactoring to try to fix a bug, but to no avail. It would take days if not weeks to put some order in this mess and to prevent such bugs.6
i had an epiphany today, in a discussion with the software architect of our new project.
i'm having the epic job to design & implement a prototype for a C++ library in a new software project and collected some inspiration in our "old" software, where i'm maintaining the module that fulfills the same functionality (i thought). i've been maintaining this module for around a year now. i analyzed the different features and stuff to consider and created a partial model of the new library.
when i showed it to the architect today, he was like "oh my god, no no no, you don't need all this functionality, this shall not be part of the new library!"
this was the moment when i realized how deeply fucked up the code base of the old module is.
imagine it like this:
you want to automate the process of making yourself a good ol' cup of coffee.
the reasonable thing would be to have
- a smart water boiler where you set parameters water temperature and amount of water to be fetched from the water supply
- a smart coffee bean grinder where you can set type of beans, amount of beans and grinding fineness
- a component where water and ground coffee are joined to brew the coffee, where parameters like duration, pressure etc. are set
- a milk tank where amount of milk, desired temperature and duration / speed of foaming can be set
- a sugar dispenser where amount of applied sugar can be set
- optionally, additional modules with spices, syrup, ice cubes, whatever for your very personal coffee experience
on requesting a coffee, you would then configure and orchestrate all components to your wishes to make you a fine cup of coffee. you can also add routines like "makeCappucchino()", "makeEspresso()", or whatever.
our software is not like this.
it is like this:
- a smart water boiler consisting of submodules that know how to cook water for e.g. "cappucchino with sugar" or for "espresso without sugar, but with milk and ice cubes"
- 5 smart bean grinders that know how to grind beans for e.g. cappucchino, espresso, latte macchiato and for 73ml of water preheated to 82°C
- a very smart sugar dispenser that knows how to add sugar to 95, 98 and 100°C coffee and to coffee made of BOTH coffee arabica AND coffee robusta beans.
etc. etc., i think you're getting the gist.
when i realized this, it was like, right in front of my eyes, this terrible pattern emerged like a foul, corrupted caleidoscope of chaos, through the whole code base of this module.
i've already known how rotten from the core this code base is, but today i've actually identified a really bad pattern that i hadn't realized before. the whole architecture is so bloated that it is hard to have an overview of the whole thing. and it would require a LOT of refactoring to repair this pattern.
but i guess it would also be infinitely satisfying because i could probably reduce the code base for 30% or something...
but unfortunately, this is never going to happen, because screw refactoring.
it's a great feeling to start this new library from scratch, tho...6
Laziest habit? Anything done between 1pm-4:30pm and 4:59pm-8pm. During that time, habits include unnecessary refactoring, poking the CI/CD containers, editing already made prototypes in gimp inkscape, pasting stackoverflow topics to youtube, bouncing from macOS, windows and kde distros in search of zen/rice, adding a calendar emoji on my slack :), making useless automation scripts, building on every variable's value change, tinkering pixels, shades, gradients (and their angles), dimens, anim values, anim curves, opacity, blurs and just nuking the ui just to copy paste an old one, 60% just chatting in code alongs, changing key bindings (from ide to OS), and ultimately zoning out on a podcast about cyber security. And of course: waiting for ++ and comments
Still on the fence: to jump to the dark side and become a consultant - or stay where I’m at. There be cookies on both sides. And now there be offers aplenty as well…
To stay and do DevSecOps and refactoring (and hopefully in the future rearchitecting) in an environment I’m very damn comfortable in or jump into the unknown (tho into any of the few tech companies I have a positive image of) to become a cloud consultant? Or to work with F#? Or to the EV industry? So many options…
I’m spoiled with choices and I don’t like that.7
- make absurdly large refactoring on
- run unit tests for the first time on this branch and expect dozens of failures
- everything works
- be like WTF!
- git status
> on brach master
And this is how to troll yourself.2
So ok, today was a crazy day.
New sprint, new ticket.
Work on the bug tickets first he said ….
Sure can. Oh had I just known that this very first innocent looking ticket is the way to coder‘s hell ….
‚Access of undefined‘ it said. Easy to fix, I thought.
Until I found the very same code twenty-fucking-two times over about 50 files!
Who would guess that exportSingleOperatorBooking, exportSeveralOperatorBookings, exportAllOperatorBookings (… and more) could in practically be the same? Nah, they all use different interfaces.
Oh wait, the alias type of the extended sub-interface of file misc.ts is the same logical content as a differently named interface below another different interface with the same content as in another ts file?
Wait that can‘t be. Riiiiight?? 😳
8h later I have barely scratched the surface of refactoring this shitshow of a project.
But no, I refuse to put the same error handling multiple times in different places.
I could have been done already. I could have saved my soul, my sanity. But I will be brave and strong to save the innocent developer that will cometh after me. For I shall be rewardeth for my sacrifice.
God I’m having the hardest time focusing on my task, it just seems so inconsequential compared to the shit going on in the world.
Here in my own country we’ve got issues with the government and their desperate grabs at power, citizens rights being trampled all over as if they mean nothing.
Of course the conflict in Ukraine I can’t peel my eyes away from the Reddit world news feed.
The explosive inflation worrying about the cost of food fuel and rent.
Diesels not cheap, and the electric company wants to spike up the price of already over priced electricity by 10%.
I’ve got a trip coming up which I’m thankful for but it’s expensive and money isn’t getting any easier to come by.
I’m genuinely worried about what the WEF is attempting to accomplish and the amount of power they hold over the western world.
And with all that in my mind…. The work in front of me of updating this stupid game to modern standard and refactoring it to actually make sense and be maintainable… just seems so fucking pointless.1
On the topic of having to make decisions as a dev that shouldn’t be made (solely, at least) by devs…
There’s a lot to like in my current work environment: I enjoy being around my colleagues, I get to do a variety of tasks, and many of them interesting to me and/or great learning opportunities, the pay doesn’t suck and so on… there’s also not much pressure put on the dev team from other parts of the organisation. The flipside of the coin is that nobody who should express some kind of vision as to how we should develop the product further does so.
Me and my fellow devs in the team are so frustrated about it. It feels like we’re just floating around, doing absolutely nothing meaningful. It’s as if the business people just don’t care. And we are the ones ending up deciding what features to develop and what the specs are for those etc. and I really don’t think we should be the ones doing that.
One would think that’s a great opportunity to work on refactoring, infrastructure, security and process improvements and so on - but somehow we get bothered just enough by mundane issues we can’t get to work on those effectively. Also, many of the things we’d want to do would need sign-off from the management, but they are not responsive really. Just not there. Except for our TM, but they don’t have the power neccessary… at least they are trying tho…
I sometimes wonder , how do my co workers have so little ownership on what they do. The business analyst does nothing , the management cant even optimize a filter on an excel sheet let along Jira but are somehow still employed. What psychological trick is this , meanwhile I slave away at refactoring code until it is perfect(at least to my knowledge) and then do the other peoples jobs also. How do i stop doing this, it seems i cant help myself.1
Perfectionism... I often refactor my code because I always see something that could be "done better" in my own work, which can slow me down if I'm not paying attention to my main task.
If I could stop time I would perfect my code all day, but that isn't realistic. 😂
Doesn't apply to dev work only, I've had to learn the art of not giving a shit about every single detail in many other disciplines. I just love getting things done really well.
I decided to rewrite the cross-window comms lib from the ground up. After all it isn't too big (some 500 lines for the first level, 300 for a little abstraction) and the original is more of an artwork than good code. It somehow works but there are as many explanations as to why as viewers and nobody is allowed to touch it because it would probably break.1
I want to rant here but I have a lot of backlog. They’re all pretty deep for refinement. So I want to put them all in one sprint. Because I don’t want a marathon of ranting.
But I do realise in IT sprints never end, and eventually turn out to be a marathon of sprints. I came to a point to deliver over 100 story points in one sprint. Maybe I shall write a book instead of exploding this app.
I could have never imagined the dark side of this occupation.
However I love coding so much I’ll brush the backlog under the carpet😏
But you know there are always saviour heros wanted for refactoring. This honour goes to:
The arrogant guys who think they’re a genius when their code compiles.
The insecure guys who want to overpower the next available when their code doesn’t compile.
The egoists who like to underestimate and show of, where their faulty biased googles display a little girl instead of a developer.
The aggressives when they are invited to the reality and kindly offered to sit back on their place.
I hope this rant wouldn’t ouch anyone. If it does, not sorry, the message is delivered.
If there’s an offence or reaction to this refactoring job, the 4th one would be offered to clean the mess.2
So I am pretty fair dev at Java and have been doing freelancing for sometime apart from normal full time job.
Got a client , a well funded one, who raised a decent chunk of money recently.
Got me do a couple of different areas right from refactoring and bumping their performance to all the way setting up AWS Services like RDS,Lambdas,Dynamo,SQS.
It was going good , money was coming in for the initial part.
Thinking that money is not the concern here , I accepted work at runtime and gave quotations about the additional work.
However now that all is done and deployed , the client simply refuses to pay me the money and has ghosted me horribly than my ex ever did.
I have access to their GitHub,AWS(I setup myself).
Need suggestions of whats the best way I can fuck them up if they decide to not pay even after a few more professional polite attempts I do .
sidenote : They had a pretty dumb db design and blindly had resorted to services in AWS and the pricing is still a major point of concern for them.10
!rant One of the better refactoring insights I've heard today: "With great power comes great responsibility".
Just because a language may not care about certain constructs, doesn't mean you should be relaxed about them (e.g. weak/dynamic typing/not caring about (variable name) consistency).3
I can work productively and for very long hours with a lot of stuff which many dev considers productivity hurdles:
- single small monitor? No problem (in fact in one occasion in which my roommate accidentally broke my laptop charghing port and I couldn't get a spare I worked on an iPad connected trough SSH to a Linux machine completing one of the hardest tasks I ever did without significant loss of productivity)
- old machine? That's ok as long as I can run a minimal Linux and not struggle with Windows
- noise and chatter around me? A 10€ pair of earbuds are enough for me, no noise cancelling needed
- "legacy" stack/programming language? I'd rather spend my days coding in Swift or Rust but in the end I believe which is the dev and its skill which gets the job done not fancy language features so Java 8 will be fine
- no JetBrains or other fancy IDE? Altough some refactoring and code generation stuff is amazing Neovim or VS Code, maybe with the help of some UNIX CLI tools here and there are more than enough
despite this I found out there is a single thing which is like kryptonite for my productivity bringing it from above average* to dangerously low and it's the lack of a quick feedback loop.
For programming tasks that's not a problem because it doesn't matter the language there's always a compiler/interpreter I can use to quickly check what I did and this helps to get quickly in a good work flow but since I went to work with a customer which wants everything deployed on a lazily put together "private cloud" which needs configurations in non-standard and badly documented file formats, has a lot of stuff which instead of being automated gets done trough slowly processed tickets, sometimes things breaks and may take MONTHS to see them fixed... my productivity took a big hit since while I'm still quick at the dev stuff (if I'm able to put together a decent local environment and I don't depend on the cloud of nightmares, something which isn't always warranted) my productivity plummets when I have to integrate what I did or what someone else did in this "cloud" since lacking decent documentation everything has do be done trough a lot of manual tasks and most importantly slow iterations of trial and error. When I have to do that kind stuff (sadly quite often) my brain feels like stuck on "1st gear": I get slow, quickly tired and often I procrastinate a lot even if I force myself out of non work related internet stuff.
*I don't want this to sound braggy but being a passionate developer which breathes computers since childhood and dedicating part of my freetime on continuously improving my skill I have an edge over who do this without much passion or even reluctantly and I say this without wanting to be an èlitist gatekeeper, everyone has to work and tot everybody as the privilege of being passionate in a skill which nowadays has so much market1
Is it just me or do people sometimes do major refactoring not because it needs to, but purely because they are inheriting old code and can't be bothered to understand it5
How do you deal when you are overpromising and underdelivering due to really shitty unpredictable codebase? Im having 2-3 bad sprints in a row now.
For context: Im working on this point of sale app for the past 4 months and for the last 3 sprints I am strugglig with surprises and edgecases. I swear to god each time I want to implement something more complex, I have to create another 4-5 tickets just to fix the constraints or old bugs that prevent my feature implementation just so I could squeeze my feature in. That offsets my original given deadlines and its so fucking draining to explain myself to my teamlead about why feature has to be reverted why it was delayed again and so on.
So last time basically it went like this: Got assigned a feature, estimated 2 weeks to do it. I did the feature in time, got reviewed and approved by devs, got approved by QA and feature got merged to develop.
Then, during regression testing 3 blockers came up so I had to revert the feature from develop. Because QA took a very long time to test the feature and discover the blockers, now its like 3 days left until the end of the sprint. My teamlead instantly started shitting bricks, asked me to fix the blockers asap.
Now to deal with 3 blockers I had to reimplement the whole feature and create like 3 extra tickets to fix existing bugs. Feature refactor got moved to yet another sprint and 3 tickets turned into like 8 tickets. Most of them are done, I created them just to for papertrail purposes so that they would be aware of how complex this is.
It taking me already extra 2 weeks or so and I am almost done with it but Im going into really deep rabbithole here. I would ask for help but out of other 7 devs in the team only one is actually competent and helpful so I tried to avoid going to him and instead chose to do 16 hour days for 2 weeks in a row.
Guess what I cant sustain it anymore. I get it that its my fault maybe I should have asked for help sooner.
But its so fucking frustrating trying to do mental gymnastics over here while majority of my team is picking low hanging fruit tasks and sitting for 2 weeks on them but they manage to look good infront of everyone.
Meanwhile Im tryharding here and its no enough, I guess I still look incompetent infront of everyone because my 2 weeks task turned into 6 weeks and I was too stubborn to ask for help. Whats even worse now is that teamlead wants me to lead a new initiative what stresses me even more because I havent finished the current one yet. So basically Im tryharding so much and I will get even extra work on top. Fucking perfect.
My frustration comes from the point that I kinda overpromised and underdelivered. But the thing is, at this point its nearly impossible to predict how much a complex feature implementation might take. I can estimate that for example 2 weeks should be enough to implement a popup, but I cant forsee the weird edgecases that can be discovered only during development.
My frustration comes from devs just reviewing the code and not launching the app on their emulator to test it. Also what frustrates me is that we dont have enough QA resources so sometimes feature stands for extra 1-2 weeks just to be tested. So we run into a situation where long delays for testing causes late bug discovery that causes late refactors which causes late deliveries and for some reason I am the one who takes all the pressure and I have to puloff 16 hour workdays to get something done on time.
I am so fucking tired from last 2 sprints. Basically each day fucking explaining that I am still refactoring/fixing the blocker. I am so tired of feeling behind.
Now I know what you will say: always underpromise and overdeliver. But how? Explain to me how? Ok example. A feature thats add a new popup? Shouldnt take usually more than 2 weeks to do my part. What I cant promise is that devs will do a proper review, that QA wont take 2 extra weeks just to test the feature and I wont need another extra 2 weeks just to fix the blockers.
I see other scrum team devs picking low hanging fruit tasks and sitting for 2 weeks on them. Meanwhile Im doing mental gymnastics here and trying to implement something complex (which initially seemed like an easy task). For the last 2 weeks Im working until 4am.
Im fucking done. I need a break and I will start asking other devs for help. I dont care about saving my face anymore. I will start just spamming people if anything takes longer than a day to implement. Fuck it.
I am setting boundaries. 8 hours a day and In out. New blockers and 2 days left till end of the sprint? Sorry teamlead we will move fixes to another sprint.
It doesnt help that my teamlead is pressuring me and asking the same shit over and over. I dont want them to think that I am incompetent. I dont know how to deal with this shit. Im tired of explaining myself again and again. Should I just fucking pick low hanging fruit tasks but deliver them in a steady pace? Fucking hell.4
Can one consider, retyping someone's project for a working application: commenting the uncommented and refactoring code a hobby or just a waste of time?2
Anyone moved from GraphQL to tRPC? Thinking about doing that. I wonder about the struggles I might face while I do the refactoring.6
I am so grumpy today. I like SCSS, but to make it more flexible like toogling dark-light mode are so difficulty to implement. Now i have to refactoring my class and follow what SO suggested. I hope it work!1