8 Hour Workdays are Inefficient for Coders

There is a pattern that almost all coders experience when they sit down to code:

  1. Ramp-up time – the 10-30 minutes it takes to remember where you were, get your head wrapped around the code you are working on, and get up to full speed.
  2. Productive coding time – This last from the moment you are wrapped up until either you get interrupted, or anywhere from 2-4 hours later when your mind is done.
  3. Non-productive coding time – The rest of the day when you keep trying to get back to full speed, or have not yet realized that you need a break.

The exact amount of time that all takes varies by coder, but almost nobody I know runs 8 hours in step #2. Yet I know many developers who code at a screen for 8 hours and call that their workday.

I optimize this process, by taking frequent breaks and thinking through questions I have with the code in the back of my mind. So when I sit down to code, I have a quick ramp-up, code through my questions, and typically accomplish my goals in an hour or two. If I hit step #3 and just am not working efficiently anymore, I stop coding.

At that point, I typically catch up on emails, write documentation, talk to people, and if my day works out well, the meetings happen while I’m in this down time. 

Then I take a break, go for a walk, or play a game, and start the cycle again.

I get as much (if not more) done if I do two of those cycles in a day as I ever did working an 8 hour shift at a desk, because when you sit and work for 8 straight hours, you end up extending step #3 for hours, while also compounding your ramp-up time because there is no natural gap in your day to fit in meetings or do other things.

This is why I am a proponent of work from home, as well as a proponent of flexible schedules. Because it works better for the code, makes you more efficient, gives you better balance in your life and still leaves time in your day to interact with your team and do all your non-coding work. 

Functional Remote Meetings

Note: This is another article I posted on LinkedIn early in the pandemic, to help resolve some common problems I was seeing as people started learning how to work remotely.

Last week, I shared some general pointers on working from home. This time around, I’m digging into details, sharing a few more bits of advice specific to remote meetings:

  1. When invited to a meeting that uses a video conference software you have not used before, dial in 5 minutes early. That gives you time to run the installer, connect to the call, find the video and audio settings, and test that your microphone and camera are working before the call actually starts.
  2. Invest in a good microphone or headset. The difference in sound quality does make it easier to communicate.
  3. Give your system the resources to do the call well — Stop any programs on your system that are taking up high CPU. Do not run video or large downloads in the background during a call. Small network or CPU hiccups are noticable when talking, and distract the rest of the team.
  4. Turn on your camera. It feels a bit invasive at first, but seeing the faces of your team, as well as their reaction helps bridge some of the communication gaps of not being face-to-face. It also allows people to continue non-verbal communication such as nodding heads.
  5. Test your camera before a call – look at the image you will be sharing with your team. Are there distracting elements behind you? Does the lighting show your face clearly? Is there anything in-camera that you do not want the team to see, or that would be unprofessional?
  6. If you have a recurring meeting that always connects to the same video conference URL, the host of the meeting should allow the meeting to start as soon as the first people connect. That allows the team to talk and start without the host, in case they are delayed for any reason. 
  7. “Can you hear me now?” — If you are unsure, ask whether people can hear you. Likewise, you’ll see an icon when people are muted – watch for talking and let your coworkers know if they forgot to unmute. A few quick words and questions save more time than waiting for people to realize something is wrong.
  8. Slow down a bit – everyone’s feed may be delayed by up to a couple hundred milliseconds, which is enough to cause simultaneous talking more often than when face-to-face. When you slow down, you offer a better chance to allow others to participate. Likewise, when you want to add to the conversion, say something, then pause. This ensures the other person heard you and yielded the discussion to you… otherwise you may talk over each other, resulting in neither one of you being heard. 
  9. Explicitly invite people to talk – Maybe this is just my teams, but I find that no matter if we have 6 or 20 people on a call, only 4-5 people actively engage in the conversation, while the rest mostly listen. It is partially due to the point above, that people tend to hold back to avoid talking on top of each other, but also that some of us are simply more vocal. When you do need feedback from the entire group, you need to actively invite it. One technique is to pause the discussion and invite comments directly from those who have been more quiet. Another technique is to go “around the room”, having the host of the call invite each person, by name, to share their thoughts. 

