The Engineering Prime Directive
I was going to about what I think a good engineer does (or what they believe) and it turns out before you can talk about that, you've got to talk about what underlies everything else. I'm still working out the niceties of what I think, but I figured I'd add at least an attempt now.
First off, what's a Prime Directive? I'm cribbing this from Star Trek, but you can consider it a core assumption of behavior; a fundamental axiom that should underlie the rest of your behavior. So, for me, when I see a "good" engineer, their own Prime Directive typically lies somewhere in the same neighborhood as this.
Second off, who's this for? It's not for your company. It's not for your team. I'm intending this to be for you, the junior to mid-level engineer. I could care less (at least for the purposes of this post) whether or not this helps your current organization (and likely, it probably runs afoul of what they're trying to do).
What's (my) Engineering Prime Directive?
In everything you do, seek out the authentically hard work. There's no shortcut to the training and the growth it presents.
Ok, and? Aren't I supposed to be a lazy engineer?
Laziness is great! By all means, find things that can be automated and automate them. Avoid manual work where it makes sense! Find efficiencies! Squash inefficiencies!
...but sometimes doing hard work is the best way to build those skills.
(And paradoxically, I think over-automation and being too "lazy" makes for engineers overly obsessed with response times and cute metaprogramming techniques that make a codebase entirely too annoying to work in anyway)
Fine, so what do you actually mean?
Let's do some definitions. Defining things helps create shared understanding after all:
What's "authentically hard work"?
There's a lot of work that's hard for bad or dumb reasons. Some examples:
- It's hard to get buy-in from stakeholders or they flat-out refuse to do the "right" thing
- The tooling is really hard to use
- We're constantly beset with incidents and emergencies
- The codebase is really big, it's really fragile, it's really hard to understand, etc.
All of these things (and more!) make for hard work! But it's work that's going to build scar tissue, not muscle.
There's also a lot of work that's hard because we've decided to inflict on ourselves, such as:
- We're building a thing that doesn't have market fit
- We're building a thing that isn't fully specified
- We're building something that isn't easily supported in our language
Also hard work! But also, probably not something you want to make a career out of.
I have no cohesive definition of "authentically hard work", but I think it lies in these areas:
- It requires deep concentration and thought to accomplish
- There are no pre-determined paths or if there are, they are poorly trodden
- It's hard because the problem itself is genuinely hard, not because external constraints make it hard
I can probably count on one hand the number of times I've been afforded the chance to work on those kinds of projects, so you may not find these problems in your current role, or even your next.
Why should I seek it out?
Hard work, authentically hard work, forces you to do the following:
- Try, fail, and keep trying: this builds up "grit" and the ability to move past adversity
- Rely on multiple sources of information that haven't been widely connected yet: this builds up creativity and builds up your mental knowledge of how disparate fields could connect or are connected
- Require you to kill your beloved children: in other words, your favorite or your pet solution might not be the one that works – it builds an ability to be humbled and to move forward
- Enables you to do it again: once you know you can turn lead into gold, you find yourself being put into positions to do it again.
But above all of these things is the main reason I think it's worth it: the research, the work, the thoughtfulness of taking things and putting them together in novel ways is both what makes being a human worth it. Human beings, to mangle a phrase, are less human beings and more human doings. Why would we, full of logic and reason and emotion and creativity, not want to do the things that are challenging? Why would we not want to grow?
Should this be your entire career? No. Is your career wrong if you don't seek these challenges or are you a "bad" engineer if you want to show up, get your work done, provide for your family, all that? Absolutely not!
...but, should our entire lives be dedicated to avoiding it? To eschewing it? To saying no, I'll let AI provide the baseline slop I need to get past it? I disagree with that approach.
Eagle-eyed readers will notice that there's probably some strong similarities between this and consistently working out / being active, gaining an appreciation for art or your hobby, building a company from scratch, what have you. I think there's some shared DNA.
Anyway, when I have seen "good" engineers, they have the ability to do this work, they seek it out (sometimes), and they rise to the challenge when it is presented. I try to emulate it in my own endeavors. For me, it's something that is foundational to the rest of my actions.