Written by amv71amv71 Tuesday, 13 September 2011 00:00
This is the second essay from our short-list of entries to our essay competition. All week we will be releasing an essay with the winners finally announced at the end of the week (16 September 2011).
This essay describes my own experiences from adopting an agile framework (specifically, scrum). It describes the problems that my team and I encountered during our first scrum project (referred to as “Glacier”) and how we have adapted to improve our approach during our second scrum project (referred to as “Forest”). It’s aimed more at developers but may be of interest to anyone practising scrum.
Background
At my waterfall organisation, the bulk of our live applications are legacy code (succinctly defined by Shore and WardenShore, Warden. The Art of Agile Development. Microsoft Press (2008) as “code you are afraid to change”). We have collectively been guilty of this:
Realising that this could not go on, we vowed to change. Scrum was introduced for Project Glacier.
Project 1: “Glacier”
Glacier took 35 sprints to complete. I summarise our difficulties:

The project came in way over time and budget, but scrum had opened our eyes. We learnt a lot for our second assignment, ”Forest”.
Project 2: “Forest”
Forest is still in development at present. In light of our past mistakes and current experiences, I offer some recommendations.
Before You Start, Prepare
Every scrum project needs a “sprint zero” - that is, a preparatory sprint:
Get the Right Product Owner
Just as developers generally make for poor testers, a poor choice of product owner can lead to problems. It might be tempting to have someone who more “speaks your language” – say, a “proxy” product owner who has some technical knowledge - but it’s dangerous; there is no substitute for a product owner who is interested in maximising product value. Insist on a customer and try to get them on site (even if it means a temporary relocation).
Keep your product owner involved. Our burn down charts during Glacier often looked like this:

Typical Burn Down Chart for Glacier Project (11th Hour Completion)
Here, we caused the stories to be signed off far too late. In some cases, the sprint failed – lack of communication and misunderstandings between the developers and the product owner were too late to fix:

Typical Burn Down Chart for Glacier Project (Insufficient Product Owner Involvement)
Strive for the perfect burn down: as soon as a story is ready for the product owner, get him/her over, get it tested and get it moved into Done. Target that blue line – a steady progress, not a sprint to the finish.
The Team Working Agreement
Recognising the different behaviours and communication styles across the team members during our first project made us see the need for a team working agreement (or “contract”) to which any team member must agree before joining. Here’s ours:
This is not set in stone; expect to refine your agreement over time.
When is Done, Done?
While the product owner defines his/her version of “done” (through functional and UAT scripts), so should your developer. Three sprints into our Forest project, we realised that our code was incomplete. A codebase without any associated unit, functional, coded UI or integration tests really has no guarantee of value. We were too busy working on functional coding but, criminally, had not considered testing. Our oversight meant that our first three sprints yielded not one “potentially shippable unit of value” and, strictly speaking, every sprint had failed - our project had become full of technical debtTerm introduced by programmer Ward Cunningham in 1992 to describe a “deferred investment in quality” - http://c2.com/doc/oopsla92.html, without our ever really realising it.

Technical Debt
You are never free from technical debt. It’s always there; it’s just up to your team how you manage it. Untested, non-refactored code and impediments all add to it. The longer you leave it, the more debt you accrue. By reducing your debt you reduce the snowball effect.
Our debt is currently being repaid through unit tests, coded UI tests, automated builds and by code coverage reports. This fixing has caused delays. It’s been quite painful having to refactor and introduce tests to accommodate existing code (far from the ideal of test driven development), but it’s also been empowering and satisfying.
Our “done” criteria, thought of as a technical working agreement, keeps debt reduced. It has evolved from functional acceptance to something far more substantial:
Finally:
Reduce your technical debt by writing maintainable and refactored code. If it’s done very frequently, refactoring need not be a trudge and keeps your code smell free. Test driven development gets you closer to bug-free code. Let your developers get a kick from this. Help them find the delight in writing clean, verifiable code.
The New and Improved Scrum Board
In light of past mistakes, our scrum board now looks like this:

Our Current Project’s Scrum Board Layout
(The reverse side of the board is also used – it provides an effective exploratory space for team discussion.)
The use of colour and greater maintenance of the board has helped enormously. Our simple board rules are:
We are dependent on this board now. While our dependence on the board has grown, the use of electronic process support tools has dropped. Why? It’s far more “hidden”. A physical board is big, colourful, dynamic and immediate; drilling down through a labyrinthine application is far less spontaneous and provides opportunities to “hide behind the tool”Electronic tools used for process management still have a significant role for automated tasks, such as work item queries or automated progress report generation, but they should support the process, not replace it. Keep the front line physical..
For those colleagues who cannot be located with you, take a daily digital camera photo (use a phone) and store it on your networkA camera has other uses as well – a shot of the scrum board at the beginning and the end of a sprint provides good discussion material for your end-of-sprint retrospective and goes some way to achieving ISO9001 “Quality Management Systems” accreditation.. Or grab a webcam, set it to refresh every 30 minutes, point it at the board and send the URL to anyone who wants it. Your stakeholders will feel more involved and you continue to demonstrate your openness as a team.
Personal Timeboxing
Our scrum project has a number of timeboxed stages:

Global Timeboxed View of A Project
This timeboxed structure can be refined further, to include a team member’s day:

Refined Timebox View of A Scrum Team Member’s Day
Francesco Cirillo's Pomodoro Technique (http://www.pomodorotechnique.com/) describes a timeboxed structure to a team member’s day. This “25 minute personal sprint” approach instils a natural discipline, a sense of achievement, improves focus and improves your estimation skills. The technique may eventually become so natural that you may no longer need a ticking plastic tomatoThere are also smartphone apps such as Pomodoro Time Management for iPhone (iTunes link: http://bit.ly/itunespom) or Pomodroido for Android (http://www.pomodroido.com/) but again, if you can, keep things physical and therefore visible.!
The Importance of Fun
Introducing some fun or colour into your week bonds your team and increases productivity:
Be creative; keep it visible and fun. Just remember the professional part - you never know who could turn up!
Keeping the Team Well Oiled
Despite problems during the Glacier project, it made sense to try to keep the same team for Forest, as they had started to bondSee Tuckman's four stages of group development - http://en.wikipedia.org/wiki/Tuckman's_stages_of_group_development and this was a valuable commodity. Simple ideas can further improve team morale and motivation:
Conclusion
Is scrum working for us? Yes! Since its adoption there have been moments of difficulty, apathy and questioning as to whether the extra overhead is really worth it. Well, it really is. The team have bonded more (both professionally, technically and socially), have become more open, have more energy and they talk more (and more openly). We’re also failing faster – a good thing – and are able to identify dead ends much sooner. We’re far from masters of the process, but we’re not “scrum buts”Term introduced by Jeff Sutherland when devising a scored competency test for use with Nokia. Take the test for your team at http://antoine.vernois.net/scrumbut/ . either.
Software development should be productive and fun. The conclusions shared in this essay have hopefully given you food for thought in your organisation. Happy scrumming!
| < Prev | Next > |
|---|