The strange places my mind wanders to while preparing dinner, such as agile cooking practices. A few points to ponder:
· Just-in-time cooking and coding. I love going to the grocery store (or even better, the farmer’s market) to get ingredients for that night’s dinner. The trip is quick, the planning is quick, and the ingredients are fresh. I could get additional items, but that just adds to the time in the store, rather than helping me cook. The same concept applies with just-in-time coding practices. That one new feature or bug-fix can be handled so much quicker if all the additional possibilities don’t get layered on top. Of course, refactoring may need to happen, but only when the customer decides that they need the tomatoes and balsamic glaze, not before.
· Planning for meals and releases. I usually plan a menu for the week. I may not get all the groceries for all the meals at one time – fresh spinach will be gross if I buy it 5 days ahead of time – but the plan is in place. This is similar to iteration or release planning, where you can identify a 3000-foot plan, before you have to get into the details (I know I need a button on this page; I can talk with the product owner the morning I start to code before I decide where it goes).
· Clean as you go. Unit tests and refactoring are like the kitchen tools I use. I need to make sure that they are clean and ready to go when I need them. It feels like a horrible waste of time to have to clean the kitchen up before I can even start to cook, so, just like in coding, I make sure that everything’s in its place (refactored), and clean (tested), before I say I’m done.
Hmm. I’m hungry!