How to become a better engineer
Tags: programming, productivity, career, watercooler
Published: 2022-04-26 18:22:39

This isn't the kind of post you probably think it'll be.

Or maybe it will be.

I've been reflecting daily on white boarding (I can't imagine why) and the reactions from the community to that. I've also been reading lots and lots of "career" oriented books ([Being Geek](https://www.amazon.com/Being-Geek-Software-Developers-Handbook/dp/0596155409), [So Good They Can't Ignore You](https://www.amazon.com/Good-They-Cant-Ignore-You-ebook/dp/B0076DDBJ6) - which if you've read this, you know precisely where this post will go, and [Communication for Engineers](https://www.amazon.com/Communication-Engineers-developers-communicators-productivity-ebook/dp/B08W8MJNF8)), and it's lead me to a lightbulb.

And that's where I'm about to list off a few hot takes.

## Surgeons don't do surgery in their spare time

First, let me start this: I don't believe in requiring engineers to pursue their own full-blown "personal projects" on the side of an actual day job. Companies that require an application by submitting a github repository are doing it wrong.

Nonetheless, I see many people cite that surgeons aren't expected to do surgeries on their spare time. However, this misses something pretty important: surgeons read medical journals in their "spare" time.

I view programming as an art, speaking as someone who approaches their music and painting as sums and patterned.

And that's how I believe you leverage becoming a better engineer.

Becoming better at what you do takes work, practice, and research. Lots of it.

## Deliberate practice

When I played guitar, I didn't become better by playing Greensleeves over and over. Sure, I enjoyed the song - its familiarity, and the fact I could almost sing along to it. When I painted more, I didn't become better by sticking only to the familiar; I forced myself just outside of my comfort zone a little bit at a time.

As I work through LeetCode problems, I've noticed a similar trend. I become a better engineer when I'm preparing to leave my job because I'm pursuing **deliberate practice.** I'm pushing myself to look at these completely random problems that I would never otherwise solve, and it's forcing me to be both uncomfortable and creative at the same time. (This is why I view software engineering as an art; it acts as a creative pursuit).

Sure, this isn't going to affect how I align a link on a page. But that's also not a difficult problem for me at this point in my career. Instead, this is going to affect how I solve the other problems: how to access elements on a page. How to handle mega data sets. How to better create a system.

If you want to be a better engineer, a blog post like this won't do that for you. Working at Amazon or Microsoft or Google won't even necessarily do that, either. You don't need to dedicate your entire spare time to creating the next bit app.

You need to take an hour a day (or at least, most days) and push yourself. Do those LeetCode problems. Look at that documentation for something you're not familiar with from your preferred language. Anything you view as hard, or difficult to understand - that's what you should focus on. That's where your growth lies.

## Even if you're not whiteboarding soon

An hour can be a lot when you've a family or other obligations. I certainly don't always have a ton of hours to spare, either.

I also don't recommend fitting this in before bed; that makes it much more difficult for folks my own age to be able to perform this deliberate practice, but it'll also make it harder for you to sleep. Just a friendly bit of advice on that one.

So how do I fit it in? I don't have kids (yet). But I do it with my morning coffee. Take time away from your email at work; I'll bet you could get an hour out of that. Take an hour away from Reddit. Stop reading this blog and do it. If your boss doesn't like you working on engineering problems rather than browsing the internet, it's probably time to find a new boss, anyway.

## What it feels like

The more I do deliberate practice, the easier it becomes.

Not.

No, especially as a person with executive dysfunction, it's very hard. The first ten or so minutes, my brain screams at me. You're too stupid to do this. This is too far beyond you. You won't get a GOOD answer.

The brain's not just a liar, it's a *damned* liar.

Consider the way an athlete pushes their muscles. I'm sure all of us have had muscle fatigue before; that's what you're doing here. You're taking your head's meatlump and pushing it just beyond its limits, and it's going to hate that. Stretch it with an easy warmup; get it focused.

You can do this.

After those first few minutes, after you've been able to focus up, you'll begin to make progress.

It doesn't have to be a lot of progress. Maybe you still end up looking up a solution toward the end; that's fine. You'll remember this and do better the next time. Maybe you'll come away with only a little more understanding, or two lines of code written.

That's great. I'm genuinely proud of you. This is how you improve.

## You don't have to start out "smart"

Frankly, we don't know how intelligence actually works. Richard Feynmann, famous physicist with accolades in quantum physics - [scored a 125 on his IQ test in high school](https://en.wikipedia.org/wiki/Richard_Feynman#CITEREFGribbinGribbin1997). That's not genius level at all (albeit, still high), and yet, this man won a Nobel in physics.

I don't trust IQ tests. We all know they're riddled with issues. But more importantly, we don't know how it works.

I very much believe that you can make yourself "smarter" (whatever that means). And I believe that it's all in how we apply ourselves.

## Discipline

I have autism that mimics the symptoms of ADHD.

It's really hard for me to perform deliberate practice, so I know where many of you are coming from.

You're not a failure if you can't do this daily. What's important is to *try*.

You've got this.