View Single Post
Does anyone have any advice to offer, or to point to, re using Omnifocus for planning and directing programming tasks?

I'm slowly forming my own habits on this, but some ideas wouldn't hurt.

As an example of how a programming task might go from bright idea to implementation as I'm doing it right now:

Let's say that I have a long-term project called Widget Application. I'll have a single-action list called "Widget Planning". In here, I put general thoughts re the Widget Application, large and small, that aren't yet broken down into any actionable form. I put them all in a context that I call "Lists" that I keep permanently "On Hold" so that I don't see those items unless I'm doing a review.

Imagine that I did that and a Widget Planning list item called "Egg Balancing", a smallish new feature, floats to the top and I'm ready to work on it. I'll then create a project called "Implement Egg Balancing". Also, as soon as I have any future actions for the delivery of this feature (say, "Don't forget to load Egg Definition Sheet") I'll also create an On Hold project called "Deliver Egg Balancing" to hold those things.

The first action in Implement Egg Balancing, when I create it, will be Specify implementation actions.

When I work that first action, I create actions to Implement Egg Balancing, trying to cut them up into crankable widgets small enough to allow me to work on them even when I'm fairly brainless. So, to break up purely fictional tasks into very small pieces, I might have the following:

- Create empty BalanceEggs method placeholder.
- Insert BalanceEggs in TakeSomethingFromRefrigerator, passing Something and SomethingQuantity as a parameter.
- Insert BalanceEggs in PutSomethingInRefrigerator, passing Something and SomethingQuantity as a parameter.
- Create EggConverter method placeholder, passing FromEggType, FromEggQuantity, and ToEggType, and returning ToEggQuantity.
- Design Egg Definition Sheet to specify basic egg size and conversion factors from that size to other egg sizes.
- Code EggConverter to read in Egg Definition Sheet.
- Code EggConverter to convert incoming egg to arbitrary basic egg size.
- Code EggConverter to convert from arbitrary basic egg size to ToEggQuantity and pass quantity out.
- Code BalanceEggs to read existing AvailableEggResources number.
- Code BalanceEggs to call EggUnitConverter and calculate new AvailableEggResources number.
- Code BalanceEggs to write newly calculated AvailableEggResources number.

If I'm doing a task that I've done a dozen times before I'll have fewer actions and may even stop with the top "Implement Egg Balancing" action. If I'm coding something that I'm having trouble wrapping my mind around I'll use this level of detail, sometimes only getting a few bite-sized actions planned, and returning repeatedly to work out the next step. Sometimes this works, keeping me coding when my brain power runs low and I might otherwise stop. And sometimes it doesn't.

Do others put this much of their programming in OmniFocus, or do the details live elsewhere, or live purely in your head?