I've been working at my current company for 10 months. No office, everyone works remotely. We have A LOT of freedom on just about everything. When I started, every problem thrown at me was the most complicated thing I had ever encountered. It took me time to understand the problem, to understand the tools we used, to understand how to work within a team.
Fast forward to this day. I realised that I takes me a lot less time to accomplish what I used to 10 months ago. Which is a good ( and normal ) thing when you practice a craft and you are dedicated to become better at it. Then, a few questions came up with the extra time that I had right now:
- What do I spend this time on?
- When do you qualify a day as 'sufficiently productive'?
What to do with the time?
The way I see it, there are a few ways you could spend that time:
- More work ( just start working on a new bug or functionality ). We'll assume work is always available and you don't have to wait on anything or anyone to start something new.
- Dogfooding. Concept brought to me from Jess, read the article for more information.
- Work on your programming knowledge. ( You know, learning stuff )
- Side projects ( I didn't want to put it with the point above, but they could be the same ). I include working on Open Source here.
- Do nothing programming related. Call it a day. Which goes with the second question: Have I been sufficiently productive? Am I clear-headed enough to keep working?
If we are close to an important deadline and we are late, I will consider working on a new issue. I have to admit, it is rare when I decide to do this. Most of the time, I've spent 4-6 hours solving problems in front of my computer. It feels enough, and I'm absolutely not as alert as I was 6 hours ago.
Do nothing. If I am really exhausted and/or frustrated, I'm becoming more and more aware that it would be useless to keep fighting. Some days are just like that... Nothing goes your way. I'll do better tomorrow. Also good for my health, it's a marathon, not a sprint.
Learning/Side Project. What I am doing most of the time. I have this time today because of the time I invested earlier in my programming education. It pays off today and it will continue to pay off in the future. I believe the time I spend learning instead of working will help myself in the long run but also my employers and my colleagues. Everyone likes to see a co-worker improving, making everybody's lives easier. Plus, the problems I face at work are relatively similar. I do stretch outside of my comfort zone, but not as much as learning completely new concepts.
This is where I stand right now. I choose to spend less time actually working, and more time investing in the long term ( health, learning ). I do realise the freedom I have give me those options and may not be available for everyone.
Let me know what you think/how you spend your time in such situations.
Note: It may be a somewhat controversial subject ( or not ), but please keep it respectful and constructive in the comments. Much love!
Top comments (4)
'Sufficiently productive' for work purposes is whatever keeps your boss and stakeholders happy. They'll probably want to see some growth, in terms of what and how much you can do, but there is a ceiling on total productiveness.
I generally fill my spare work time with trying out new tools/libraries, prototyping improvements for systems that bother me, automating stuff I don't want to think about again, and outreach/education/promotion to my coworkers about stuff I think the team/org should be doing.
My recommendation is to spend the time solving work-related problems in ways that allow you to learn new things. That will boost both your career and your knowledge.
Great article! This is where i always get my answers.
Great article Damien, personally I take the learning route because if you don't find new things
to challenge you, it becomes quite difficult to grow as a developer.