I recently wrote about my experience of doing agile development in a team of one, where I questioned the idea that ‘If your the only member of the team is it really worth going through the same agile development process that you would in a team of eight?’
One interesting test for the project was that it was not going to be developed in one go, the days spent on this project would need to fit around other work and I want to see how using agile techniques could help to keep the momentum and also retain the knowledge from the previous activities in a format that would be easy to pick up.
Sprint 1 – Day 1 was 15th May 2009
Sprint 1 – Day 2 was 4th June 2009 a full 20 days gap!
Always start the day with a scrum and ensure that you come prepared. This meant that I needed to be able to answer the following questions
- What did you achieve yesterday?
- What are you going to achieve today?
- Any blockers preventing you from doing this?
Take a minute, try and think back 20 days and remember exactly what you had achieved? Difficult isn’t it! This is where using a process really helped, I started by looking at the my white board to see where I left the project.
Interestingly I had not ‘Done’ anything (refer to Day 1 for the definition of Done and how I structure my white board), my Burndown for Day 1 was looking very sad so I won’t even show it. What I could however see was that I had completed the work on one story, the second story was in progress and that I had not started the 3rd. The observant will also notice I have a couple of new stories in the backlog.
If I had not been working on the project for the past 20 days how come there are new stories?
Adding to the Backlog
One of the tenets of being agile is that you work at a sustainable pace, you don’t do more work than is possible and you allow your team to go home, see the family and have a beer or two. What happens when you team is having that beer? They think about work, and have ideas about ways to do things or new requirements and then write these down as new stories. The same is true for the business, whilst the team is busy working on the current iteration the business is thinking about what they need, reacting to change and then feeding this into the backlog as new stories. They may even take away some stories that are no longer needed.
What does this mean?
Well for Sprint 1 nothing, we have agreed a short period of work where we can focus on the deliverables. The new stories will be considered for Sprint 2 and for any removed stories we will have the warm feeling that we had not spent too long on in big up front design tasks and documentation.
The Rest of Day 2
After the scrum I reviewed the solution I had put together, and compared this to the stories. At the end of Day 1 I had a WSP and some features that meant I could see what I had done and actually use it. The ability to use the solution very early in the process is another of the big benefits to being agile. It allows people to see it for real, to make comment and also to make changes if it is not how they envisaged it.
Needless to say I made some changes, there were bits that I had added that on reflection were not required, I removed the extra items and did some refactoring of the solution to make it more compact and understandable.
The rest of the day went pretty well, and at the end of Sprint 1 I had not actually written any C# code or created any Unit Tests. The solution at the end of the sprint I had completed the three stories I had planned. I have to confess that I did do a few extra hours work at the end of this day (Sprint) in order to complete the stories. This can be a common scenario where the a stress levels and work will increase towards the end of the Sprint. The same if true of Waterfall projects but at the end of these projects there is just so much more that is expected to be done the stress levels go off the scale.
The final tasks for the end of Sprint 1 was to do a “Show and Tell” to the business. To make this more real, and to be able to provide a summary once the project is released I record a Screencast demonstrating what had been done. It may sound silly doing the screen cast or doing a show and tell to yourself, however what it does do is make you bring together everything and ensure that what you said was done, actually was done.
Sprint 1 Retrospective
In order to improve our processes, to produce better quality solutions and to make ourselves more productive we need to look at what happened in the Sprint, the good things as well as the challenging ones and also look for ways to improve.
Things that went well
- Adopted great agile techniques
- Was able to pickup after a break
- Good use of tools like WSPBuilder and hosted source control
Things to improve on
- Testing was manual – need more automation of integration and acceptance tests
- Testing was on single machine – need to test on multi server farm configuration
- Project break was too long – final delivery will be too late at current pace
If you want to learn how to be better at retrospectives I recommend getting a copy of Agile Retrospectives, Making Good Teams Great by Esther Derby and Diana Larsen.
Based on the experience so far I can say that adopting agile techniques in a team of one really is something that everyone should do. I agree just cranking out code some developers could be a fair bit more productive up front than I have been. However if the project takes off and you need to bring in more help or you have a long break the project will eventually fail without these process in place.
And the biggest benefit to doing this is that you learn the benefits of being agile, you understand why it works and you will be able to add this to your CV and Life experience and go on to become a much better developer. You will be able to challenge the traditional practices in your organisation based on experience and not just hearsay.