Productive developers are likely to receive positive attention, in the form of external rewards such as promotions, a bonus or other incentives. But that’s not the main reason why we should think about developer productivity and how to be more productive. Productivity makes us not only do more in less time but also makes us happier. And who wouldn’t like to be happier?
If you are more productive, you can accomplish more in less time. This means you also have some extra time at your hands. You can either use this time to do more work or spend it doing something else you desire. This is especially interesting as more and more work arrangements look at output instead of time spent at the job.
That’s why I’ll deep dive into productivity hacks that are backed up by research and used by several high performing developers not only at Microsoft. Following those hacks, you can boost your productivity and happiness at the same time.
Be more productive, and feel happier
Research shows that being productive creates a deep-internal feeling of satisfaction. So, feeling and being productive is something we strive for even if we have no other incentives than our own intrinsic motivation.
The mere feeling of productivity also makes us happier. The wonderful thing is that in return for being happy, research shows we are also more productive. So being happy and being productive can leverage each other. Isn’t that fantastic?!
But how can we be more productive and happier? Well, there are many factors that influence our productivity.
Many factors influence our productivity
As difficult as it is to exactly define and measure productivity, as diverse and complex are the factors that influence our productivity. Surely, our productivity is influenced by technical factors such as the technologies we use and the complexity and the quality of the product we work on.
But our productivity is also highly influenced by the processes and tools that surround us. Our personal productivity also highly depends on our experience level and our skill set. Two other influential factors are the work environment and our working habits and styles.
As you can see, many factors come to play. I’ll start with the work habits as it is one factor we can most influence and it has a high impact on our productivity.
Uninterrupted work makes us more productive, happier and healthier
One of the cornerstones for more productivity is uninterrupted time to complete your work. This isn’t new, but nevertheless, it is one of the most essential assets for productivity and quality work.
Several studies have already shown that interruptions lead to a decrease in productivity and also a higher error rate. If you face constant interruption not even the best skill set and the greatest tooling will help you be productive.
In a recent study at Microsoft, some of my colleagues and other researchers investigated what makes for a good work day in the developer’s mind. And again, one of the findings was that fewer interruptions make or break a productive day.
Also, developers who are interrupted often not only complete tasks more slowly, they also show more signs of stress and anxiety. So, let’s stay focused and uninterrupted.
Get into deep work mode by tuning yourself out of all the noise
Another well-known person that studied and wrote about work and productivity is Cal Newport. He published the book Deep work: rules for focused success in a distracted world. In this book, he describes a method of how you can tune out all distractions and get into the real flow of working. Once you are in that flow, you can achieve much more.
Carl Newport describes deep work as work that is done in a distraction-free zone and that allows pushing your cognitive capabilities to their limit. When you are in deep work mode creating new things and learning comes easy to you. He also describes that by training yourself to embrace deep work and tune out all distractions we become much more productive.
Reducing distractions includes but is not limited to emails, push-notifications, checking social networks, reading. What it actually comes done to is reduce interruptions and allow yourself to fully focus on the task at hand.
Having a work routine makes you happier and more productive
Another finding of the study at Microsoft was that developers were happier and more productive on “common” or usual work days. A common workday is a day where the developer can work on something she or he planned to work on. On the contrary, if things happen that are out of the ordinary, developers described the feeling to be less productive and less happy.
For example, imagine that a developer planned to work on a particular feature today, but an urgent bug fix comes in. As a result, the developer must work on this bug fix instead.
This unexpected change of the task leaves many developers feeling as if their developer productivity decreases. They perceive working on this bug fix less productive than having spent their time working on the feature. That example also shows how highly subjective the feeling of productivity is.
Prioritize your work day
I live by the saying “work smarter not harder”. And in fact, prioritizing your work day has many positive effects on the meaningfulness of your achievements. So, it is a good practice to start the day with some planning and prioritization of your tasks. One thing you can ask yourself is “what is the smartest thing to work on today?”
It’s important to realize that tasks that are perceived as urgent aren’t always the tasks that are actually the most relevant and productive to work on. Research shows that people that plan and prioritize their work get more meaningful results as people that just jump on every task that presents itself.
That means you can be very hard working with little impact, or you can choose the tasks that have the most meaningful impact. This distinction is also the reason why measuring productivity is not only a slippery slope but often dead wrong.
Minimalism as a practice to declutter your workplace and your mind
Another very personal hack that’s related to prioritizing is minimalism or the practice of decluttering. Often when I feel overwhelmed, I see that my workplace is cluttered.
There are either too many physical objects around (such as coffee mugs, papers, journals, pens, or whatnot). Or I have too many unsorted, or archived digital items on my plate (such as emails, documents, or my personal favorite: a desktop full of saved documents of all kinds).
What helps me is to declutter and to focus on what’s most important. Getting rid of items that are not useful anymore can be an extremely freeing experience. This includes finally cleaning the whiteboard.
Use the Pomodoro technique
Another simple but powerful technique is time-boxing. Time-boxing your efforts can really boost your productivity. One of the very well-known techniques for knowledge workers and developers is called the Pomodoro technique.
Using this technique, you aren’t expecting to be super focused and productive for the whole day. This isn’t realistic anyway. Instead, you set blocks of time of 25 minutes where you do very focused work. After that time, you take a much-needed break to recharge your cognitive batteries.
During those breaks, you can either do some physical exercise such as walking around the office or you use that break to boost your productivity with another great productivity hack: mindfulness.
Practice mindfulness to reduce the negative effects of a stressful environment
Mindfulness is well-known as a general productivity hack. There are plenty of studies that show the positive effects of mindfulness meditation. Still, little is it known that it can also be a game changer when it comes to the busy life of software engineers and developer productivity.
So how can you incorporate this kind of meditation where you paying attention to the present moment in a non-judgmental way in your developer workday?
The easiest is with short breaks, where you stop everything for a moment. During this break, you try to just be in this moment. Listen and feel your breath and stop worrying about before or after. Nothing is important for this little break. Forget your to-do list or whatever else is on your mind. Focus on your breath.
If your mind wanders off, you can bring it back to your breath without being annoyed that it wandered off in the first place. You can do this for a few minutes to reenergize yourself during your workday, or you can practice for more than 20 minutes to get boost your cognitive skills and your emotional intelligence.
Invest in your skills and experiences to boost productivity
Undoubtfully your skills and experiences highly influence how productive you are. It doesn’t matter how good your work habits are if you do not know the API you have to use, your developer productivity sucks.
But learning and building your skill set isn’t limited to new languages and technologies. As software engineers, we should always strive to learn new things and improve our practice.
So, if you notice that you are lacking some fundamentals in your day to day work, it is a wise decision to invest some time to improve your skills and learn.
This can be as simple as becoming fluent with some keyboard short cuts or learning about the newest features that your development environment offers.
While this effort will temporarily slow you down (with respect to working on new features), it will have tremendous positive long-term effects on your productivity and happiness.
As there are so many things to learn, focus on the ones that have the most effect on your work. And don’t forget, your work habits can influence how fast you learn.
Invest in improving your engineering practices
Engineering practices such as code reviewing or software testing can save you and your team a lot of work. Having an automated test suite reduces labor-intensive manual testing. Code reviews help spread knowledge and are a cornerstone for maintainable and readable code.
On the other hand, it is important that you look at which best practices you can apply to ensure you get the most out of it. Code review pitfalls, for example, can slow your whole team down. So, ensure that you follow best practices such as code reviewing best practices to get the most benefits.
Sign-up to my email list and get access to the Code Review e-book I prepared for my email subscribers.
Automate what can be automated
Do you have good processes and automation in place that increase developer productivity? Or do you still spend time on manually configuring and updating steps during deployment? Investing in task automation can speed up and boost your productivity in big ways. It is also a great hack to reduce errors due to manual tasks.
Good places to start automating tasks and processes are deployment, test, build, and many labor-intensive tasks, such as code reviews. Code reviews, for example, can be coupled with automatic style checkers, automatic test executions or static analysis tools. All that can easily be checked automatically, and be improved before another developer has to spend time on it.
Be aware of how you spend waiting times
How often during the day do you spend idle? How often do you wait for something? What do you do with that idle time?
For example, if every time you run the test, you have to wait for three minutes for the results, chances are high that you are faster on social media or browse the Internet than you can think.
This destroys your workflow and productivity. Do you now tell me that you use that time productively to do some other meaningful tasks? Oh, no. I am sorry but I have to tell you that research shows that this is even worse in most cases. So better keep browsing – or even better – start analyzing and improving your workflows.
Identify friction, bottlenecks, and waiting times
Yes, the best is to really understand the bottlenecks in your workflow and then solve those for a long-term boost in productivity.
Staying with the test cases scenario, one way to go is to investigate if it is possible to safely remove tests from the current test run. But don’t delete them. Identify which test cases are needed for the current changes (coverage analysis) and run only the subset of tests that are needed. Having a smaller test suite means less time to wait for the test results.
At Microsoft, I worked for example on a technique that allows to only run relevant test cases for certain development stages that can reduce testing times and costs tremendously.
Another viable option is to analyze and optimize your test suites for speed. Often test fixtures contain unnecessary steps (general test fixture smell) that can be removed to speed up overall test execution.
Anyways, improving testing practices is just one example. Similar improvements can be done for the build of large software systems. Or by looking at frictions in development tooling.
Get the right work environment for you
Open offices have been a popular and cool thing for the last ten years. Still, without a doubt, those offices allow for a lot of distractions that aren’t in favor of our productivity. So, try to make some room for undistracted work.
Either by finding some quiet corners from time to time or, if you can’t, escape it with a good pair of noise-canceling headphones. Some people also swear to listen to music while working or programming. There are even dedicated productivity playlists on Spotify or Youtube 1/ YouTube 2. Or, have you already heard of music to code by?
The most important thing is to understand what makes you tick. How should your environment be to make you feel productive and happy?
Personally, I’m easily affected by my work environment. If I like the place I work from, I am much more productive. That starts with a nice window view, some decoration, and to know I have a quite and lonesome place to deeply concentrate. That just makes me feel happy. And, let us recall the connection between happiness and productivity.
Arrange to work from home for more productivity
Working from home and remote work become more and more popular in recent years. And not without good reason. For quite a few people, working from home (at least occasionally) yields many benefits.
This was also shown in a recent study at Microsoft, were developers describe that they highly appreciate working from home and mention it as a boosting factor for their productivity. Well, understandably, as working from home means fewer interruptions and allows for more deep work.Working from home can increase productivity because it allows being more focused on work due to fewer interruptions. Click To Tweet
Reduce and refuse unproductive meetings
Not having to be dragged into unproductive meetings is also one of the reasons working from home is experienced so positively. But also when you regularly work at the office, do yourself and your team a favor and openly reflect on the meeting culture. Sitting in a meeting that isn’t useful is a nightmare. Even stand-up meetings that take too long or have the wrong audience are a waste of time.Make sure to have either productive meetings - or to refuse them. Click To Tweet
On the other hand, not all meetings are evil. Some well-arranged meetings with a concrete purpose can be a wonderful productive working environment. Interestingly, meetings are (perceived) of different value depending on the development phase to take place in.
Not all meetings are an unproductive evil?
The study at Microsoft shows that meetings aren’t per se perceived as unproductive or not useful by developers. But, the perceived usefulness and productivity depends on the current phase developers are in.
Independent of the type of meeting, or the group of people having the meeting, the study shows that meetings during development phases are more likely experienced as interruptions, annoying and unproductive.
If the team is, on the other hand, in a non-development phase such as planning, testing, or release developers describe meetings more often as productive and useful.Meetings in non-development phases such as planning, testing or release are experienced as more productive and useful by developers than meetings during development phases. Click To Tweet
How to boost developer productivity?
Finally, I want to reflect a bit on the variety and subjectiveness of productivity itself. Even though there are some cornerstones that can help boost your productivity, each individual really has to find his or her own rhythm. I started a survey on HashNode on “What makes you productive?” and many developers also mention that having a task you look forward to solving and clear goals are cornerstones to their productivity.
The many different answers show nicely that there are some basic needs for developer productivity, like no interruptions, a task you look forward to solving and clear goals. Those must be fulfilled for most of us to be productive. On the other hand, the comments also show that we all tick a bit different and have to find our own productivity hacks that work for us.
So, now let me know what makes you productive by leaving a comment. And don’t forget to subscribe to my newsletter to never miss a new post from me.