Tuesday, July 25, 2006

Calling 'Timeout!'

timeout - when play is temporarily suspended at the request of a team to discuss strategy

One of our team norms is anyone can call a timeout. When people are busy, either pair-programming or otherwise engaged, and someone needs to discuss or share something with the rest of the team, they can call a timeout. In response, we huddle in the bullpen or congregate around a whiteboard. A timeout is not called lightly because everyone knows it interrupts flow. And it takes each person 15 to 20 minutes to get back into their flow following the interruption. However, our team is self-organising and we make all our decisions by consensus. Calling a timeout causes everyone to down-tools and brings everyone together to focus on the reason for the timeout. It creates an opportunity for everyone to express their opinions and for the team to arrive at a sustainable agreement about the steps forward.


Tags: ,

Links to this post 

0 Comments

Monday, July 24, 2006

Communication haiku

Sit together, and
talk face-to-face to improve
communication


Tags:

Links to this post 

0 Comments

Sunday, July 23, 2006

Bullpen

In a recent post about our iteration zero I said that we were waiting for permission to construct a team bullpen. Well, here it is. It's conducive to osmotic communication and pair-programming, and it has enough room for team huddles and the daily stand-up around the planning board.


bullpen2
Originally uploaded by sjb140470.




bullpen
Originally uploaded by sjb140470.



Tags: ,

Links to this post 

1 Comments

Tuesday, July 18, 2006

Counting down to the iteration review

In a previous iteration we experienced a bit of a crunch leading up to the iteration review with our product owner, which resulted in a 1-hour slip to the iteration review. Not catastrophic admittedly, but this broke our rhythm and it's disappointing that we let it happen. How did this happen? On the penultimate day of the iteration we completed the user stories that we committed to deliver in the iteration planning game, so we agreed with the product owner to bring forward the next 2 user stories, each estimated at 1 ideal pair day. The team was so focused on getting the 2 additional user stories done that it basically lost track of time.

In the iteration's heartbeat retrospective the team asked if some structure could be put in place to help them have everything ready in time for the iteration review. Now our iteration review is conducted at 16:30 on a Tuesday and involves a demo of the iteration's user stories on the UAT box. And we use a cruisecontrol project to build and deploy to the UAT box. So I decided to implement a '3 cuts and you're out' strategy. I reconfigured the cruisecontrol project for UAT to perform 3 timed cuts (a cut is a full build and deployment). The first cut is taken at 15:00 and cruisecontrol fires a single 'beep'. The second cut is taken at 15:30 and cruisecontrol fires 2 'beeps'. The third and final cut is taken at 16:00 with cruisecontrol firing 3 'beeps'. Like a plane is guided in to land by runway lights, the audible beeps count the team down to the iteration review by deploying cuts of software from subversion. If user stories are not done by the third cut they are not included in the iteration review and they are not counted towards the team's velocity.


Tags: ,

Links to this post 

0 Comments

Sunday, July 16, 2006

Start iterations on Wednesdays

A working week runs Monday to Friday, so it feels natural to start an iteration on the Monday and finish it on the Friday. On the Amplifying Your Effectiveness site, Johanna Rothman asked 'Whats wrong with Wednesday?'

Our iterations are 1 week in duration and they start on Wednesday and finish on Tuesday. Friday night is the start of the weekend so it's great to always get away on time. And coming in on the Monday with energy levels boosted by the weekend's rest, you're ready for the push towards the iteration review on Tuesday.

Compare this to approaching the iteration review on Friday with depleted energy levels because you've worked a contiguous week on the iteration without a break. And then having to work late on Friday to get the iteration done. There's a good chance you'll be too exhausted to enjoy your Saturday.

I know which I prefer. I like starting iterations on Wednesdays.


Tags: ,

Links to this post 

2 Comments

Chartering

As part of a recent Iteration zero I facilitated a chartering session.

