Imagine you’re a hairdresser.
A client comes in, they want a haircut and to dye their hair brown. You do your thing, snip snip, apply the dye, and boom—pink hair. The client is, understandably, upset. "How did this happen?!" they demand. You show them the box—clearly labeled "Chestnut Brown." No mention of any pink hijinks.
You check the manufacturer’s website. Nothing. You ask your hairdresser friend. They’ve never heard of this before. You dive into the deepest, darkest corner of Reddit’s “hair professionals” forum. Three days later, user "69xxxhairdresser_chadxxx420" finally delivers the answer:
"Oh yeah! That dye turns pink if the client has three children and it’s the 12th of March. The company released a 'dye fixer,' just slap that on, problem solved."
Welcome to software engineering.
This is your life now. Every problem is weirdly specific, environment-dependent, and somehow tied to conditions no one documented. Every day is a scavenger hunt, except the clues are written in invisible ink and the last guy who found them left no notes. But that’s only the beginning…
Business and PMs: The Eternal Shape-Shifting
Nobody knows what they want, but they’re sure it needs to be done by Friday. You build Feature X based on a detailed spec, only for the business team to realize, mid-demo, that they actually wanted Feature Y. Maybe you could just, you know, tweak it a little? A full rewrite later, they decide Feature X was better after all.
You see, in business meetings, they will sit there, chin resting on clasped fingers, and say things like: "We need it to be fast, but also highly configurable. Scalable, but lightweight. Flexible, but rigid. And, ideally, we’d like a prototype tomorrow." And just when you think you’ve got it all figured out, they’ll hit you with the classic: "Can we actually pivot and go in a different direction?" Of course, what they mean is, "Throw everything away and start from scratch."
Then comes the best part: "Why is this taking so long?"
Because, Karen, software development is not the same as ordering a latte with oat milk…
UX Designers: The Aesthetic Dreamers
UX designers live in a utopia where users are calm, rational beings who love elegant interfaces and appreciate whitespace. In reality, users are feral creatures who will try to log in via the search bar, rage-click on everything, and call tech support to ask why their keyboard doesn’t have emojis.
"Why do we need a ‘Submit’ button?" the UX designer asks. "What if we just make it an icon—maybe a feather? No text, just vibes."
You, the lowly developer, stare at the wireframe in despair. You try to protest: "But people won’t know where to click."
"That’s the beauty of it!" they reply, eyes gleaming with artistic vision.
Then launch day comes, and the complaints flood in. Nobody can submit the form. Users are confused. Your inbox is on fire. But the UX designer stands firm: "They just need to learn the new paradigm!"
Ah yes, let’s retrain 5 million users instead of adding a damn button. Genius.
The Butterfly Effect
You ask a junior dev to fix a typo in the footer. Suddenly, your API is returning null for everything, the login screen is broken, and Jenkins won’t stop screaming in the group chat. Turns out, the fix involved touching 50 files because "it made sense at the time."
But let’s not be too hard on the juniors. They’re just excited, eager, and sometimes a little… overly enthusiastic. You give them a simple task, and two hours later, they proudly announce they’ve “optimized” the entire codebase. The optimization? Converting all functions to async for "future-proofing."
You try to stay calm. You really do. But deep inside, you’re screaming: "WHY WOULD THE FOOTER TEXT NEED TO BE ASYNC?!"
And so, you spend the rest of your day sifting through 27 merge conflicts, explaining why a CSS file shouldn’t contain 12 promises, and trying to roll back their "optimizations" without making them cry.
The Relentless Firehose of New Stuff
Software engineering isn’t a job, it’s an arms race. The moment you catch up, something new appears. Thought you mastered React? Say hello to Remix, or Solid, or Astro, or some other JavaScript framework that will be obsolete by next Tuesday. Backend devs, don’t get cocky—your beloved architecture is outdated before your coffee cools.
Got a GitHub full of personal projects? Nice. Too bad companies expect you to already be proficient in whatever they’re using—learning on the job is for chumps. If you haven't been working with the latest JavaScript framework before it even left beta, you're basically unemployable.
Oh, and don’t forget Webpack Module Federation or literally whatever new thing that nobody uses. Because nothing says "fun" like debugging why two micro-frontends suddenly decided they no longer recognize each other at 4:59 PM on a Friday. If you don’t know it, good luck passing that interview—where, by the way, they’ll also ask if you’ve implemented a monorepo in Bazel, just to see if they can crush your soul a little further (the questions are based on true events).
The Legacy Code Mines
"Why is this built in PHP?" Because someone in 2009 thought it was a great idea (what else would have it been either way). And now, thousands of users depend on it, and your job is to patch it with duct tape while everyone else pretends it doesn’t exist.
Personally, I have never had an issue with PHP, never even understood why people hate it so much. The only truly chaotic thing about it is that it's the wild wild west.
But then again, welcome to JavaScript, where things are equally as lawless. 25 different open-source frameworks, but your company will decide to build the 26th or modify the 14th because "Angular is simply not capable of handling our extremely special use case." Special use case? You mean the same kind of CRUD app that’s been built a million times before? But no, let's create our own compiler because we must be different, we must be innovative!
And now, congratulations, you've just made onboarding new developers a waking nightmare because nobody outside your company has ever seen whatever monstrosity you’ve cooked up. And when it breaks? Good luck finding Stack Overflow answers because guess what—you're the only ones in the world using it!
Interviews: The Gatekeeping Circus
Recruiter: "We’re looking for someone with 10 years of experience in a framework that’s been around for three."
You: "Uh... I have eight?"
Recruiter: "Not enough."
Also, be prepared for that one interviewer who insists on live-coding an algorithm you will never use in real life, while staring at you like a disappointed parent. "So, can you implement Dijkstra’s algorithm using only a whiteboard and sheer willpower?" No? Then you’re not a "culture fit."
Good for you, Chad. You escape your family responsibilities and spend all your time buried in software engineering blogs, reading about niche optimizations and debating JavaScript runtimes on Twitter. Meanwhile, the rest of us would like to touch grass occasionally, maybe spend time with our kids, or—I don’t know—not dedicate our entire existence to the latest fad tech that will be abandoned in six months.
But sure, let’s make "passion for coding" the determining factor of our professional worth.
Actually, we have written a whole article about interviews that you can read here:
It dives deeper into the absurdity of modern hiring practices and the hoops candidates are expected to jump through.
So, Still Want to Be a Software Engineer?
As I am getting older, I find myself questioning my love for software engineering more and more. Do I really want to spend another evening debugging some obscure state management issue when I could be hanging out with friends, woodworking, or doing literally anything else that doesn’t involve questioning my life choices?
The thrill of learning a new JS framework used to excite me—now it just feels like an unpaid, never-ending internship for a company that doesn’t even exist yet. And for what? So I can regurgitate it in my next interview where after doing this for almost one and a half decades Chad grills me about obscure compiler optimizations I’ll never use in the real world? Cool.
But despite it all, there is something undeniably rewarding about this job. It’s an art—an intricate dance between logic and creativity. It’s the satisfaction of creating something from nothing, of watching lines of code transform into something that genuinely helps people. It’s problem-solving in its purest form, turning chaos into order, and making life just a little bit easier for someone else. And maybe, just maybe, that makes all the frustration worth it.
Like one of the projects I actually managed to finish, it’s tiny, but it solves an issue in an intuitive way, people actually do use it, and I’ve even received feedback of appreciation. 👉 Johari Window
Because at the end of the day, we don’t just write code—we build things that impact lives, simplify the complicated, and make the digital world a little more functional. And sure, there’s always another Chad waiting to test our patience, but that’s part of the journey too.
So tell me, how does it feel for you to be in this industry?
What’s your wildest story?
What does still make you happy and fulfilled?
Drop a comment, let’s share the madness.
This is such a great breakdown of software engineering! It’s rare to see the complexities of the job explained in such a clear and witty way. Even for someone outside the industry, this makes total sense✨