How To Be A Great Engineer
29 Jun 2016The myth of the 10x engineer is widely known in programming circles, and there are definitely people who seem to fit the description. Jeff Dean and John Carmack are some of the programmers I look up to as examples of 10x-ers, and there are also a few people I know personally that just seem to have crazy high output. How do you become like these people? Here are the qualities that I think make a great engineer.
- Constant self-improvement
- I once debugged a Rails app with someone on my Macbook Pro. He wasn’t familiar with OS X, but still tried to learn every keyboard shortcut to become more efficient. It doesn’t seem that big, but this was a revelation to me. I don’t think I would have ever thought of doing that. Imagine applying that mentality to everything you do. Skills and knowledge compound like interest, and it truly is worthwhile to stop to think about whether there’s a better of way of doing what you’re doing instead of mindlessly doing what you’ve always done because it’s easy and you’re used to it. Wow that was a long and complicated sentence but I’m glad you stuck through it.
- Unstoppable drive
- Great programmers don’t let anything stop them. Bug in the system library? Fix it. Some person or org blocking you? Find a workaround. Need to shave a giant fucking yak to finish the job? Just do it with the smallest amount of hassle and without any complaints. This is probably the most straightforward quality but also the hardest to achieve.
- Deep empathy
- Engineers don’t work in a vacuum, as much as I’d like to silo up and work on my magnum opus. You need to communicate with other people, whether it be about code, architecture, or product. In these situations, you want to be able to understand the other person’s concerns to know exactly what you should be working on, and why. I’ve definitely been caught in the pitfall of building things for the sake of building things, with the end result being lots of wasted work.
- Sense of style
- Good code is very ‘I know it when I see it’. There’s no objective metric that captures code quality, and it’s definitely not just about following PEP8. It’s all a tug-of-war between choosing the correct abstractions and finding flexibility. To write clean, elegant code, you absolutely need a sense of style. To this day, some of the nicest code I’ve seen has been written by Jae Wie, who has an habit of relentlessly destroying unnecessary code.
If you’re interested in this kind of stuff, you should probably read Khan Academy’s Engineering Principles and Career Development Guide.
I’m probably missing some more qualities, and I’d love to hear your opinion on what makes a great engineer. Hacker News discussion here.