How To Become More Effective, or Why Some Are 10X As Productive As Others
I am sure that you have heard the often quoted “great developers are 10 times more productive than average developers”. As a consultant, I have seen this in practice many times, over the course of many projects at many clients. I am sure that you know people on your team, or people that you have worked with in the past, that fit this model. They always complete their work or tasks so much faster than anyone else on the team. But, have you ever stopped to really think about how that happens?
Now, there are lots of reasons why one developer is more productive than another. Things like years of experience and education do factor into the equation. And, you will always work with that one person that has an uncanny ability to work magic – make the impossible possible, and make it look easy at the same time. We can look back in history to find numerous examples of people that worked this magic in their fields – Einstein, Da Vinci, Mozart. Yes, there are people that just function at a higher level, sometimes without even realizing it. But, having a “gift” is not the only solution – there are many other things that people can do to try and level the playing field.
Step 1 – Ditch the Mouse
If you have ever spent anytime working with extremely productive people, you should notice one thing right away – they hardly ever touch their mouse. Think about data entry people – their whole day is spent rapidly entering in massive amounts of data, probably never once using their mouse. How many times have you worked on a project where you spent any amount of time optimizing the tabbing order of your fields, or added keyboard shortcuts, specifically for those data-entry type users? Now conversely, think about the less-than-productive people on your team. I am sure if you spent some time watching how they work, you will notice how heavily they rely on their mouse. The point here is to maximize the time your fingers spend on your keyboard, and minimize the amount of time your hand reaches for the mouse. Over the couse of a normal work day, think about how much time is wasted moving your hand from the keyboard to the mouse. It may seem insignificant, but the act of moving your hand from the keyboard to the mouse is also a minor disruption in your thinking and flow. I am sure you have heard the phrase “being in the zone.” I will cover this later, but you want to maximize your time in the zone and reduce or eliminate any distractions that take you out of the zone.
Try this – for the next half hour, do not use your mouse. Unplug it if you have to. How often do you find yourself reaching for the mouse? If the answer is a lot, then you have some work to do. Start with the program or application that you spend most of your time in each day – it could be Eclipse or Excel, it does not matter. Now, for the next few days, each time you reach for the mouse to do something, stop yourself, and spend the time to figure out what the keyboard shortcut is. I know, it does not sound like a lot of fun, but trust me, the payoff will be huge.
Start creating a cheat sheet of your most used keyboard shortcuts, and stop using the mouse for those tasks. A lot of programs have cheat sheets built in, but you need to be dedicated to eliminating your mouse use. One way to help successfully build a new habit is to make that habit, along with its successes and failures, public. So, tweet or blog or even just talk about which new shortcuts you have discovered and are now using. By writing them down and talking about them and actively using them, they will become more and more automatic.
Step 2 – Effective Shortcuts
Building upon Step 1, now is the time to apply the same principles to the OS that you work in every day (my examples will be Windows-centric, but equally apply to any OS). Pick the top three programs that you use regularly every day – for example Eclipse, Firefox and Outlook. When you want to start these programs, do you click on the Start menu, select All Programs, wait for the list of all of your programs to pop up, find the right folder, and finally click on the program you want to run? Do you find yourself hunting through the Start menu numerous times a day? I am sure you have worked with someone who calls you over to help them with something, and then takes 5 minutes to try and find the right shortcut to the program they want to start.
Now, a good first step is create shortcuts on your desktop for the top 5-10 programs that you use consistently, day in and day out. This eliminates the need to hunt through your Start menu. A better step would be to take advantage of the Quick Launch in the Taskbar. This does two things: you can launch a program with a single click instead of a double- click, and you do not need to minimize all of your open windows to find something on your desktop. By making your Taskbar two rows high instead of the default one row, you can move the Quick Launch up a row to take advantage of the full width of your screen. This is easily accomplished by right-clicking on the Taskbar, unselecting “Lock the Taskbar”, resizing the height to be two rows tall, and moving the Quick Launch to the top row, on top of all of the open program taskbar buttons. Now you have almost the entire width of your screen for Quick Launch icons, as opposed to having it crammed beside all of the open programs on the taskbar.
Once you start identifying the programs that you run the most often, and adding them to the Quick Launch, you should take note of a couple of tips to help keep all of those icons straight. First, make sure the icon is unique and distinct, so that you can know instantly which program you are starting. Second, by giving the shortcut a distinct name and comment, you can also quickly identify what is what by the tooltip when you hover over the icon. At this point, you might be wondering why you’re back to using the mouse to launch programs. Did I not just tell you to minimize your use of the mouse? You are correct, but for programs that you only launch once a day, this is acceptable.
But, if you want to keep expanding your keyboard kung-fu, there are many options available to you for launching programs, some provided by your OS and others provided by additional applications that you can install. For example, in Windows, to launch a Windows Explorer window, the keyboard shortcut is Windows Key + E (hold down the Windows key and press E), or to run a program, the shortcut is Windows Key + R.
Each OS has similar keyboard shortcuts, and a quick Google will provide you with exhaustive lists, but the true power of keyboard program launching comes from other third-party applications. For example, in Windows, Executor (http://executor.dk/) and Launchy (http://www.launchy.net/) are two popular keystroke launchers. In MacOS, you get LaunchBar, but you can use Quicksilver (http://blacktree.com/?quicksilver), or also Launchy.
All of these programs provide ways to launch programs without ever clicking the mouse. After spending a little time using one, you will wonder how you ever did without one.
Step 3 – Get and Stay in the Zone
Developing and programming has often been likened to creating art or music instead of engineering. I am sure you exactly what I am talking about when I talk about “the zone” – that place you reach when you are deep in your work and time has no meaning. Now, think about how often you reach that place during a normal work day. Are you constantly being interrupted with phone calls or emails? Are you always checking the latest news headlines or sports scores? How about keeping up with the endless stream of tweets? If you take a hard look at your normal day, I am sure that a lot of your day is spent instantly responding to some type of interruption (email, IM, tweet, etc) and then spending several minutes trying to get back to whatever it was you were working on before you were interrupted. Extrapolate that over the course of a day, and it is no wonder you feel like you can never get any work done.
To fully embrace this step might be the most painful of all. And, in certain roles and situations, it might be near impossible (for example, first level support). But, in the majority of situations, you can do this. You need to block time periods during your day where you will not let yourself get interrupted. The point here is to ignore everything but your task at hand, and let yourself slip into “the zone” where you are your most productive.
There are lots of ways to accomplish this isolation, and you may have to use multiple tools and techniques to be successful. Block your calendar so that you do not get invited to meetings. Turn off your email notifications, and ignore your emails until your time block is over. Close your browser windows so that you’re not tempted to check on your favorite sites. Set your IM status to “Do Not Disturb”. Wear headphones, even if you are not listening to any music. Turn off your phone. A quick Google will turn up lots of applications that can lock you out of certain web sites or applications, for example, that consistently suck up your time.
At first, you might experience symptoms similar to withdrawl, and your desire to “just quickly check on X” might be overwhelming. This is the hard part – you have to resist those urges and focus on the task at hand. The world will not stop if you do not check your email for 30 minutes, or 1 hour, or even 4 hours. For example, whatever problem in that urgent email that you felt that you just had to respond to can wait, or will even be resolved before you get to it. The chances are greatly increased the more people the email is sent to. Now, I am not suggesting that you go cold turkey and only check your email once a day, but to gradually ease into these time blocks, maybe 30 minutes to start with. At the end of those 30 minutes, “reward” yourself with 5 or 10 minutes of email or twitter or web browsing. Over time, you should be able to increase your “in the zone” time blocks, and notice how much more productive you are becoming. The point is to eliminate all of the time wasters in your day, and focus on your real work tasks.
Where Do I Go From Here?
There is a lot of information in this article, and trying to do everything all at once is just asking for failure and frustration. You need to start small – first by identifying your current habits and mentality, and recognizing how and where to apply these steps. If you think this is too much work, then you have already talked yourself out of even trying. Yes, at first it might seem like you are being less productive, especially if you have never used keyboard shortcuts, but gradually over time you will notice the improvements and start looking for more ways to become more efficient and productive. Good luck and have fun!
One thought on “How To Become More Effective, or Why Some Are 10X As Productive As Others”
Thanks for the great article. The information was timely and needed!
While I don’t think these tips will take an “average” programmer to a 10x programmer they are definitely good tips. I think #3 is probably the most important and maybe the most difficult with all of the distractions out there now.
Very nice and helpful article. The Productive Programmer by O’Reilly has similar and some very good practices to be more productive. http://oreilly.com/catalog/9780596519544
The advice about ditching the mouse and learning Windows program shortcuts is really great advice for secretaries and other professional typists.
As for developers, if you spend a great deal more time entering text than thinking about how things should be accomplished, you’re probably massively violating the DRY principle, and thereby producing crap.
fsilber – you seemed to have missed the point of the article. The goal is to improve your efficiency at your job by eliminating the repetitive time wasters throughout your day. Starting with something as simple as keyboard shortcuts is any easy way to get started, and a quick way to see immediate improvements. It is not about entering massive amounts of text – it is about reducing and eliminating the distractions and time wasters to allow you to focus, and stay focused, on your task at hand, and become more productive in the process.
30 minute timeframe sounds like http://www.pomodorotechnique.com/
Proficient Typist != Effective Programmer
The 10x more effective part comes from understanding the requirements, designing the right solutions, typing the right code (even if slowly!), testing your own code before committing it, thinking of others (QA, team members, the end-users, the maintainers to come, your future self, etc.) and generally just knowing how to do things better than the average or less experienced developers.
These programmers would still be at least 5x more effective with one hand tied behind their back or if forced to use 2 mice.
I’ve seen fast typing crappy coders and all that happens is they can create a lot more problems in less time than other crappy coders.
I suspect the author is not one of these effective coders; his admission to developing on Windows is clue.
Better advice: read http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X
This blog post suggests that there are developers who aren’t smart enough to make a desktop shortcut or quick launch icon for the apps they use every day. Don’t hire those guys.
Or that they would even shut these programs down in the first place. Develop on a real OS and you can just leave them running all the time anyway.
“Wear headphones, even if you are not listening to any music.”
I figured someday that this would help a lot, if your working in a crowded place, it helps you keep the isolation from outside and focus on what your doing. Sometimes, music can also disturb. Nice article.
For the #3 tip, consider experimenting with the “Pomodoro technique”.
I find it’s great for staying focused.
See more here: http://www.pomodorotechnique.com
Bockelman – in an ideal world, all developers would be efficient, productive, and competent. As a consultant, I have worked with people of all skill levels, covering the complete spectrum from novice to “god-like”. By pairing and mentoring people I work with, it is easy to see how simple things like keyboard shortcuts can vastly improve their productivity. Once you start down the path of improvement, you can work on other areas, like design and testing – but you always have to take that first step.
As for choosing your ideal OS – being a consultant, that choice is almost always made for me. I adapt to the situation instead of complaining and wishing for what could be. After developing trust with a client, it is easier to suggest improvements in their work environment and process.
I have read the Pragmatic Programmer and highly recommend it.
I suppose keyboard shortcuts can be worthwhile if you’re making heavy use of a single application — e.g. if you’re doing all of your development using a single IDE. If you’re doing maintenance work on programs created using a variety of tools and technologies, it may not be worth the burden on human memory.
Can I just have someone else be productive for me?
The first two-thirds of this article confuses speed and efficiency with productivity and effectiveness.
You know what’s way more productive than keyboard shortcuts? Keeping your hands off any input device and think before you act. The most productive developers are the ones that barely touch their keyboard at all.