5 minutes
Encouraging Words To My Younger Self
Things suck if you’re in the early stages of your engineering career. The software industry is undergoing a massive change. AI is here and it’s here to stay. It’s going to change the way we do things, the way we work, and our expectations.
For months now, I’ve been seeing a slew of posts on social media, talking about the end of the engineering discipline. I can’t help but think how disparaged I would have been, seeing these posts if I hadn’t been in the industry for so long.
So, here are some words to my younger self, in the hopes you find some solace in them.
Is the syntax or basic act of writing code hard? No. It’s not. The act of writing code, is actually quite trivial. It’s just syntax, no more difficult than writing a sentence. Sure, you have to learn about the language, the semantics; but we did that as toddlers, we did it with something far more difficult: natural language.
We’ll touch on natural language later, but for now; we can write an isolated sentence that competes with the best authors of all time, I mean, everyone can. But, you know, that we’re never going to author a story as beautiful, agonising as Tolkien’s, Lord of the Rings. Competing on a small scale is absolutely useless when we’re talking about authoring a complex reality that’s completely abstract.
Let’s change the narrative a little bit, let’s move away from Tolkien and move into a realm we’re more familar with, at this point I’ve been building data intensive distributed systems for a long time, I cannot, and likely will not ever be able to convey my experience and knowledge into a single distillation as effectively as Martin Kleppman when he wrote ‘Designing Data-Intensive Applications’. I can get you 60 percent of the way there, but the magic is always in the last 40 percent.
Products are the same. It has always been easy to go from 0 to 60 when building a product, the last 40 percent however, is where all the complexity lives, and I’m not talking about when you’ve got the product to market, that’s a whole different ball game. I’m talking specifically about just building the thing. Code, in this instance, happens to just be domain in which you solve the problem and curate the product.
The product journey, takes far more than just the code, it takes people, culture, the mindset, the way you think, the way you work, the way you communicate, and the way you collaborate. That’s what you get paid for. You get paid to be empathetic to your customers, to solve the problems they’re facing without them necessarily being able to communicate what it is they actually need, Henry Ford said it best - “If I had asked people what they wanted, they would have said faster horses.”
That right now, my younger self, is the difference between you, the mentors, amazing engineers you aspire to be like.
The empathy, the problem-solving beyond the explicit requirements, the system thinking. That differentiates you, from the engineer you’ll become. You, my younger self are just starting on that journey. Right now, you’re feeling the weight of all this and you’re struggling to find your footing. You’re struggling to find your place in the industry. You’re struggling to find your way to the next level.
You’re struggling to reconcile that despite the hours you’re putting in, something is outputting 2x more tokens than you are in the same time frame.
But that doesn’t matter. Understanding what’s being written and understanding the things that aren’t actually being said; That’s how great engineering is done. It has always been the fundamentals that lay the ground work for great engineering. AI has it’s place, but it’s not a magic wand. The process of moving from the often ambiguous world of human needs and unstated requirements to clearer, more precise technical problems is the essence of engineering.
Your value, my younger self, lies precisely in your ability to bridge this gap: to translate the imprecise to the precise.
My younger self, what you need to be doing is focusing on the fundamentals. It’s not skipping over the fundamentals, thinking it’s not important to know how TCP works because an AI can spit out 400 lines of code for a TCP server faster than you can.
My younger self, I urge you to focus on the fundamentals. You owe it to yourself, and the work you’ll do in the future. You can’t control the incentives / constraints your day job puts on you. But when you find some time, and you’re doing your personal projects, remove AI from your writing experience. Take the time to write the code yourself, to understand it. There has always been a relationship between writing and understanding. Code is no exception, and right now it’s more important than ever to understand and there are no short cuts.
Sure, if you want to ask Claude the difference between big endian and little endian, do it. But don’t let it decide which one you should be using for your problem. The AI doesn’t know. You need to develop that understanding yourself.
AI is great at processing natural language, but its understanding isn’t perfect. Natural language is inherently complex. It’s more than just words; it’s sentiment, tone, context, and unspoken intent. These layers can bias an AI’s output or introduce subtle misunderstandings. Programming languages are precise mechanisms designed to solve precise problems.
Introducing more natural language into the problem set risks introducing additional ambiguity into the solution itself. Your role, my younger self, has always been and will always be to understand the problem, the tools, so you can disperse the risk of ambiguity.
So, my younger self, while the attention-grabbing statements on social media about ‘vibe coding’ might fill you with anxiety, remember this: your true craft, your enduring value, has never been just the code you produce. Understanding the subtle nuances, navigating the complex and imprecise – that remains more crucial than ever. If you continue to lean into this understanding, there has never been a better time to be a software engineer.