10 habits of 10x developers
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.