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 tell you that the way new engineers write code, and the fact that nobody bats an eye, is terribly disturbing. This is my ode, to Modern Software Engineering, Part 1
Before dunking on everyone, like Master-Yi, I feel that I need to preface this with the following disclaimers.
1. I don’t care about your opinion. If you disagree, I don’t care. if you agree, I don’t care.
2. This love letter applies to actual work in companies. If you work for your side project, I couldn’t care less for what you do.
3. Everything I write and state in this article represents me, myself, and nobody else, person or corporation. It’s not a hit piece, it’s a shit-piece.

I am going to briefly touch on three topics, for which I might do a full sized article in the future. When/if that happens, the article will be updated with relevant links.
So let’s get started, with the first thing on my list:
Monorepos vs git flow vs trunk based vs don't be a dick git strategy
Ah, monorepos, the shithouse of modern software development. Stealing Borrowing a definition from the internet “A monorepo is a single centralized storage repository for all your application and microservice code. Unlike traditional, decentralized version control strategies where each project or service has its own repository, a monorepo encompasses the entire codebase in one repository”. This essentially means that your whole codebase exists within one git repository. If you don’t know what that is, maybe this article is not for you.
I’ve heard it all, it’s easier to work with, it’s easier to maintain, it’s easier to avoid duplicate code, it’s easier to SHUT THE FUCK UP. SHUT IT. NO. SHUT UP. Let me tell you what it is easier to do with a monorepo. It’s easier to clone your whole codebase. that’s it. It’s obvious that anyone who thought that monorepos are the future, has not in fact tried to build their service through a ci/cd pipeline. They usually have some slave devops/backend engineer, who is sweating his ass off trying to configure the pipelines with the new and fancy structure.

Oh you made a typo change to a file? Sure let’s build the single module from the repo. The runner node will however have to clone the whole repository to actually do this, but who cares. It’s the cloud right? Oh you need to deploy now? Yeah you gotta make sure you deploy only the relevant parts that were changed. Have you actually tried to set up your pipeline to do this? What? You are a Frontend/Mobile/Prompt engineer and you don’t care? You’re fired (from the imaginary company I’m running in my mind).
Oh and good luck doing merge conflict resolution and reverting commits. Oh I forgot, someone will help you with that.
There’s a reason people who write code since the beginning of time started converging towards git flow and trunk based development. I’m not going to do the whole explanation of what those are, but I am going to give a brief intro into my thoughts.
You are responsible for your code. You are responsible for the building, provisioning, deployment, and running of your application. If for whatever reason that is not the case, you have no opinion on the matter. If someone has to do things for you, your opinion does not matter. If you think you know better, you don’t, I do.

Which conveniently brings us to the next talking point:
Pushing directly to main/master
WHAT. THE. FUCK. Bro do you think this is a game? Do you think you are a fucking fellow at google and you know how things work? No you idiot sandwich you don’t. I don’t. Nobody does! Modern software engineering has become so arcane that you don’t even know what the fuck your framework is doing on the background. And you think that pushing to main/master is fine? Congratulations, you are fired. You are probably working in a company that has RISKS to mitigate. Ransomware, DDOS, developers trying to sneak in bitcoin miners on cloud resources, and all kinds of shit. But no, you are above that, right? So you can do it. NO DUDE YOU CANNOT.
There is a reason why policies are in place. Cyber security is an increasingly important topic for literally everyone, companies and individuals. The first and most important things that one must do to make sure that their stuff is somewhat protected is, 1. set up proper MFA, 2. Set up proper VPN access, 3. Make sure that what runs on production is properly checked by someone. I am going to make the assumption, (logical one) that whatever is on your main/master branch is what’s running on production. So guess what, IF YOUR CODE IS NOT REVIEWED, IT SHOULD NOT REACH PRODUCTION. It’s not your ass on the line if things go bad, and your super cool fix breaks everything, because of your mistake or not. Unless you own the company, then do whatever you want, it’s your dime.

Testing
I am going to close this rant opinion piece with testing. I am only going to give you this post I saw on linkedin.

My honest reaction to this post was this

This GOD of a man, who I did a terrible job of covering his identity and I hope that you find him, who claims to be a SOFTWARE DEVELOPMENT TUTOR, straight up says, fuck your tests boy.
Check this out! “I don’t write tests anymore […] I haven’t noticed any difference in the amount of bugs shipped”. Yes, you haven’t noticed, BECAUSE YOU DON’T TEST, JESUS. HOW CAN YOU BE SO THICK.
And then he goes on to give us the permission to write tests if we actually work on an enterprise application at scale, or building a critical backend or library. Ok cool, then I guess I don’t need to write, for example sql injection, or performance tests if the application is not a critical backend.
If you do not understand the necessity for testing, I am not sure you should be an engineer higher than Junior grade.
Closing off
I still want to talk about how ChatGPT is the best thing that has happened to software development, because it will separate the people who should have imposter syndrome, and those who should just go to therapy, and do a bit on how you should write code for a corporate environment, but for the time being I’ll leave it at this. I dunked on you enough.
Till next time!
p.s. Don’t trust LinkedIn gurus.