Slicing the day
I have noticed with myself (actually I know this for a very long time now already) that I am much more productive in the evenings then I am at the end of a working day. I also just finished reading Programming is all Design by Joakim Holman, Why Design Cannot be Billed by the Hour by Steve Zelle, Software on the Cheap by Uncle Bob Martin and The Design Dilemma by Kent Beck which made me want to put my thoughts into writing.
Now the main topic in these blog posts is design, writing Software is about design and not about producing code. And that design is an easily overlooked topic within the software industry. Sure for us developers our end product is the functionality that our code delivers, but the way we chose to get there makes a difference like between night and day. In the end choosing the road that leads through design is the more optimal path for creating software (I am aware that there are exceptions). Also note the interesting move from calling TDD Test Driven Development to Test Driven Design and even Design by Example.
Now design means thinking, because we need to really understand the problem space and find a solution that we think will solve a particular problem the best way possible given our constraints without eliminating the possibility that we were wrong. And also that it is a continuous process that will drive software development throughout the whole lifetime of the project.
So it is fair to say that this takes effort? I would actually say that it takes a lot of effort. So considering this assumption I can also safely assume that we would do a better job in the morning then in the afternoon? Right? Well I know I do, that is until I take a break and do something completely different and then after that continue to work on the problem. After such a break I have been able to recharge my internal battery and my mind is ready to do some more serious work.
So my ideal day is 4 hours in the morning and 4 hours in the evening. The time in between is my spare time where I can enjoy the weather (if only I didn’t live in Bergen), get the kids early from kindergarten or even do some shopping with my wife. Then after this change of focus I would continue to work on the problem space, but now fully recharged.
This brings some obvious problems along the way, one of them is that pairing (a practice that I value very much, read more about that here and here) becomes very difficult because most of your college’s would not be slicing the day like this. Remote pairing would solve some of these issues I believe.
One minimum step that I believe we should all consider is to move any meetings you have to the second part of the day, giving your full focus to the more difficult parts of the job, Designing software.
Now what I like to know from you is; what are your thoughts about this?


