Developer Productivity
Programming is a creative process. Many non-developers have a mind set that programmers create code like a factory. But you cannot work for longer hours and expect same quality output.
Avoid extending your working hours. It makes programmers tired, frustrated and more prone to making errors. In most cases, you should aim to reduce your working hours and optimize how you work.
Care about your work. If you do not want to be productive, you will not become productive. Accept that development is your work, not only something you do only for fun.
Notice overconfidence when working. Developers give themselves mental free time based on good productivity when it really should be used to make up inaccurate estimates.
You complete an one day task in two hours.
Then you give yourself a mini-vacation, relaxing for 30 minutes.
Then you get stuck in Facebook, HackerNews, Twitter (X), Reddit -loop.
You do nothing else on that day, poof, productivity gain lost.
Notice overconfidence when estimating. People are terrible at estimating development time. The truth is that unexpected things screw you the hardest.
Development environment update takes days because you need to install new
compiler, the installation fails, and you have to recover multiple times. Then you
notice that the platform you are implementing does not give same API help than
the previous platforms gave and compiler gives
"Internal Compile Error 2033". The bug takes a whole week to trace and fix.
Minimize uncertainty. Minimize uncertainty by making it clear what you are going to do each day. Get something done every day, no matter how long it takes.
At all costs, avoid thinking that you will finish stuff "tomorrow".
Create a list of 9 items every morning:
- 1 major thing, 3 medium things, 5 minor things
Start a day by completing one of the minor things and follow up with
the major thing. The rest will come naturally
If your mind is blocked, get started with something simple. Force yourself to write code for 15 minutes using a timer. Even the simplest task, like changing visual layout, will do. I can guarantee it gets you onto a working streak.
Focusing on fun things like cool new features, technologies, or infrastructure can increase productivity and fulfillment while still advancing product goals. They usually go hand-in-hand with innovating something totally new.
Benchmark your productivity. If you do not admit you have a problem, you will never solve it. On Fridays, check your commits history and analyze it.
Use downtime for your advantage. Reality is that people are not productive all the time. It is not abnormal to have only around 20% effective working time at office. Short breaks do reduce burnouts in the long term.
- Use downtime for socializing with co-workers that are also on downtime.
- Go home, take a nap and work later in the evening.
- Social media is the worst way to spend downtime, except if it is about following technology trends.