The questions are: How long is your typical flow state? How long are your breaks and how you use them? How do you remove distractions? Is there anything more I should know?
Thank you in advance
I divide my working time in 45 min. sessions with 10 min. breaks in between. To be honest I don’t always take the breaks, which is wrong and is something I need to improve. During a break I stand up, do a chore at home or go to the balcony.
In the course of each 45 min. session I do only work with little to no interruptions. No casual Internet browsing, no mails and I try to avoid chats. On average I tend to do 6 to 7 session chunks per day which is more than enough to implement features, fix bugs and write documentation.
Distractions. Avoid the ones under your control (reading news, procrastination) and embrace the ones out of your control. When you get a sudden phone call, instead of going directly back to coding, you could read/write mail or answer some work chats. Such activities also count as part of my sessions.
No one is there to supervise me, so I need to be _honest_ about the time I dedicate to work in each session. In the end, I exercise self-control to the best of my abilities. I could also do 3 work sessions a day and still get paid, but I don’t believe this is in my favor. Doing more is OK, but I hit a cognitive limit sooner or later, so I only push myself when it’s really needed.
When I need to learn new stuff, I do it mostly in the mornings. Memory works best after the brain had some sleep.
I had jobs where I worked 10 hours a day, often on my own will since I wanted to figure something out. Most often than not, I was skills missing for the position I had so I did more work.
I had jobs where I worked 15-20 hours a week, and was praised and earned a lot of money.
So if you are good at something, like really good, and you join a company lacking these skills, than you probably don‘t have to work as hard since you already make a difference just by being there.
You choose your company and the amount you want to work as a developer these times. It‘s up to you. Some people however overwork themselves with 60+ hours and earn less than people who work 20 in a different industry but better pay.
I am currently in a position where I grow a family, and I found a well paying hjob where some weeks I work 50 hours, but most weeks I work 30. I get enough done to be a good performer. And that‘s enough for me at the moment.
Which means, my skills perfectly fit the position I am in, and for once I don‘t try to overdo it but just do a decent enough job to get a bit of praise. I use the down time to relax, watch movies, play with my kids etc.
2) in the meetings, know why you are there and try to stick to the agenda.
3) sort out things you need to do by priorities ( low, medium, here and now).
4) Check if your to do list is balanced: e.g. not all tasks are 'here and now'. If it's not balanced,raise it with management or try figure out yourself why that's the case.
5) Turn off distractions: email, text, chat,etc. Leave 1 channel ( phone?) open for emergencies.
6) Inform others where you are and what you do. E.g. : 'I'm in a zone between 9am-11am, don't bother contacting.
7) Learn to be OK if you don't do everything you were supposed to. You aren't in a hospital, nobody's going to dye.
8) Aim to complete 3-5 things in any given day. No point to commit to 20 if it's all going to be half baked.
9) Learn stuff early in the day- much easier than towards the end of it.
10) Take short brakes no matter what: even 5 min walk down the corridor is useful.
1. company culture. My friends who work on trading desk as tech person were doing long hours before pandemic, now, they are doing crazy long hours. Managements don't trust their people, lack boundary, etc.. I no longer work for those companies and I'm much healthier because of that.
2. Your skill vs expectation of your job. If you can easily qualify for the job in both hard and soft skills, your hours will be easier. If you are behind on the job in those skills, then you'll have to work harder.
3. And lastly, the skills of your team(s). I work with a lot of teams with junior-mid level developers, so I spend a lot of time trying to get them to understand what we are doing. Whereas seniors, we just get it done, but there are some seniors that are more obstacles than juniors.
Then you factor in the huge difference in approaches, skill, efficiency, and productivity between employees. If you are experienced, you skip the hours of googling, reading SO, etc.
You are probably pushing way harder than you need to be.
If I feel like I made good progress, I take the rest of the day off. If something should take a week and I finish it in 2 days - I take the week off.
This is why I am such a proponent of remote work, at least for coders - it allows us to spend more time doing what is truly the core of our job: thinking, and less time just sitting in a chair typing out those thoughts into the proper syntax.
That happens maybe 20% of all days though, and people don’t really enjoy it, so it’s mostly something I do for my own sanity.
The rest of my day is spent showing up in meetings and trying to prevent people from shooting themselves in the foot, which involves a lot of back and forth.
When in the office, I think I regularly made 9 hour days, but at home they’re at most 7.5 hours, mostly due the constraints imposed by having to pick up my son from daycare.
I recommend doing something like this, it can be a nice reset button...
If stuff really needs to get done though, I'll hammer.
Hope I can learn from some of the answers here.