All of us do at some point and devs, co-located or working remotely, are no exception. It can be difficult to maintain a good process, particularly if you’re working from home. There are so many distractions to take your attention and sometimes, you just don’t feel that your problem-solving skills are operating at 100%.
You don’t want to miss deadlines and let down clients or team members, so what strategies are devs using to be more productive?
#1. Manage Distractions
There are any number of distractions vying to get your attention during your work day. Productive devs find a way to either mitigate or eliminate the distraction. We’ve compiled a list of some of the most common distractions along with possible solutions:
|Each new email that comes in during the day.||Many devs favor the idea of setting aside specific times each day for checking email. Stay out of your inbox outside of these times and deal with anything urgent promptly when you do check.|
|Social media, your favorite blogs and the Internet in general.||These are huge distractions for most people these days and may require the “big guns” to minimize their impact.|
|Noise or activity around you.||Invest in a good-quality pair of noise-cancelling headphones and turn up “focus” music.|
|Colleagues, friends or family interrupting you.||Be firm about setting “office hours”, particularly if you work from home. Follow a rule that you can’t be disturbed with non-work matters between certain times.|
#2. Use Good Tools
There are a number of tools for better productivity as a dev, many depending on which language you need. The caveat here is that you don’t want to “over tool” yourself, to the point where managing tools is another job that cuts into your productive time.
You may also find value in a tool that will centralize information from all your other tools. Rindle provides this by integrating many of the tools you already use into one view and a kanban-style management flow.
Here are some of the productivity tools popular with devs that you might want to use:
- GitHub - This is great for version control and collaboration on code. They also have a bunch of open-source tools aimed at productivity, which Infoworld outlined here.
- Jira - Project and issue tracker from Atlassian. This is popular among dev teams and has simple Scrum and Kanban boards.
- Toggl - Sometimes you have to track time, especially if you want to know whether something is truly profitable.
- Trello - Kanban-style project management tool that allows for easy collaboration on projects.
- Bitbucket - This is an alternative to GitHub that works very well, particularly if you use Jira for project management (both are from Atlassian).
The tools listed here are some that we have found to be the most popular among devs, but we’d be interested to hear of your favorites too.
#3. Set Deadlines
Most projects you undertake will have some kind of “hard” deadline, but you’ve built some padding into it, right? If you already know how long a project should take you, try setting your own deadlines within it. Creating a sense of urgency for yourself, even with an artificial deadline can help to hone your focus.
Many people swear by the idea of rewarding themselves for hitting an early deadline, so set some limits with yourself and some kind of meaningful reward. Sometimes taking a break or finishing early to meet friends for drinks may be enough to stoke the fires of productivity.
#4. Take Breaks
Many devs fall into a trap of staying glued to their screen for hours, foregoing any kind of break. It’s a fact of the human condition that no one can be productive over long periods of time - our attention will only hold for so long, then the implications for your code may be scary.
The Atlantic posted about studies by social scientists into the work patterns of productive and less-productive people. One of those revealed that highly productive people tended to work for 52 minutes before taking a 17 minute break. Doing this helped improve their focus, particularly if they left their computers and did other things (try taking a walk - exercise is another proven factor in productivity!).
There’s probably not one ideal situation to suit all, but the point that comes from all of these studies is that breaks are necessary. Some of the least productive people sit in offices for 9 hours each day, while others get more done in 4.
Short bursts of activity followed by a break are leading to better-quality work and better ability to achieve more over the day. Sweden has even introduced 6 hour work days and is seeing the benefits. Employees feel happier and more energized, quality of work is improved and sick days are down. (Hmm, so if “move to Sweden” doesn’t work for you, at least taking breaks might help?).
#5. Chunk Tasks and Set Mini Goals
Try chunking your tasks into “like” groups as a simple way to get through them more quickly without having to “change channels.” It also helps if you keep your tasks organized and prioritized, perhaps using a good task manager tool.
At the same time, setting “mini goals” that are critical to getting to your overall goal at the end can work well for productivity. It’s difficult to keep grinding away without some sense of achievement, which is why breaking big tasks into smaller, seemingly more achievable goals tends to work better.
#6. Think Twice Before You Write
From the “measure twice, cut once” school of thinking among carpenters, devs can save themselves potentially inefficient rework by taking their time to come up with an optimal coding solution first.
Every dev has his or her own preference for workflow, but many we’ve spoken to like to whiteboard what they’re doing prior to beginning to actually write the code, particularly for complex tasks. It sounds like extra work, but really it’s an opportunity to “measure twice, cut once” so that they’re not trying to go back and correct work later.
The Zen of Python goes some way to explaining this thought process:
Another point is that your urge to optimize may be premature. Jonathan Blow is a prolific game developer whose output shatters average rates of work for devs. In this talk on YouTube, he recommends that you optimize only the code that needs it and doing so once you’ve finished. Otherwise, you run the risk of increasing complexity and undermining your end goal.
#7. Automate What You Can
How many repetitive tasks can you automate? Anything simple that you repeat on a daily basis should be top of your list for automating. Some examples might include: text manipulation and log mining, refactoring and testing.
There are always going to be distractions or unwieldy tasks that impinge on your ability to be productive, but devs who have created a good system for themselves for maximizing productivity tend to be the ones who are killing it.
Use a good combination of tools without overdoing it, take breaks, automate, chunk tasks and set artificial deadlines for yourself. Don’t be tempted to “optimize” code too early - it’s often rendered premature because you could increase complexity unnecessarily.
What are your thoughts? How do you increase your own productivity?