The Omni Group Forums

The Omni Group Forums (http://forums.omnigroup.com/index.php)
-   Applying OmniFocus (http://forums.omnigroup.com/forumdisplay.php?f=51)
-   -   OmniFocus and Programming? (http://forums.omnigroup.com/showthread.php?t=9775)

Gardener 2008-09-05 11:44 AM

OmniFocus and Programming?
 
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?

Gardener

curt.clifton 2008-09-05 12:47 PM

Gardner,

Your system seems pretty good. I tend not to put a great deal of detail on programming tasks into OF. I think of small-scale programming as a bit like discovery writing—I don't know what I don't know until I set out to write the code. Given that, planning detailed steps isn't very productive for me. I put fine-grained actions into the code as comments, preceded by one of TODO, FIXME, or CONSIDER. If I'm going to leave a coding project for awhile, I might capture some next actions in OF that point me at the important such comments.

For larger programs, some sort of bug/feature tracker is a must. I haven't worked on a larger project in a couple of years—my paycheck comes from teaching now—so can't offer advice on integrating a bug tracker with OF. Others on the forums have looked into that I know.

bcalloway 2008-09-08 06:50 AM

I tend to agree with Curt. I find it most helpful to create a TODO (in TextMate) inline. That way, I don't have to switch apps to get something out of my head. TexMate has a very useful feature for showing all todo's, etc.

Here's my workflow:

[B]Basecamp[/B]
Used as a collaborative planning tool for our dev team

[B]OmniFocus[/B]
My personal GTP app, basecamp tasks get sent to OF via Curt's awesome mail script. I also tweak the project in OF by setting up milestones and proper "next action" for a 10,000 ft view. Again, TextMate handles the more granular "to-dos" such as "Make sure the user can delete items".

[B]TextMate[/B]
Used for day-to-day programming and for granular "to-dos" using the TODO bundle.

[B]SCM/Bug tracking[/B]
I've been playing with Redmine lately, which is similar to TRAC but written in Ruby. It supports bug tracking and displaying roadmaps and your SCM repo. Looks like it "could" have the ability to hook with OF, but I haven't gotten that far.

[B]Future request/wishlist[/B]
1. I would LOVE the ability to have Basecamp to-do's arrive in my mail inbox, then get placed in OF by the title of the to-do. Currently, the OF mail script uses the generic Basecamp subject line as the to-do task name. I wonder if the script can be modified for this? I know nothing about AppleScript.

2. Sharing a common OF project across a team. I know that the OF 1.1 supports syncing to WebDAV, but I wonder about the possibility of separating projects as independant databases? For example, most of my team uses OF for personal and work. It would be cool to have a central hosted version that our PM could access and add tasks to, then those projects could get "pushed" to each client app. "Kind of" like subscribing to an iCal feed, but 2-way.

We keep looking for a way to leaverage OF in a team environment, anyone have experiences to share? Would love to hear about other programmers workflow.

ryanirelan 2008-11-10 07:18 PM

[QUOTE=bcalloway;46749]
1. I would LOVE the ability to have Basecamp to-do's arrive in my mail inbox, then get placed in OF by the title of the to-do. Currently, the OF mail script uses the generic Basecamp subject line as the to-do task name. I wonder if the script can be modified for this? I know nothing about AppleScript.
[/QUOTE]

I put together a script to do this. It creates the task name from the to-do name in the Basecamp email. You need the script and a rule in Apple Mail.

Details: [URL="http://www.ryanirelan.com/blog/entry/automate-omnifocus-tasks-from-basecamp-to-dos/"]Automate OmniFocus Tasks from Basecamp To-Dos[/URL]

bcalloway 2008-11-11 11:00 AM

[QUOTE=ryanirelan;50604]I put together a script to do this. It creates the task name from the to-do name in the Basecamp email. You need the script and a rule in Apple Mail.

Details: [URL="http://www.ryanirelan.com/blog/entry/automate-omnifocus-tasks-from-basecamp-to-dos/"]Automate OmniFocus Tasks from Basecamp To-Dos[/URL][/QUOTE]

You absolutely rock the house! Works perfectly.

Thanks so much!!!

lars.steiger 2008-11-23 08:03 PM

Hi,

I put a little service called Spootnik ([url]http://www.spootnik.net[/url]) together which synchronizes Basecamp directly with OmniFocus.

It is currently in private beta. If you like to test-drive it you can sign up here [url]http://www.spootnik.net/signup.html[/url] and join the private beta crew. It's always hard to find good private beta astronauts. You're very welcome!

Best regards,
Lars

ryanirelan 2008-11-29 06:44 PM

[QUOTE=bcalloway;50645]You absolutely rock the house! Works perfectly.

Thanks so much!!![/QUOTE]

Glad it's working for you! :)


All times are GMT -8. The time now is 10:24 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2019, vBulletin Solutions, Inc.