Seems to me with the whole agile thing, we are going back to mandatory 9-to-5 with two fifteen minute breaks at 10am and 3pm and an hour for lunch at noon. I mean how else are people going to do 100% pair programming unless everyone is there at exactly the same time? All the mandatory collaboration, daily meetings and working together necessitates that working hours be strictly enforced. But are all these working hours _effective_ working hours? Do all people in any given group of people work as best they can at the same time? I highly doubt it. Just the fact that some people are morning people and some people are evening people means that we won’t all be thinking straight at the same time.
By way of example, here is my approximate schedule when I am working at peek capacity. All these times can vary from day to day depending on what is going on at work and in my real life.
- 7:15am – 10:00am – arrive and work for a two or three hours on my own. It is quiet at this hour with not many people in the office (hopefully) so I can get a lot of work done.
- 10:00am – 10:30am – goof off and chat with people arriving at the office. Talk about work and non-work things as they are getting ready to work and I am taking a break.
- 10:30am – 12:00pm – work on tasks and attend meetings if there are any. Whether I work on my own or paired all depends on what needs to be done.
- 12:00pm – 1:00pm – lunch
- 1:00pm – 4:00pm – again, work on whatever tasks and attend meetings if I have to. Sometimes paired, sometimes not. It all depends on what I am doing and what other people are doing.
- 4:00pm – whenever I go home – goof off and wind down. I like to be on the “observing” end of pair programming during this time so I can relax and not worry about typing. Work still gets done, but at a more leasurely tempo.
In case you couldn’t figure it out, I’m a morning person. I tend to get up early and get some good work done quickly and then level off as the day goes on. When working by myself, I tend to make fewer mistakes earlier in the day and if I have choice I tend to not do too much non-trivial work late in the day. That is my schedule. That is when I’m most effective. I’m not saying this is the best schedule for everyone by any means. In fact if it was the best schedule then you would all screw up my alone time at the beginning of my day. What I am saying is that I am sure everyone out there has a schedule that will work best for them. One guy I paired a lot with at one job usually came in around 11am and didn’t leave until 7 or 8 in the evening. I can only assume that that was what worked best for him. We would get together in the afternoon to do some pair work (although not every day), but we were both still productive during the non-peek office hours. I’m pretty sure everyone has these schedules, although I wonder if everyone has discovered their own schedule yet. Software development is a great industry to apply these natural schedules to since we don’t have real constraints (as opposed to process inflicted constraints) that other manufacturing industries have that force our workers into specific shift times. Unfortunately, a lot of agile methods seem to quash the flexibility needed to take advantage of these schedules. This hardly seems agile to me.