A chartering session helps a team understand the parameters of its work and its context within the project, preparing them to make well-informed decisions going forward. To begin understanding the project, the team identifies any assumptions and constraints and maps out the project community, highlighting the key stakeholders. By identifying the value the project will deliver to the business, the team can develop trust and confidence that the project is needed. Creating a charter provides an opportunity for the team to begin demonstrating self-organisation by articulating a shared project vision, defining their criteria for success (try using Remember the Future, an innovation game from Enthiosys, to include the customer's definitions of success relating to the business value to be delivered by the project), and agreeing the working practices to be used.

I can't share most of the charter information because of client-confidentiality, but I can outline the agreed working practices adopted by the team.

WORKING PRACTICES

The working practices the team were to use in the project were agreed by consensus.


workingpractices
Originally uploaded by sjb140470.

Planning and Estimation

1. The development team will estimate stories in Ideal Pair Days (the uninterrupted elapsed time that excludes meetings/sickness/days-off and does not include buffering). It is understood by the whole team that Ideal Pair Days are not equivalent to Man-Days. Estimates for stories include time for functional testing to be completed within the iteration.

2. The whole team will collaborate to evolve stories as they approach being planned into the next iteration. Over time, stories will be progressively split into smaller stories with a narrower functional focus. The stories planned into the next iteration will take between 1 and 2 Ideal Pair Days to complete.

3. The development team will use just-in-time tasking to manage the work to complete a story.


done
Originally uploaded by sjb140470.
4. For a story to be considered done (complete, ready for deployment to production and therefore counted in the team's velocity), the code should compile, have a simple design with the fewest classes, be well factored, have no duplication, be clean, structured to the Sun Java coding conventions, be self-documenting, communicate the programmer's intentions, be checked into the version control repository, be integrated and build successfully. All the unit tests should pass with a code coverage >85%. All the acceptance tests should pass. The story's implementation should be checked by a UI designer, the test team and the customer. It is understood by the whole team that this should be accomplished within an iteration.

Tracking Progress

1. The development team's progress in terms of expended effort and remaining effort will be tracked on a big visible burndown chart.

2. The number of running tested stories will be tracked on a big visible chart.

Test-Driven Development

1. The development team will write automated acceptance tests before writing implementation code. FIT will be used to directly test the business logic. Selenium will be used to test the UI (and the business logic indirectly).

2. The development team will write JUnit tests before writing Java implementation code.

3. The development team will write JSUnit tests before writing Javascript implementation code.

4. When a defect is located, the development team will write JUnit (and JSUnit) tests to reproduce the defect before fixing it.

Continuous Integration

1. The development team will integrate working code often, no longer than every 2 hours.

2. The development team will not tolerate broken builds. If the build is broken the team should refocus to fix the build immediately.

3. The development team will not check-in new code if the automated build is broken.

Coding

1. Developers will write all production code using pair programming.

2. Developers will write all production code to the Sun Java coding conventions.

3. The whole team owns all of the code.

4. The development team will use the code and tests as the primary source of any documentation to be produced.

Iterative and Incremental Development

1. The development team will deploy a new release of production-quality software to the DEMO/UAT environment every 4 weeks.

2. The development team will work to a weekly iteration cycle starting on a Wednesday and concluding on the following Tuesday. The completed stories will be deployed to the DEV environment at the end of the iteration.


Tags:

Links to this post 

0 Comments

Thursday, July 13, 2006

Listen to Kent Beck's latest thinking

Lunch with Kent Beck from Agitar. Listen to Kent Beck's latest thoughts and ideas on how software should be developed.


Tags:

Links to this post 

0 Comments

Wednesday, July 05, 2006

I'm burning up

Some time back I talked about keeping progress visible using burn-down and burn-up charts. At the time I said:
I can't decide whether I prefer the burn-up or the burn-down chart ... I think the burn-down chart is more emotionally powerful because reaching zero has special significance for me, motivating me to push ahead and complete my work.
Almost a year on, I've decided to switch to the burn-up chart. I still feel that, psychologically, the burn-down chart and working your way down to zero is more powerful than working your way up to 100% done. But I got fed up of redrawing the chart to shift the x-axis down every time the number of story points in the iteration changed. It's easy to do this in a spreadsheet, but I don't like creating big visible charts electronically.

In the current project, we're drawing our two charts - burn-up chart and running tested stories chart - on a whiteboard with a grid background.


burnupandrtf
Originally uploaded by sjb140470.


These charts are big, visibile and easy to update. The blue and green magnets identify 100% done in pair days and running tested stories, respectively.


Tags: ,

Links to this post 

0 Comments