spencegreen.com |
Stuff |
The key to efficient programmer tasking involves telling programmers exactly what to do and then allowing them the space to do it. Practically, this means providing them with specific development tasks in a sequential order. If the project’s tasking model can achieve these mischievously difficult conditions, then programmers can enter the ‘Flow’, which is impossible with heavy context-switching.
Below, I describe the task model used in my team’s software process. An iterative software project has three task types:
An effective tasking model has several key requirements:
Finally, each engineer should have a personalized view of his work assignments that is not cluttered by unrelated tasks. He can immediately determine not only the current day’s objective, but also his future workload.
Organization
All tasks should appear in centralized container that is collectively owned, ie all programmers have write permissions to it. Most web-based project management tools (FogBugz, Basecamp) and enterprise portal platforms (OpenText Livelink, Microsoft Sharepoint) can satisfy this requirement. Tasks are organized in the “To do List” using the following abstractions:
If your project management tool is integrated with both your requirements management system and you change management (CM) tool, then you can use the same organizer for IRs and CRs. Otherwise, you must create a separate tasking model in your CM package.
What to Do Next
Programmers should receive an email notification after a task is assigned to them. They must then provide estimates:
IMPORTANT: Programmers should not change task due dates if they encounter a delay! The tasking activity has little benefit unless programmers improve their personal estimation skills. When an engineer changes a task status to ‘Completed’, the task manager will record the differential between the estimated ‘Due Date’ and the ‘Completed Date’. Programmers should challenge themselves to minimize this interval.
A Daily Regime…
Programmers start their days with the following process:
IMPORTANT: The task list has no purpose unless it actually reflects what the programmers are doing during the day. THEY are the source of project status, for management without data is nothing more than sorcery. Good estimates build credibility, which the team should gather rapaciously.
Good user interface design is mischievously hard. “Simplicity” is the fad these days, thanks to Apple and indie software teams such as 37signals. But simplicity follows complexity, and wading through complexity requires separating vital things from everything else. Do you think that it’s easy to identify important ideas and fastidiously adhere to them? Stop smoking. Don’t lust. Call your mother daily. Don’t be mean. Simple doesn’t mean easy.
Here are several principles that have emerged from my reading over the last few weeks. Remember that methodologies only supply the raw material for good design: feature sets, response requirements, accessibility needs, etc. Making a design come together requires practice, taste, and a little luck.
If you could step into someone else’s shoes for a day, who would it be and why?
In an interview during the 1994 US Amateur Golf tournament, a reporter asked a giraffe-like, 19-year-old competitor who he most admired in the sport. “Me,” replied the young golfer.
“What?” said the incredulous writer.
“You see,” Tiger Woods explained, “every golfer has weaknesses. I take the best qualities from each player and add them to an ideal golfer. I aspire to play like him, and since he only exists in my head, I must respond ‘me’.”
As an avid reader of biographies and student of people’s lives, I too have developed an Ideal Man in my mind. He is at once many people and no one at all. I would like to be him, but only for a day. Let me describe him to you.
My Ideal lives a simple life predicated on a personal code. Like Andrea Bittel, he believes that liberation comes not from total freedom, but from “living within a set of limitations that we have prescribed for ourselves.” He agrees with the equanimous Victorian explorer Sir Richard Burton that, “He noblest lives and noblest dies / who makes and keeps his self-made laws.” He is frugal, acquiring things only in light of need. He keeps promises and is deceptively modest. He rises with the sun, works vigorously, and is obsessed with the quality of his labor. At the same time, he has a deep love of humanity. He greets the cashier at the gas station by name and gives his money sacrificially.
My Ideal believes in God. He knows that economy offers no solution to human suffering, and that money and hope have a false correlation. He has seen that dogmatic empiricism leads not to truth, but to arid, dehumanizing stoicism. For him, modernity is just another boring experiment with self-help, not an existential panacea. He is humble, because he knows that he is flawed.
My Ideal is a compulsive learner and producer. A quote from James hangs over his desk: “If a person keeps faithfully busy each hour of the working day, he can count on waking up some morning to find himself one of the competent ones of his generation.” He knows that time is the only real capital a man has, so he stewards his own with miserly care. He seeks vital knowledge, knowing that it will lead to vital output.
Finally, My Ideal is a fatalist. By understanding that his life’s work will be confined to the section of the library where students go to hide, he has liberated himself from the tyranny of the word ‘legacy.’ He does not waste minutes, because he knows that he has few of them. He has planned his own funeral well in advance, because inevitable things do not scare him.
Why would I be this person for a day? I believe that life is a constant struggle against imperfection. At times, it would be encouraging to know what heaven felt like.
Powered by WordPress
Entries and comments feeds.
Valid XHTML and CSS.