Clearly, we were fooled once again… and the famous meteorite did NOT crash to earth last week…
And then here we are one more time on a Monday morning at work. But don’t you think that we should take this new life-changing opportunity to make it better? At work, for example, why don’t take this second chance to do our best and increase our productivity?
Let’s start about defining what productivity means… Productivity at a very basic level is the amount of value produced divided by the amount of cost (or time) required to do so. In the workplace, productivity relates to how efficiently someone accomplishes the project’s goals. It could be the amount of tasks you close during a certain period of time, however, the complexity of the tasks should also come into the equation, it could be the case where one person closes 10 low-level complexity tasks and another person completes 5 tasks of very high level complexity, which one of the two was more productive? Probably the second one because of the impact of his tasks; high-level complex tasks usually mean a high level impact on the project. However, let’s not forget about that other guy who completed 10 tasks because in the next iteration or project and with more experience, he might be able to complete 5 low-level tasks and 1 high level.
Now, remember that part of the Productivity equation is the time it takes us to complete a task, then, if you want to be like that person who completed 5 high-level complex tasks, doesn’t mean that you’ll need to work double or triple hours, you’ll need to work more efficiently… you know what they say: work smarter not harder. But, honestly, it’s not that easy to work smarter than harder, it requires higher technical skills, better analysis capabilities and even taking more breaks to breathe and to think about what we’re doing and determine the best approach to resolve a task rather than being in front of the computer for 12 hrs straight.
But then, how can you measure your productivity? There are several ways, below I’m mentioning a few just to give you an idea:
- Hours worked: not the best one definitely, would you be more productive if you work 50 hrs a week rather than 40? in most cases you won’t, it has been demonstrated that working an excessive amount of hours per week reduces productivity.
- Lines of code: not a good one either, why? well, you might be adding thousands of lines of unnecessary code rather than refactoring, or adding code just to prove that you are producing more than others.
- Story points: a more reliable one, yet it has its deficiencies. With this one you’ll be given a certain amount of point to complete in the iteration, let’s say, a week… the more points you complete, the more productive you are. But, what if you are called to meetings through the week or have to help other developers for several hours? are you being less productive because you completed fewer points than others? of course not!
Let’s say that you’re now able to measure your productivity, so, how are you planning to increase it going forward? what to do? Don’t panic! I have some tips:
- First, stay focus, avoid distractions as much as possible. Buy those noise-canceling headphones you have been wanting to get for a while.
- Identify your ‘best hours’, these are when you feel the highest level of alertness, then leave the most complicated tasks for those hours.
- Take the time to read the requirements and make sure you fully understand what needs to be done, re-work != productivity
- Take breaks, these will allow you to boost your productivity and avoid burnout.
- Try to not waste your efforts as much as possible, as the 80/20 rule states: 20 percent of the effort creates 80 percent of the value.
- Develop your code in a way that it can be reused, it could take you a little bit more the first time you code it, but it’ll save you a considerable amount of time in future implementations and that will make you more productive.
- Improve your abstraction skills, a good performing developer can take a high-level problem, see the best way to break it down, and create the correct levels of abstraction.
- Work in small increments and test your work frequently, that way, you’ll be ensuring constantly that your code is working as expected and you won’t find yourself at the end of the day realizing that your code doesn’t work at all and you’ll have to start the next day from the beginning!
- Listen to your code reviewer, follow the recommendations you’re given, take notes, ask for additional feedback constantly and understand why things should be done in a certain way.
- Get in the zone, if you don’t know what that is, here is a quick definition: a mental state where you’re able to become fully immersed, focused, and enjoy the task at hand. Pretty much like a zen-state where you become the most productive. The chart below would help you to understand this better, for example:
- if the functionality you’re trying to build is too complex for your skills, you’ll end up feeling anxious, and we don’t want that, you won’t be productive… you’ll be probably crying in the bathroom the whole time or starting a Youtube channel doing dump challenges. What to do? Improve your technical skills: take trainings, consult the experts, practice.
- If you’re a highly qualified developer but you’re given low complex tasks, you’ll feel relax… Not necessarily a bad thing from time to time, however, you don’t want to be in that state for a long time, you need challenges that lead you into the zone (flow state).
Keep in mind that this is not a race, everyone goes at its rhythm, the point is to increase your productivity constantly so when the next meteorite attempts to crash on earth, you won’t be having this feeling that you could have done more the previous week before we all die!