AboutI hate everyone and everything. But, above all, I hate Laravel.
Joined devRant on 3/12/2019
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
Someone at this point MUST have realized this was excessive, and this someone kept going nonetheless9
Coding lessons 101, it shouldn't be that fucking hard to understand what a pointer is but that's where we currently stand12
I want to know the name of the evil mastermind who once conceived the "literal" function in Sequelize.
- You design a method to insert pieces of raw SQL exactly the way they are written, no further processing
- You release this method, you call it LITERAL to make sure people know its intended purpose: it is used to insert LITERALLY everything you write, nothing more and nothing less
- Then make sure this "literal" method changes the fucking case of column names. Because that's what "literal" means in the head of this rabid animal: you arbitrarily change the code written by the developer
WHY ARE ALL AR ORM DESIGNED BY FUCKING ANIMALS
ELOQUENT IS TRASH, SEQUELIZE IS TRASH, TENS OF DEVELOPERS AT WORK TO ALCHEMICALLY CREATE THE MOST ROTTEN CODE THEY POSSIBLY CAN, BECAUSE YOU MUST NOT BE ALLOWED TO WRITE ANY QUERY MORE ADVANCED THAN "SELECT * FROM users WHERE id =1", NOT A FUCKING SHRED OF DOCUMENTATION AND 16 MILLION LAYERS OF ABSTRACTION TO MAKE SURE EVERY BUG FUCKING STAYS THERE, DON'T YOU DARE TO USE A JOIN, DON'T YOU DARE TO TREAT A DMBS LIKE AN ACTUAL FUCKING DBMS INSTEAD OF A HOT STEAMING PILE OF METHODS IMPLEMENTED BY MONKEYS.6
+++ THEY ARE WRITING TYPE DEFINITIONS +++
THEY ARE UNDOGGING THEMSELVES. THIS IS NOT A DRILL: THEY ARE LEARNING SOME GOOD FUCKING PRACTICES15
Voice call with the whole dev team
Former team leader: Yeah, basically we stopped using RxJS because it ended up being too complicated, every minor problem required so much code to solve :(
IHateForALiving, extremely loudly: WELL WELL WELL, GOOD FUCKING MORNING, SUNSHINE3
MICROSERVICES ARE NOT A SUBSTITUTION FOR GOOD DEV PRACTICES, IF YOU WERE A WERECODER BEFORE MICROSERVICES, A MIGRATION WILL NOT TEACH YOU/YOUR TEAM HOW TO CODE.4
> barges in
> slams massive unintelligible PR on the table
> fixes a bunch of tickets all at once
> won't explain how tf it works, it just does
> refuses to elaborate further
- TeamLeader1: Noooo, classes in JS are fake because here and there, in NodeJS they work differently from the browser because here and there, I know it
- IHateForALiving: I'm betting 50 cents against 50 bucks that you're wrong. You in?
- TeamLeader1: Uhm... no, I don't feel like betting against you about technical issues :(
It's been a months long journey, but it finally looks like we're getting somewhere.2
THE TALE OF THE CRAZED VISIONNAIRE
Once upon a time some masochist woke up and snorted a gallon of glue. "I NEED PAIN", he shouted, and then proceeded to hammer down his own cock over an iron anvil, in an effort to uncover the most intense pain a human could experience. And yet even such a punishment was not enough, for our pain-starved hero thirsted for even higher heights. "This hammering can't satisfy my spirit", he proclaimed; "I shall find ever greater pain than what little solace these tools can provide, but it's much too hard a task for a single mortal to complete in one lifetime. And lo, I will gather around me the bravest and uncover the intense sorrow no human has ever experienced before!". And for his journey he found himself a loyal fellowship, all striving to find the ultimate pain a mortal can experience.
"But who could be crazy enough to follow a glue-fueled schizo who hammers their own genitals?", you might stupidly ask. But why, the JS community of course.7
> TeamLeader1: I just discovered SQL is actually super fast! The low responsiveness I've experienced comes from our ORM!
> IHateForALiving: well of course SQL is blazingly fast. SQL has been refined by the best engineers in the world for the past 50 years, its performances are unparalleled for everything you could possibly need, unless you want to scale REALLY big. Sequelize, instead, is an Active Record ORM, so it's bound to struggle with huge amount of data, because every single row will get attached a significant amount of black magic to make sure everything syncs correctly. Why is that?
> TeamLeader1: I have a problem with this frontend component, it doesn't allow pagination. I tried downloading the whole DB to bypass that, but the ORM is slow... so I will bypass the ORM and download the whole table with a raw query. Look at that! It works like a charm, it's super duper fast!'
This mf is downloading some 35 thousand rows every time some user loads a page because he doesn't know how to paginate the fucking table with Angular, there's no way these people are real.12
TeamLeader2: why did you rate this task so high? It should be easy enough
TeamLeader1: you guys have never worked with Angular. We have just started using it seriously and it's really complicated, I know it looks easy from the outside but trust me this whole framework requires a lot of work even for trivial tasks
What's that I hear in the distance? A phone ringing? Someone better pick that up, because I FUCKING CALLED IT
I hate so very much about so very many things, I forget some of the things I love.
And what I love is small lines of code that reveal something about their developer. This? This I love to see.
Some guy here studied C at university, decided he liked it so much he would port it over to JS. Absolutely pointless effort, but he decided he would do it nonetheless. The code is clean, documented, just with this little quirk and I'm honestly smiling. You rock, buddy, whoever you are.2
The fog of war over all that happened with my change of team is starting to dissipate.
3 people were involved and there were 4 different versions of the whole situtations, but from what I've been able to collect it looks like the company is expanding and one of the mail KPI for the current team leaders is how good they are at creating a NEW generation of team leaders, to take care of the new entries.
My previous team leader told me about all these new growth perspectives and the junior entries I could manage, knowing very well of the desire I have previously expressed of being a senior dev with my small group of juniors to teach.
I declined the offer, stating that this whole year has been exhausting. Every single time I've tried anything (using modules for new components on our old web client, tsdoc to document our types, suggesting technologies like ANYTHING BUT ANGULAR AND MONGO, telling how removing down migrations was a retarded move) my suggestions were either shrugged off or flat out refused. Let alone how every time I was proven right, except for angular but give it time and that will bite their tail as well.
Don't get me wrong: they are well withing their right when they take all those decisions, and more. But I DO NOT PLAN on selling a plethora of bad decisions to a new stack of devs as if they were the gold standard.
"I understand your reasons; you, as a company, need a well coordinated team all running towards a goal; loose cannons are harmful.
But now I need you to understand me: I do not agree with your technical direction. I never lied before and I will not start now. Promotions don't matter nearly as much as my integrity, and integrity in my world means speaking up about problems. Your position is perfectly valid, but mine is as well and they can't be reconciled. If I were you I'd make myself a favor and make sure IHateForALiving doesn't become a team leader; given your direction, I'm not the man you want right now".
As mentioned, one of the KPI for team leaders is how succesfull they are in finding new team leaders, and trying to turn me into one didn't end well; I love sharing knowledge, but being honest to myself is far more important to me. So this meant my previous team leader failed in a very big task, and thus was demoted? At the same time, I've been there for 2 years now so they're not really eager to replace me, but I'm under strict examination too as of now.5
Just been moved to a different team.
I talked to the old team leader, the new team leader and the CTO. Those are 3 people and I got 4 conflicting explanations.
I love angular, a fucking hello world with a config file and some auth headers takes 2 fucking days to get done.6
Applying for a new job and got an assignment for a quick dashboard as a test, whoever designed the HTTP client in Angular should be thrown down a fucking building.12
> ticket comes, new feature is requested
> create the new feature from scratch. Code is neatly splitted in files and methods, each with clear responsibilities
> every method is documented, there are clear service layers for the business logic, which resulted in controller having 10 lines of code, give or take
> commit the whole code, everything works
> check the develop branch today, team leader littered business logic in the controllers because "the codebase is a mess anyway"15
THE TYPESCRIPT DEFINITIONS SAGA CONTINUES
> IHateForALiving: so, I don't really know which field we're supposed to use here, but that's your entity I'm working on, so...
> TeamLeader2: wait, what is this? Why does your code have autocomplete?
> IHateForALiving: Every time I worked on some parts of the code I've been writing some type definitions along the way, and it's adding autocomplete if you type hint your code... but I've been told not to write them anymore, so I stopped
> TeamLeader2: But why tho? It's so fucking handy
TeamLeader: I need you to stop disagreeing with the decision of the management, the people in there are taking their decision for a reason.
IHateForALiving: When integration tests were failing, the management decided to comment out the ingration tests; god knows how many bugs slipped by.
When users had problems with the idiotic migration process the management designed, the management decided to remove down migrations; it took two weeks before the QA team started screaming, as all their machines were filled with garbage data.
I was writing type definitions for my code, you removed it. You effectively ensured the only person capable of working on that particular piece of code would be me.
I have been proposing for 8 months to make a unified scheduled jobs system, you all decided to create at least 5 different -and incompatible- implementations, at least 4 of them are total garbage with setTimeout, there's no way to ever unify them and God willing they never break, if they do there's NO WAY to find out even where tf they're hidden in the code.
Every time you were making one of those bad decision I was the only one warning you of the problems you were creating. The idiotic change of the day is going MongoDB+Angular: I can keep a low profile if you want, but when this blows up you can be damn well sure I'll handle my 2 weeks notice because there's no way on earth I'll be stuck with the aftermath of you lot taking technical decisions you are clearly unable to manage.11
team downloading a library to solve in 12 hours problems I could code myself out in 15 minutes, complication as a service at its best.5
- Team_leader_1: I know you're a frontend developer, but trust me NodeJS has threads :) sync operations don't block the main thread :)
- Me, very ready to dab on 2 condescending little fucks:16
IHateForALiving: I created a trigger on the model, every time you perform a save it should fire an event. You're calling the same methods I am, and the trigger is NOT firing. Are you sure we are running in the same process?
TheTeamLeader: I'm manually starting this whole piece of code in your same process, there must be something wrong on your side if it's not working
90 minutes of debugging later
TheTeamLeader: there's the thing! Your hooks are registered in a separate process, of course they are not firing
> TheSmartGuy: listen, IHateForALiving, I know you're a frontend developer, but here in the backend...
Just so we're clear: I'm NOT a frontend developer.
I'm a full stack developer.
I just so happen to always end up working on the frontend because you bunch of handless monkeys wouldn't be able to write a webpack config file if your life depended on it.
It's not you taking care of my inability to work on the backend, it's me being relegated to using only half of my skills because you ugly things refuse to evolve. I could take your job in a breath, I wouldn't trust you with writing a css selector.7
Update on my old rant: I started writing type definitions for our project (it's basically a chunk of separate files where you document the objects you use; typed languages have this out of the box, js doesn't and it may become useful depending on the size of the project). Our codebase is reasonably big -not complicated, but big- and I felt like I was losing track of all the properties\objects\usage\comments\whatever. So I iiterally wrote some ts interfaces: properties with name and types, that's it, so you know what you're passing around.
Proposal was denied, I'll have to delete the documentation; "keeping the doc updated is going to require more work".
Me: Ok, but what am I supposed to do when I need to interface with your code? Run the debugger and figure out what the fuck you guys are passing around?
Team leader: Yes 😊6
Me, perfectly relaxed after 2 hours of conference call (the voices are telling me to feed my colleagues to the ravens and they're winning)1
Vinegar didn't work, time to test honey.
Let's see if autocomplete is nice enough to persuade some of these mongrels to evolve from dogs to chimps and actually document the code they write.1