Develop a program in discrete episodes
Develop a program in discrete episodes. Select appropriate deliverables for an episode and commit sufficient mind share to deliver them. Be aware of the rise in concentration as the episode progresses.
The act of programming is like a project in the small. One starts with an idea of what one wants to achieve. The requirements are sought and clarified, an understanding of what one needs to do is achieved. The context is investigated and a solution postulated and investigated, then selected, coded and tested. One may go through several iterations until the initial idea has been achieved and the tests pass. Yet the understanding of the needs and the context is relatively ephemeral. If interrupted, the understanding will rapidly slip away. This process proceeds in cycles of around 2 hours duration, though that is a very approximate measure. Note that when talking about seeking and clarifying requirements one does not necessarily need to go back to the customer, in one’s context this may mean seeking out a relevant design model. Similarly, investigating context may be looking at what code needs to be altered or extended; ‘testing’ may be no more than checking the code compiles – all this depends on the development process. In XP, the ProgrammingEpisode may indeed be a mini development iteration, with requirements coming from the customer, design, refactoring and regression testing, adding the new functionality, proper unit testing and integration of the code into the main stream for the next release, all peer reviewed by the programming partner, and all within an episode of no more than a few hours duration.
The important features are the selection of a goal that is the right size and has a credible chance of success in a single episode, and the need to maintain concentration and avoid distractions for that time. See in particular SacrificeOnePerson.