What does it take to become an Agile developer? I recently was in a situation where the development team was completing tasks required for a sprint, but the overall stories were not being completed. The team allocated development tasks to individual developers and also allocated overall responsibility for each story to individual developers. However, for several sprints, the development tasks were completed but a number of the stories were not.
I don’t think the developers on the team clearly understood what it meant to be responsible for a story. I think most saw their primary responsibility as completing development tasks. Completing stories was seen as kind of an administrative coordination function. It’s more than that, in my opinion – a developer who takes responsibility for stories in a sprint needs to be responsible for:
- Understanding the business purpose of the story and defining and analyzing possible alternative ways of satisfying the business purpose of the story
- Planning and estimating development tasks with other developers that are required to fulfill the story
- Working directly with the Product Owner to clarify and further define the details of how the story should be implemented
- Providing guidance to other developers as necessary who are engaged in development tasks associated with the story
- Taking overall responsibility for “shepherding” the story through the process all the way to (and including) UAT. The developer responsible for the story should lead the presentation of the completed story to the Product Owner in UAT (or Sprint Review)
I think it’s sometimes taken for granted that any developer can easily move into an Agile project – I don’t believe it’s that simple and my experience is that some developers have a hard time making that transition. Some developers just want to write code and are not even interested in taking on these additional responsibilities.
There are a lot of misconceptions about Agile teams. There is no doubt that “Agile is a team sport”, but have you really thought about lessons learned from team sports that can be applied to Agile teams? Many people have the view that an ideal Agile team is a team of peers where there is no specialization among people on the team, everyone on the team is capable of performing any role, and everyone on the team is also responsible for everything. That’s a very idealistic view and may not be the best way for Agile teams to work. For example:
- Is it inconsistent with Agile for a more senior-level Tech Lead to provide direction to other more junior-level developers? My experience in the real world is that you don’t often find teams who are all peers and it may not be practical or cost-effective for a company to staff a development team with all senior-level people who are all self-sufficient. The key thing is that you can have people at multiple levels of proficiency on a team without creating a formalized hierarchical structure that inhibits individual productivity and initiative.
- Is it inconsistent with Agile for individual people on the team to have defined roles like QA testing and does that limit the ability of the team to be cohesive? Think of a football team – each player has a role that he specializes in and is good at that role. A football team probably wouldn’t be very good if there was no specialization and everyone did a little of everything. The center might be a 300 pound gorilla and might be very good at blocking and tackling, but he may not be very good at throwing touchdown passes. Imagine the 180 pound quarterback attempting to play on the front line and blocking and imagine the 300+ pound center attempting to play the role of the nimble quarterback throwing passes.Specialization on a team doesn’t preclude developing high-performance teams with very cohesive teamwork. Having someone on a team who is skilled in QA testing and is specialized in playing that role is a lot different than having a separate QA group outside of the development team who specializes in QA testing.
- Some people seem to think that having well-defined individual roles and accountability is inconsistent with having overall team accountability – shouldn’t everyone on the team be responsible for everything? Think of a football team again – everyone on the team, as a whole, is responsible for winning; but what if everyone on the team just ran around without defined roles that they were responsible for and without defined plays trying to figure out what to do to get the ball across the finish line? It wouldn’t be very likely to be a very high-performance winning team. Teams where “everyone is responsible for everything” and there is no individual accountability for anything are not likely to be very effective.
Agile Is a Lot Like Playing Golf -there are a number of things about Agile that remind me of playing golf.
- In the game of golf, if you didn’t have to get the ball in the hole, my golf score would be a lot better. Imagine if the requirement in golf was only to get the ball somewhere near the green – if you didn’t actually have to get it in the hole, my score would be a lot better, but that would be very misleading, wouldn’t it?That’s equivalent to a team that doesn’t have a clear definition of “Done”. On the surface, it may look like they’re completing sprints successfully, but when you look deeper, you sometimes discover that there is not a good process to validate that the work is really complete and really meets the business need it is intended to fulfill.
- The reason golf can be such a difficult and frustrating game to master is that it requires a fair amount of discipline, lots of practice, and lots of patience and persistence to be good at it – Agile is the same way.
- Golf also requires some planning and strategy – the best players carefully consider every shot; They don’t just go out there and whack the ball around.