Recently, I was jolted into a moment of reflection: it's been 10 short years since I launched my professional programming career. A dusty old Google Photos snapshot of me grinning in front of a giant company logo suddenly reminded me of those days when I felt like I was conquering the world. Ten years may be pitifully brief—or an eternity, depending on who you ask—and to me, these years have felt like a wild, unpredictable blend of both. In this post, I'll share a few observations on software engineering and life in general—opinions that might make you raise an eyebrow, agree wholeheartedly, or perhaps both. But hey, if nothing else, I hope that in another five or ten years you'll look back on these musings with a knowing smile as the winds of change blow.
Over Engineering
My first "application" was a calculator for a silly idle XP game—backend in PHP, frontend in plain HTML/JS. No fancy frameworks, just raw code. It worked fine and only took me a weekend from the idea to the moment it was live on a server. That experience hit me later when I bootstrapped a new app idea only to realize it ballooned into megabytes of binary bloat before I'd even written a line of actual app logic. A little voice in my head reminded me, "This was supposed to be a weekend project—now you're wrestling with a framework for weeks!" And it's not just my projects; countless examples out there show we’ve lost our edge when it comes to keeping applications lean. With today’s hardware more than capable of handling bloated apps, why not aim for efficient, single-purpose, open source software instead? We need tools that favor simplicity and push back against anything that complicates the process.This also applies to platform engineering. If you're setting up a personal website, you likely don't need a Kubernetes cluster. This site even is running in a Docker container which is probably overkill..
Ego
Have you ever scrolled through LinkedIn, only to find a post proclaiming, "I'm the greatest, and here's why!"—only to later discover the bold claims are either exaggerated or flat-out false? This mindset is rampant in the tech industry. Everyone aspires to be the next Steve Jobs or Sergey Brin, but what happened to simply building cool software because you loved the craft—not chasing fame or fortune? When I was heading into college, I kept hearing, "Oh yeah, Computer Science is where the money is!" and "There are tons of jobs in the US!" That hype inevitably attracted people who, frankly, didn’t care about the art of coding, and now it shows. Nearly five years out of college, aspiring engineers find it tough to land a job—entry-level positions are nowhere to be seen because they’re being shipped overseas or replaced by so-called "vibe coders" and AI assistants. Whether this trend will last is up for debate.
Languages & Frameworks
Use the tool that best fits the job. Why use a power drill to cut wood or screw in a switch plate? Sure, you could—but a saw or screwdriver is a better choice. We need to be mindful of our biases. I love Golang, but it’s not the right fit for writing an Android app. Heck, this website is built using plain HTML/CSS. Could I have used something like React, Astro, or even Ember Octane (my favorite)? Sure, but they wouldn't be the right tools for this site. For now, simple HTML/CSS does the job just fine.
Getting Things Done
I've encountered code that was ingeniously engineered—but when I discovered it took five times longer than estimated, it became infuriating. Does cranking out technically impressive yet overly complex code make sense, even if it's not costing you extra on paper? Sometimes, yes; most of the time, no. Keep It Simple, Stupid. If your code can't be understood by a Junior Engineer or takes way too long to develop than expected only, you've missed the mark. Ultimately, programming is about getting things done, and this kind of overengineering only hurts your teammates and employer.
Hustle Culture
This topic is all the rage: work non-stop, code day and night, and you'll make it big! But I've got news—that simply isn’t true. We're human, after all; you need sleep, exercise, and proper food. If you’re glued to your computer while fueling up on Taco Bell and sugary drinks, you’re bound to crash eventually. I've learned this lesson firsthand, and so have others—some last years on this pace, while others burn out in mere months.
That said, know when to buckle down. If you've messed up code that's delaying a deadline, then it's time to grind. And if you're at an underfunded, lean startup, expect long hours. Just remember that everyone has their limits.
Wrap Up
You might be thinking, "Wow, what a cynical take on software engineering!" And you’re partially right. Over the past year, while job hunting and stepping into the real software engineering world, I've been weighed down by these issues. But here's the flip side: while I've managed not to pick up the negative traits, I did absorb some positive ones along the way.
Be kind to everyone, we’re all here just trying to live our lives.
Help others—not just show them how to code or complete a task, but teach them how to fish. Don’t shy away from saying, “I won’t always be around to help, so let me show you how to help yourself.” Some of the most valuable skills, like debugging and research, rarely make it into educational settings.
Never stop doing personal projects. Personal projects are things that remind you why you love programming. Our industry is kind of unique in this way, where you’d come home from a day of programming just to program some more.
Note the nuance here, you don’t need a solid green GitHub activity bar! Just always have those projects to experiment on.
Have multiple hobbies, personal programming projects are a must, but find other things that make you happy. For me I love running, woodworking, and gardening. Some of my biggest breakthroughs have been while I did one of these hobbies.
I remember in the early COVID days I was working through a coding problem and just couldn’t crack it. Went for a run during my lunch break, then came back to work on the code and everything just clicked.
Keep learning new things. It can be in programming or anything else. Programmers are wired to be curious, so feed your brain!
Take criticism with grace. This was tough for me early on—I used to clam up and get defensive, taking feedback as a personal attack. Now, when you receive criticism, take a deep breath. Open your editor and draft a response, then delete it. Instead, go talk to the person or call them to discuss what went wrong, ask questions, reflect, and then move on.
Do the right thing. Programmers hold considerable power, which can easily inflate our egos. Stick to a strong moral compass, and if you're ever in doubt, get a few opinions. While doing the right thing might be inconvenient, it lets you rest easy.