I haven't read about this anywhere, but here are my thoughts: programming is inherently intellectually hard. I remember reading in Code Complete something that stuck with me: the author pushing and working on something long hours only to spend the rest of the week fixing it.

This is something managers don't understand. For example, in the last company I worked in, we were expected to switch between tasks and projects as if we were switching from tightening bolts to painting in an assembly line. Getting into a project or fixing a bug, especially with the terrible code we had to maintain, has a lot of momentum and takes a while to get all the needed information in your head and start getting things done.

I was thinking it would be good to concentrate design and coding in the early hours when we tend to stay more alert and do training, administration or meetings in the afternoon. Has anyone thought about this before? any studies?

  • 11
    Don't assume everyone is "more alert" in the morning just because you are. – nikie Dec 17 '11 at 15:18
  • 4
    As @nikie said; I'm most productive between the hours of 10pm and 3am when nobody is bothering me and I can get into "the zone". I'm not a morning person. – Deco Dec 17 '11 at 16:39
  • 2
    Not having kids, I've shown up to work as late as 11:30 AM. A bit of a risky move, but my immediate management does know that I will get my stuff done and will put my 8+ hours. Another co-worker of mine starts around 4 AM and leaves at 1PM. It is probably a good thing that she is not around all the time because she finds so many bugs that developers are afraid of her. I think that some people (dare I say the creative type) work best when you give them freedom. I understand that time difference could cause drag, but meeting and administrative stuff should be kept to a minimum anyway. – Job Dec 17 '11 at 17:18
  • 2
    Devs need to work in the morning so they can discuss there morning activities in afternoon meetings. :) – Morons Dec 18 '11 at 2:05
  • Maybe "alert" wasn't the best word, I just know that my cognitive abilities peak in the early morning. I can grasp things more effortlessly, which is just what I need to produce good quality code. I'm not sure "alert" or "productive" might mean something slightly different. For example later in the day I can be more awake but also stressed out which prevents me from thinking clearly. – DPM Dec 19 '11 at 20:54

First off, I'd suggest that other that organizing when items need to be delivered, project managers should stay out of the business of telling the development team when to perform certain activities. The team should be able to figure out for themselves when they need to do what, based on the priorities the project manager makes.

That said, meetings are necessary, and the best recommendation that I've seen and followed is to designate a small time frame in which meetings should occur, so that the team can focus on its tasks the rest of the day. Generally, I like to see "meeting time" nestled near the lunch hour, so that the morning people have had their most productive stretch already, and the evening people will have time in the afternoon.

I wouldn't put much credence in there being one good time for design.

Also, the scenario you present sounds like a prime example of an organization needing to do TDD. I hope that''s not too contradictory, based on what I said above (mandating tests first).


I don't think there is a "good time" and a "bad time" for a specific type of task throughout the day for anybody that you could apply universally. For example I'm not much of a morning person but sometimes I wake up in the early morning and remote in because something's just clicked and I realised exactly what needed to be done. On most days, you really don't to talk to me before 10am, and you really don't want be one of those people who are all chirpy and chipper at 6am :) if you need to talk to me that early.

Point being, people are different and the best thing you can do as a manager is to recognise that and cater to it to the extent it doesn't cause problems within the team - you still need to make sure that there is enough overlap in people's hours so they can communicate and don't have someone waiting half a day to get an answer from Joe because Joe doesn't start work until eight hours after Jill came in (assuming they're working in the same timezone).

The most important thing you can do to increase programmer productivity (apart from getting programmers to learn how to touch type) is to ensure a minimum of context switches and interruptions. So point them in the direction they need to go, put the goals in front of them (when it needs to be done, what needs to be done) and ensure that they do stay on course and don't wander off into the wilds.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.