The 10x Developer Blueprint
There’s been a lot of discussions on 10x developers, whether they exist or not (for example, here and here). I believe they do exist and by following a blueprint eventually we can all become one. Based on my 10+ years experience as a software developer I put together a list of actionable guidelines that can help anyone get closer to 10x.
Avoid Decision Fatigue
Decision making is like a muscle, there’s only so much decisions we can make in a day before our brain will get completely worn out. As Barack Obama put it, ‘I don’t want to make decisions about what I’m eating or wearing because I have too many other decisions to make.’ Try to reserve as much brain power as possible for the really tough problems. Use design patterns, SOLID principles, KISS , YAGNI, JIT and other industry’s best practices.
Ever wondered why pilots have checklists: http://www.drjohnizzo.com/airline-pilots-have-checklists-maybe-leaders-should-too/?
Solve Problems for Others
Developers are hired to solve problems. Solving 10 times more problems in the same amount of time equates to 10x productivity. You may wonder how one can solve 10x problems? Solving a problem is the most difficult and time-consuming for the first time. For the second time, it’s easier and takes substantially less amount of time. That means that the fastest way of solving 10 problems to have them already solved previously.
There’s no free lunch and to be a great problem-solver one have to solve as many problems as she can and be eager to learn and experiment with new things. Create your own github repository today and start playing with some of the interesting technologies you came across recently. Learn from other people’s experiences (read books and blogs), and attend local meetups, conferences, etc.
Another idea can be to look for tough problems at your workplace, like the ones that others have already given up on. Solving those problems will give you an edge that will put you above most developers (http://www.nscblog.com/miscellaneous/ten-years-experienceor-one-years-experience-10-times/).
For example, on one project I worked on, a certain exception started coming up in the logs. Since it didn’t seem to be a major issue, I just ignored it. To me, that problem didn’t even exist. But there was this other developer from the team and as soon as he saw the stacktrace, he felt an urge to immediately dig into it and eventually found and fixed the bug in our code.
When we face a problem in the codebase, at least 80% of the time it’s safe to assume we’re not the first ones with this type of issue. So why not ask google or visit stakcoverflow to find the answer and save our time for more important issues?
Create Value
The reason we were hired in the first place was to create value for our organization. 10x developers can create 10x value for their employer. To give an example, there was an initiative in one of my previous places where the estimated hardware costs were in the range of EUR 1.5m. That’s a lot of money to spend. Well someone found a way to build a similar infrastructure which would only cost 10% of the original estimate. That’s over EUR 1m difference in savings! No surprise he was publicly praised at the town-hall meeting and were handed over an envelope as a gift for his efforts. How much money might have been worth for that company to save EUR 1m?
This is exactly what Jim Rohn talks about in this video (at 7:44):
That 14 min video is a real eye-opener and must watch for anyone looking for ways to grow in their career.
There are many creative ways on creating value at our workplace, including saving costs, improving processes (Scrum, XP, etc.), improving customer conversion rate, coming up with ideas for potentially new features or products (http://www.eweek.com/c/a/Messaging-and-Collaboration/Googles-20-Time-Projects-Pay-Dividends-for-The-Rest-of-Us/, though the 20% policy is not in effect at Google anymore).
Don’t reinvent the wheel
Though it may be tempting to roll out our own CMS in our favourite language, we may get things done in no time by relying on proven and well-tested open-source frameworks.
Frameworks Are Not Born, Code Becomes It By Evolving Through Constant Refactoring
There’s no way to second guess the problems a framework will have to solve in the future. I know it may be very tempting, and who hasn’t fallen into this trap anyway? I cannot count how many times I spent the extra time to make a feature generic to make it future-proof and later on never feel the need for it. Building something clean and simple will allow us to maintain the code for longer period of time and to be able to refactor it over and over until it eventually becomes a standalone framework on it’s own. Remember the YAGNI rule – You Aren’t Gonna Need It! Or in other words, “Perfection is Achieved Not When There Is Nothing More to Add, But When There Is Nothing Left to Take Away” (http://lifehacker.com/5962245/perfection-is-achieved-not-when-there-is-nothing-more-to-add-but-when-there-is-nothing-left-to-take-away).
Smelling code
There’s a difference between a 10x developer and the rock star developer who can solve some very tough problems but writes code that makes you want to cry. When you create value, think about both the short- and the long-term impacts. Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live (http://blog.codinghorror.com/coding-for-violent-psychopaths/)
Doing the Right Things vs Doing Things Right
I could be the fastest developer typing code on earth, but if I wasn’t working on the right thing, that wouldn’t make any difference at all.
Here’s an example. Many times we feel the urge to immediately jump into writing code when given an interesting task, but often times spending a couple of hours upfront on analysis may saves us days of work.
Use shortcuts
To increase productivity one simple idea is mastering the tools we use on a day to day basis. Find a quick way to launch the softwares you use frequently by creating shortcuts on the quick launch bar. Use Ctrl+R to search through your bash history instead of typing every command by hand. Print a cheatsheet of your favourite IDE shortcuts and memorize as much of them as possible. Use your IDE’s refactoring capabilities wherever possible instead of doing it by hand, etc.
Have you ever worked with a 10x Developer or do you have a few ideas to 10x software developer’s productivity? Share your stories and thoughts in the comment section to help me create the ultimate 10x developer blueprint.
Reference: | The 10x Developer Blueprint from our JCG partner David Kiss at the Building scalable enterprise applications blog. |
Every time I read something like this I weep for the seeming loss of sanity in the IT industry. So if I become a so called 10x developer do I get 10x salary as well? Nope! I’ve been a developer for 17 years and earned a good reputation with my employers and clients. Never once cared much for this kind of nonsense. When I’m writing code I ask myself 4 questions: 1) Does it work? 2) Is someone else going to be able to understand it? 3) Am I going to be able to understand it in 6 months time?… Read more »
I think you are missing one of the big points in this article, your first question you should ask yourself is: Has someone else already solved this problem? It’s great that you can go out and code a solution from scratch and call it your own, but if I use google and find a solution in 10 minutes and it takes you 2 hours to code design and code the same solution, which is better for the project? Being a 10x developer is knowing and utilizing all of your resources and knowing the exact scale of the problem you are… Read more »
I agree with you that all developers should seek to add value to their employers/clients, but I think many folks don’t realize quite how to do that. Or more likely they think they’re adding all the value they can, but an article like this one provides ideas/strategies that they haven’t explored. You can always become better than you currently are. The label “10x developer” may sound silly, but it anchors the list of strategies in something a developer can use to motivate them. Most developers do not have the discipline of monks (e.g. Perl monks?) who can internalize better/additional ways-of-working… Read more »
The video you linked no longer exists.
Thanks for the note. I found another link for the same video here: https://www.youtube.com/watch?v=XY5nulJAIn4
Hmmm… If you want to be a super-programmer, think laterally. Most people can’t. It’s not something which can be taught, although you can kind of emulate it if you go at it long enough: after a while, people seem to build up a library of known responses which, if you have enough of them, provide the illusion of lateral thinking in many cases. But take these people and give them a heretofore unseen problem and they’ll crumble. My experience of the thing seems to indicate that you’re born with it: just as nobody else can learn to be Jimmy Page,… Read more »
I’m not with the guy who said it is either in you or not. You can learn everything if you have the drive, mentor, environment and challenging problems.
Imagine that Google hired you, and gave you required training for a challenging project, and mentor you one of their super 100x programmers, then how you can’t be a 10x programmer !!!
Ahmed.