Hi, some of you may know me, but most of you probably do not. My name is Vasileios, and I’ve been a software engineer for more than a decade. I’ve worked in every kind of company you may imagine, in terms of size, industry, etc. Today I am here to continue my tirade towards the modern equivalent of script kiddos. This is my ode, to Modern Software Engineering, Part 2
In case you missed the first episode of this series, please take a look at Part 1.
Before unequivocally proving that I am right, I feel that I need to preface this with the following disclaimers.
- I don’t care about your opinion. If you disagree, I don’t care. if you agree, I don’t care.
- This eulogy applies to actual work in companies. If you work for your side project, see point 1.
- Everything I write and state in this article represents me, myself, and nobody else, person or corporation. If you rat me out to HR I am going to find you and I am going to git revert you.
Tonight, on Top Gear:
- James creates a studio Ghibli picture and burns down half a forest
- Richard names his variables ijk and peepee
- and I shit on both.
James: ChatGPT - The worst thing to happen since the Plague.
I am sure you’ve heard of ChatGPT, your mom has heard of ChatGPT, damn I’m sure your dead Great Grand Marnier has heard of ChatGPT. Or Cloude Strife, or YaMA, or Mistrial, Deepshit. You get the point. And I’m also sure you’ve used ChatGPT in a way or another. If not, congrats, you are properly autistic 👍. From now on, when I am saying ChatGPT I am referring to all of your dipshit rubberducks with an opinion formulated by statistics. I am going to spread this over a couple of subtopics, because fuck you I am like that.
First up Software Engineers using ChatGPT. Have you ever had to write a piece of code that sounds so mundaine that you decided to offload this to your favourite ChatGPT? And what a great job it did, if it worked…
Let me tell you something you really don’t realize. ChatGPT is an APPLIED STATISTICAL MODEL. This means, that based on the input data used to create the model, ChatGPT will calculate the best possible response based on your input query. To demonstrate what this means in essence, take a look at Figure 1. This represents a Normal distribution, a.k.a. bell curve. As you can see, it’s nice and balanced, and the most probable statistical answer is in the middle of the graph on the x axis. This means that if you have for example, quality of code on X axis, and availability of said code on the internet on Y axis, then ChatGPT will probably return the most average piece of code for your query. And that’s probably good enough to pass code review.
If only that was the reality… Let me show you Figure 2. What is the reality on the internet. This shows the ACTUAL distribution of code quality and availability on the internet, which is where your favourite ChatGPT got trained probably. If you are not totally stupid, you can understand that most of the code available publicly online is UTTER SHIT. And guess what the produced code is also going to be.
YOU GUESSED IT!
YOU’RE FIRED!
But that’s not all! Ever heard of ‘If you don’t use it, you’ll lose it’? Well it doesn’t only refer to your Clarinette skills, but also to your FUCKING BRAIN YOU DUMBNUT. I swear to god, I had the fortune to be a people manager during the peak of the ChatGPT hype, and let me tell you, it was not good. I had senior engineers start using ChatGPT as a cruch “just for simple stuff”, which then turned into, and I am quoting, “even ChatGPT doesn’t know the answer, I’m certain it is very complicated”. Well, it wasn’t. All that this “very complicated” matter was, was a FUCKING DECLARED VARIABLE in a FUCKING XML FILE. We are talking SENIOR LEVEL MOBILE ENGINEERS WHO FORGOT HOW TO READ DOCUMENTATION AND USE THE MANIFEST FILES.
And now you are gonna say “Oh boo hoo Vasileios, if it was so simple, why didn’t you do it yourself?”. Well I DID. I found the solution, I pushed for it to be tried, and I stepped in to stop this mess. WHAT THE ACTUAL FUCK?
So if you want to keep your job, damn, just outsource mundaine shit to your junior engineer. That’s why we invented them.
Now let’s keep going because, SHIT I GOT THINGS TO TALK ABOUT.
Mister engineer, have you ever pasted a piece of buggy code on your favourite T1000 impersonator, in order to have it kill John Connor? By that of course I mean identify the bug and tell you how to fix it.
WELL GUESS WHAT! You probably just violated a shitton of contractual agreements you have signed. Do you know what signing shit means? If not, MAYBE YOU SHOULDN’T BE CONSIDERED AN ADULT, I DUNNO.
All input given to AI models, WILL BE FURTHER USED FOR THEIR TRAINING.
And don’t try to catch me lacking with “But, uh, Vasileios, they promised they wouldn’t”, because you need to understand nobody gives a shit. They trained the models on public data without asking permission to, and will continue to train their models, because it’s a FUCKING WAR at this point. THE GLOBAL STABILITY IS FUCKING RELYING ON YOUR FUCKING IDIOCY. So yeah please don’t paste your codebase into a GPT program, for fuck’s sake.
On a final note about ChatGPT, and all relevant competitors. I need you to understand the environmental impact this has. Have you even tried to understand the amount of processing power needed for this piece of shit to spit out “1, 2, 3, 4, 5, 7, 8, 6, 10, 9” when you ask it to give you the first 10 real integer numbers starting from 1 ascending? I want you to imagine that everytime you type into this thing, a small forest is burned. So what do we do?
WE MAKE STUDIO GHIBLI PICTURES AND ACTION FIGURES, YIPEEE! FUCK THE PLANET
That’s my piece on ChatGPT for now. And I have not even TOUCHED vibe coding yet. Maybe next time, We’ll see how it goes…
Richard: Writing code for a corporate environment
Oh boy oh boy oh boy. Everytime I write these I feel like I’m doing therapy, only the therapist is also me, and I am always right. I like this.
So, writing code when you are working in a company is, to put it lightly, complicated, and many young engineers fall for the trap of “go fast, break things“. When our favourite android said that, the internet was not as it was. I need you to understand that since the inception of facebook, until now we have gone over 2 to 3 technological revolutions. From the introduction of Social Media, to everything being mobile first, to ChatGPT burning trees to teach you how to count to 10, things have changed.
With that in mind, it is important to understand that when writing code for a company, it is much more important to have proper hygiene than to go fast. But how do you practice good hygiene? I would say ask your Senior Engineers, but with the shit I see nowadays, I think it’s my responsibility to teach you, because they might ask ChatGPT. Let’s start with some basics, and some reasoning behind this.
Prefer readability over performance, although you can probably do both. Gone are the days when John Carmack applied magic numbers to perform Fast inverse square root (even Carmack left good comments though, as you’ll see below). Nowadays, thank god, we don’t have to do shit like this anymore. Unless you work for a really crazy company where every nanosecond, every nanometer, and every byte of L1 cache is imporant, stop writing code like you have a cucumber up your ass. Not kink shaming, you do you, but your code should be readable by all human beings, not only beings who like self exploration in the form of fruit (and yes, cucumber is also a fruit just like tomatoes, fuck you). On a side but relevant note, knowing that cucumbers and tomatoes are fruit is knowledge, but understanding that they do not belong in a fruit salad, that is wisdom.
On this parallel note, knowing that you can use multiple XOR gates to do parity addition which is probably faster, is knowledge, but understanding that you are a fucking asshole if you use xor instead of a + to add numbers, that’s wisdom. But why should you be wise. Well, for starters, because you haven’t worked with Reactive Java. If you had, you would just share the same opinion with me, but because 99% of you haven’t, let’s discuss! And with this just follow along and say I am right.
When writing code for a company, you need to ALWAYS keep in mind that in a couple of years you will not be the person maintaining that piece of code. You will have moved teams, companies, the company will have restructured, your code will be under the ownership of someone else, you will unexpectedly die from dysentery, and so on and so forth. You cannot expect that everyone has the niche knowledge you do. For that reason, it is important to write code that everyone will understand. Comments? Yes Please! Clear syntax? Absolutely! Function names that make sense? You’re getting me excited, oh yeah! Unit and Integration tests? EXPAND DONG!
Your code needs to be clear enough for someone from a different domain, department, team, to be able to read through your code and at least kind of understand what is going on. Write your code as cleanly as possible. I am not going to discuss how you can do that in detail, but the basics always apply. Try to have variable/function names that make sense. Apply a good design pattern like SOLID. Apply the practice of least indentation (no don’t push everything to the left as if it’s a word document Paouri I’m looking at you).
Sure, though, you probably understand comments, function and variable names that make sense, clear syntax. Why testing? Well that is obvious. As I said before, you are not going to be maintaining the code yourself in a indeterminate amount of time. This means that someone needs to be able to verify both that your SHITTY (all code is shitty) code works, AND to help them understand that THEIR shitty changes BROKE your SHITTY code. It’s a verification method that allows engineers check their ego. Don’t be the dick that says “I run the tests on my mind”. You don’t run tests on your mind, you barely can watch a youtube short containing AI generated content from reddit without having highway surfers taking half of the screen. Get a grip you asshole.
Conclusion
Your code is all shit. I reign supreme once again.
Jokes aside, please don’t do drugs, or ChatGPT. This shit will ruin your brain.
Next time we might touch on Vibe coding, Metal Gear Solid, or the Naked Gun Trilogy. Depends on how I feel about it
Till next time!
p.s. Don’t trust LinkedIn gurus.
