Wednesday, August 20, 2008

8/19/08 Otug Meeting: Agile 08 Retrospective -- My Retrospective

The Object User Group hosted a retrospective of the Agile 08 conference. A very good group of approximately 25 people attended. Among the attendees were Tom and Mary Poppendieck.

What a pleasant surprise to finally meet them. I had a chance to chat with Mary. I didn't mention that I've been publicly admiring her writing on this blog. NOTE: Mary, you write excellent essays.

Agile 08 sounded like a wonderful conference. The vision for the conference was that of a large multi-stage music festival. Each stage hosted a theme, e.g., the main stage had the more well known speakers, but there were also stages with themes of leadership, coding, quality, etc. There was also live music that was provided by the attendees. It sounds like a wonderful time. Agile 09, is going to be in my home city of Chicago. I may just need to attend. Hopefully I will think of something valuable to say and have the opportunity to present.

One of the themes that surprised me is the movement away from iterations. Instead of having iterations, some teams just have regular releases based around a minimum useful feature set.

The advantage of having a system like this is the release is scheduled around the time to develop the most valuable features. If it takes 3 hours to develop/test/approve a feature that adds sufficient value to the business to warrant a release, why not have a release based on that feature instead of waiting until the next iteration? Iterationless development was said to be well suited to supporting products that are mature or in maintenance mode.

Iterationless agile development was recommended for mature teams that enjoy good relationships with their stakeholders. As Tom Poppendieck said, "Iterations are because people don't trust [each other]." Lacking iterations requires trust among all parties involved.

Another theme that was discussed is the practice of promiscuous pair programming. PPP, or 3P as I just called it, is a practice of pair programming and regularly changing pairs within a day. More experienced programmers would rotate between less experienced programmers. One of the benefits of doing this is gaining the benefit of having new perspectives from the less experienced programmer and knowledge transfer from the more experienced programmer.

The interval that was said to be optimal was between 45 minutes and 90 minutes. The discussion digressed around David Hussman's pomodoro, or tomato timer.

Hussman employs the use of a tomato shaped cooking timer to set work/break intervals. Using regular work/break intervals is a way that he believes allows for people to sustainably work well throughout the day.

I have never personally worked in a strictly paired environment. When I was interviewing at an XP shop, I asked some friends for feedback on the practice and most of them said that pairing for them became a pain point. They said that they would get sick of working so closely with the same person. I think that promiscuous pairing would do a good job to mitigate that risk.

The topic of distributed development was another well covered theme. Mary Poppendieck made a statement that strengthens my view on offshoring. She said that European companies are offshoring because there is a real shortage of qualified workers. They want talent and are looking to add value to their company.

One company, which I don't believe was named structure their organizations to support better integration between their European and Indian sites. One of the things that a company did are to create identical facilities. Another thing was having the Indian team start working at the European facility for weeks and then transfer to the Indian facility. They also have an ambassadorship program. The program gives developers the opportunity to work at the other site for a period(a month?). The results of the program are teams that do not suffer many of the challenges that many of us do.

This is a stark contrast to my own experience working in situations where the company is offshoring on the basis of cost. If the motivation is to reduce cost first and provide value second, it is the beginning of a race to the bottom.

How could we have a discussion about agile development with Mary Poppendieck without discussing Toyota? We didn't. Mary praised Kenji Hiranabe's presentation on new car development at Toyota. Some of the points that she noted about his presentation were some leadership traits and how they are perceived, positively/negatively, by Toyota's culture. One surprising negative trait is charisma.

Another interesting facet of Toyota's culture is that in meetings it is expected that the bad news be discussed first. This is a big contrast to other corporate meeting cultures, e.g., Target Corp, where meetings begin with a round of complimenting each other.

Mary described Toyota's product creation practice as a three part process: product conception, product development, and product production. Each stage must be completed before the next may begin. In each stage of the process a different schedule/finish criteria is used.

For Product Conception: it will not finish until it is complete. Product definition is so important that development will not begin until the definition is finished. I see this as being akin to creating a description of what characteristics the product will have.

For Product Development: it will be complete when it is time. Development is schedule driven, the finished state of the developed product will be finalized when time is up. This is akin to developing an early workable product and enhancing it with as many elements from a prioritized feature set as the schedule will allow.

After the meeting, about twenty of us enjoyed fantastic discussions and free iPhone app demos at the Davanni's pizza.

No comments: