As I said in my last post, I don’t like to have more than one function point in progress at one time. I also do not like to leave a function point in progress over multiple days. (For purposes of these articles, I define “function point” as “an atomic unit of useful behavior” — i.e. it’s a small and relatively self-contained unit of work). It’s been my experience that code that made perfect sense at 5 PM on Tuesday can become indecipherable at 8 AM on a Wednesday. So I like to leave at the end of the day with all my test cases passing. 

I like to structure my days as follows:

  • When I get in, I spend the first few minutes reviewing what I did yesterday and planning what I want to do today. I factor in things like meetings — if I have a big complex task to tackle and my day is broken up by meetings, I’ll generally push it to another day and work on smaller stuff on the meeting-heavy day. 
  • During the day, I edit, compile, build, and test.
  • As I approach the end of the day, I try to leave a 30-minute buffer at the end of the day. I wrap up my last piece of work, run my test cases, and check in the code. 
  • I spend the last bit of the day on planning for tomorrow, or perhaps on updating status reports, answering email, etc.
  • If all else fails and I do have to leave with a significant chunk of work in progress, I spend the last few minutes of the day writing down the important details of where I am, what needs to be done, etc, so I don’t let something important slip by. But I try not to let this happen often.