Open Letter to Everyone New to Working From Home

Note: This was originally posted on my old web site and on LinkedIn in early 2020, when offices started shutting down for the pandemic.

It seems likely that the number of people working from home will increase significantly in the coming weeks and months, so I wanted to put some notes together to help people make that transition. 

Do 

  • Take time to set up a good working environment for yourself. Think about what helps you to work well. Set up an environment where you are comfortable, where other events and people from your home won’t interfere or distract you. Indulge a bit – decorate your space, set up music if you like, make sure your chair is comfortable, and play with the positioning of your laptops, monitors, and everything else to be ergonomic.
  • Know thyself – You are now controlling your own environment. If you ask around, you’ll get a hundred different people adamantly telling you how to work effectively while remote. Listen to them all, but listen more to yourself to filter out which answers make sense specifically for you.
  • Increase communication with your team. You won’t have “water cooler” conversations, so you need to actively reach out to your coworkers to discuss even the small things. Some remote teams even set up specific times just to chat with each other, to help bring some of that casual conversation that bonds a team into the remote working experience.
  • Increase documentation of what is going on in your world. You are more disconnected from your manager now, and they have less of an idea where everything is at. So help each other out by documenting what you are working on, and how it is going. Most companies already have an intranet, a wiki, or similar tools that can be sued for this purpose. If you do, use them. If not, ask your IT department what options can be made available.
  • Set boundaries – Tell the people you live with that when you are working, they should act as if you are not home. Set personal boundaries as well – whatever hours you are working, do the work, then shut down and walk away from your desk. Don’t fall into the trap of lettiung your work overwhelm your life just because they now are in the same location.
  • Set Team Expectations – Talk to your coworkers about how you want the team to work. Is everyone working the same hours as you did in-office? What response times do you expect from email, instant messages, voices mails? Do you want to set aside specific times for meetings, and specific times to avoid meetings? If someone needs to step away from their desk for 5 minutes or an hour, do they need to let the team know? Have a talk about specific team norms along those lines, and make decisions so everyone knows what to expect from each other.
  • Enjoy the experience – step out of your home office when you take a break and chat with the people in your home. Step outside and take a walk at lunch. Think about the time you are not commuting, and take some pleasure in getting that time back. 

Don’t

  • Don’t stress over a lack of visibility – There is a tendency to want to prove that you are working from home effectively, which can lead to working overtime, or putting in so much energy on work that you burn out. We’re all in the same boat here, so if you lead people, trust them to do their work, and if you are an individual contributor, trust that your manager is placing that trust in you. 
  • Don’t hide problems – if something is not coming together well when setting up your home office, let people know quickly, so they can assist. If you find that being away from your coworkers makes you feel isolated, get on a call with them all tell them so. For any problems that arises, talk about it earlier than you would in an office. Problems of all sizes are easier to handle, and quicker to resolve, if you are actively talking to your team about it. So talk.
  • Don’t be inflexible with meeting agendas – When phone/video calls are the only contact you have with your team, be more flexible on casual chatting, or tangents during those calls. Otherwise, the team will feel more isolated, and you won’t know what other topics need to be discussed to keep your business going. Find the balance in letting people chat, and letting new topics comes up…. but also get in the habit of getting back on track. If a new topic can be discussed and decided in a few minutes, do it. But if it is turning into a larger discussion, make a note to talk about it in another call. And then schedule that call.
  • Don’t expect communication to work like it did in the office – Remote workers develop an innate understanding that real life is going on for everyone else behind their screens. People show up at your door, kids come into the office, bio breaks are needed… in short, life happens. On the tech side, networks drop, laptops crash, power goes out. When people will suddenly drop off of a call or become unresponsive in a conversation, it is just part of remote life. Set your expectations that communications may be slower, and disjointed.
  • Don’t let frustrations win – There will be frustrations, especially as large numbers of people go through the process of learning how to work and communicate remotely. You’ll get through it better if you can laugh a little at the chaos. Just keep talking, and trusting each other, and you’ll figure out what works best for your organization.