A 10x developer is a hyper-productive computer programmer. Below are some strategies for increasing your productivity.
Last week, I discovered The Rise of Developeronomics via Brad Feld. As long as I’ve lived, it has always been a great time to be a software developer. The economics keep getting better for us. My favorite quote:
The one absolutely solid place to store your capital today — if you know how to do it – is in software developers’ wallets. If the world survives looming financial apocalypse dangers at all, this is the one investment that will weather the storms. It doesn’t matter whether you are an individual or a corporation, or what corner of the world you inhabit. You need to find a way to invest in software developers.
The article also introduced me to the concept of a “10x developer,” and linked to a thoughtful explanation.
The 10x effect is the anecdotal observation that great programmers aren’t just a little more productive than average ones (like 15-20%). They tend to be 10 times more productive.
The second blog post is a fascinating analysis of 10x engineering in terms of thrust (high value flow state work) and drag (administrative necessities). All this got me thinking, what do I do that makes me a 10x developer? I quizzed Ben Sharpe, Collin Watson, and Jonathan Locke, author of Coding – On Software Design Process. Here is what we came up with.
1. Only do the work that needs to be done. Use the agile process. Involve yourself in UX design. Communicate first. Coding might not be the solution. Premature optimization is the root of all evil. Choose the simplest solution that solves the problem.
2. Build on the shoulders of giants. Use open source frameworks. Use shorthand languages (HAML, Jade, Coffeescript) to go faster. Don’t re-invent the wheel. Leverage package managers for public and private code distribution. Don’t be at the mercy of Central Command (i.e. Microsoft) to fix a bug in a library. And don’t wait for your employer to let you learn it. Learn it on your own, and get a new job that pays twice as much.
3. Know your data structures and algorithms. Our profession is open to self-taught tradesmen, but you can’t be a 10x developer if you don’t know when to use quick sort, identify an O(n2) routine, or write a recursive function. Be multilingual – so you can see how different frameworks solve the same problems over and over again. Know enough about the plumbing to be able to make informed decisions (how is this Web framework storing the session state? What is a cookie actually).
4. Don’t be afraid of buying tools that save you time. Ben says: “I bought a bitmap font tool yesterday for $50. It easily saved me more than $200 of my time.”
5. Find focus. Don’t keep your email open all day. Same for Twitter, Facebook, HackerNews, and Techememe. Minimize interruptions during productive moments. Close email, turn off chat, put headphones on… whatever it takes to not be interrupted. Tiny hack: I wear headphones at work even though I don’t listen to music because people don’t interrupt me.
6. Refactor early and often. Kill your darlings. Sometimes you have to throw out clever code to do what’s right by the project, but that’s OK. If you have to touch code on an existing project, always leave it better than you found it.
7. Just do it. Think small. Do your weekend project, participate in Startup Weekend. I bought a Mac and worked in a Windows Virtual Machine on .NET projects for a year before I was able to fully leap to Unix and Ruby on Rails.
8. Pick an editor and PWN it. Some 10x developers prefer text editors to IDE’s because they find they learn more without the crutches. In any case, learn your keyboard shortcuts. There’s no faster way to look something up than to know it. When
picking an editor — seriously consider one of the greats (emacs or vim), they’re universal. After that, pick the best/most supported editor on your preferred platform.
Use macros. Write code that writes code. Use TextExpander on the Mac to create shortcuts for entire paragraphs. Use auto-completion in Visual Studio or SublimeText. Use an editor that supports splitting your window into columns or rows. This way you can see your both a unit test and the code it is testing (or a model and view) at the same time.But think before you type. A friend in a large group said that the most productive coder in their group was a paraplegic who used a mouth stick to type. He had to really think things out before he started typing, he only rarely made mistakes.
9. Clearness beats Cleverness. Write your code so that the next person can read it, not so it uses the fewest characters possible. Strive to adhere to the DRY (Don’t repeat your self) principle. Re-use clearly defined objects and libraries. Break work into clean interfaces between components and developers. Break the problem into small simple tasks.
10. Your sub-conscience is a powerful tool. Stepping away for 10 minutes is often all that is required to solve a problem. Treat your self to a diverse life and limit your coding time. You will be able to work more effectively during your coding time because it will be more enjoyable. Of course, us older developers also know that a minimum effective dose of physical fitness is also a prerequisite to being a 10x developer. Human networking is more important than computer networking. Practice your pong. I often feel the best thing I ever did for my career as a programmer was to step away from the computer and go meet some movers and shakers.
11. Refine your process as a team. One of the biggest things is to really pay attention and to be wide open to criticism and changing and refining your process. You can’t become a 10x anything without that foundation because it will take you too long to get better at it. A wise man once said “A smart man learns from his mistakes, but the truly clever man learns from the mistakes of others.”
Funny how your point about IDEs is self-contradictory. I’m sure there will be a lot of debate on this.
If you are going to do a click wall article and it targets developers, make sure the click wall cannot be defeated by techniques like “view source.”
Thanks for reading! I’m glad you could hack around the click wall. What did you think of the content?
Great article…
I totally agree with:”… And don’t wait for your employer to let you learn it. Learn it on your own, and get a new job that pays twice as much. …”.
The clickwall for 8,9,10 is a sleazeball tactic, don’t make you content contingent!
The IDE point is so… 90th. Try to jump through references and call trees with VIM, gonna be really funny. Some of the other points have their validity though!
I have known several 10X developers who did not use ANY of these tips. Your tips sound like marketing hype.
I absolutely agree with all mentioned points. Especially the multilingual part and the part that says “learn multiple editors”, because everyone is always discussing about “the best” language or editor, while the best is always different for different jobs.
Well said ObjT. I find that there are a lot of arguments for a language or editor being “better” when it is really just what that person is used to.
Another unnecessary blog post littering the web.
All it says is “Know your stuff and do good work,” basically.
Boring.
thanks, like it…
All it says is “Know your stuff and do good work,” basically.
Boring.
We (at hark) believe so strongly in no fixed tools, that we ask candidates to bring their laptop workstations in to project on the wall during their interview using their tools and setup. It’s completely what you feel comfortable with.
David, that’s very cool. I would suspect that is a great way for both parties to be exposed to new development tools.
If I have 6 of the habits does that make me a 6x developer?
@rickchen: it’s exponential, so 6 is like 2x
I think Point 8 starts wrong, maybe it should start with just “Use the best IDE possible for your needs and style”, but everything else is really good. Is really nice how not all the point are about actually coding.
I just have 4 of the attributes of an effective programmer. LOL.
I overwhelmingly agree with some of these and agree with them all. Very good points.
As a senior programmer, I really see the differences in younger programmers in style and aptitude. One thing I see a lot are programmers who work 16 hours a day but spend 8 or less in the office. They look like miracle workers but really just lack work-life balance.
I think Point 8 starts wrong, maybe it should start with just “Use the best IDE possible for your needs and style”, but everything else is really good. Is really nice how not all the point are about actually coding.
Nice post about 10x developers