This presentation is from a recent talk I did at an event in Houston called Agile Comes to You. It was co-sponsored by Rally, Accurev, Urbancode and Credera.
The presentation discusses the tangible benefits and challenges of Agile development. This is definitely a practical application of Agile, from real experiences.
Credera is a management and technology consulting firm. We help our clients with their toughest technology problems and utilize Agile and traditional project management tools and techniques to help them implement strategic initiatives.
Thank you. I’m excited to be here today with a chance to talk with you about Agile and learn about some tools later on that help make our lives easier. I’ve been doing software development for about 12 years and learned about Agile by name about 7 years ago. I got very interested in it, starting reading about it and incorporating some of the concepts into our projects when I could. I’ve been fortunate to get to witness and be a part of many different Agile projects over the last 7 years and look forward to sharing some of my experiences – both good and bad.
So you’re all here because you and your organization are in some way interested in Agile and improving your software development processes. You each probably fit into one of the four buckets I’ve got up here on the screen and all of my clients have over the years. Each stage has its own benefits, challenges and pitfalls. By a show of hands, how many of you are in the “just learning” phase? Dipping toe and maybe trying it on a small project? Trying Hard – usually meaning your whole department / organization is saying you are doing Agile, but the kinks aren’t worked out yet? And how many are doing it and feel like it is a well-oiled machine?
This is obviously an exaggeration, but not all that uncommon. I’ve seen many organizations that “go Agile” just by no longer producing requirements documents and project plans and calling the PM a scrummaster instead of a PM. That’s clearly not the intent for Agile and is really just a reckless and unpredictable way to do software development.What are the reasons you are “going Agile” or went Agile if you did it long ago? What benefits are you after?
One of the problems I’ve seen many times with a traditional SDLC is a project status that shows green all the way through. At the ¼ mark of the project, based on duration, you can be sure the project status report will show 25%. At the ½ mark of the project, 50% and at the ¾ mark, 75% - but then, when you are truly into development and running into the real issues that have existing all along projects have a tendency to stall and you see that getting that last 25% of the project done takes 75% of the overall time. The project goes over-schedule and over-budget and worse yet, it is a surprise to executives.
With Agile, you start completing the actual work, end-to-end very early in the project and so encounter and resolve issues as they come up instead of postponing those risks. You can then use visual tools like a burn down chart to show your true progress and indicate that there may be a problem while there is still time to resolve it.
Another common problem I’ve seen in more traditional development organizations is that the project managers, while dutifully trying to update their project plans and status reports have to make the rounds, asking each developer what they are working on, if it is done and what else needs to be done to complete something in their project plan that is called “Develop the Checkout Flow”. I’ve been on both ends of this role before and they are both frustrating. As a developer, you feel like you are being micro-managed by someone that doesn’t understand what you are doing. As a PM, you’re just doing your job and trying to keep up with the status of the project and don’t have any other way to understand task-level status and how that relates to larger items in a project plan.
So, you see a lot of Agile teams implementing task boards, kanban boards or some online Agile management tool to help with this. This team used note cards to represent each task, which was broken down from each user story in that iteration. It is easy to see exactly what each person is working on, the current status of all tasks / user stories and in a glance get a feel for how we are doing for this iteration. For example, if you look at the board when you are ¾ through a sprint and see most tasks are still over to the left in TO BE DONE or IN PROGRESS – you know you’re in trouble.
Another very common problem in software development is estimation and planning. There was a large survey done recently that studied thousands of IT projects and over 70% either never completed at all or were completed significantly over schedule and budget. Part of that problem is caused by the scenario depicted above – but not all of it. Even when teams are given proper time to estimate they often miss it big. Agile gives you a couple of tools for this. First, something we haven’t talked about. Because you track velocity in Agile and you get regular feedback on your actual velocity compared to your estimates – you should have a much better idea what your true velocity is and whether or not you typically over or under estimate certain types of tasks. Another problem depicted here is one person (usually PM or lead developer) giving the entire estimate for the work the team will do. Think about asking someone how long it would take to run a mile. Wouldn’t it be much better to ask the actual person who will be running it and get feedback from others on weather conditions, uphill / downhill, etc. There is a great process called Planning Poker that is popular among Agile teams.
Planning poker is a collaborative estimation technique that helps to minimize the impact of anchoring or group think.
With planning poker, you use a physical set of cards – typically labeled with the Fibonochi sequence up to 13 and then on big increments after that (because you don’t want to be debating the difference between 10 and 12 days for an estimate. Instead forcing things to be 8 or 13, 21, etc.).
With planning poker, each team member “votes” at the same time – eliminating the anchoring effect. Significant differences can then be discussed.
So far, we’ve talked about some things Agile does well and really helps us with. Now lets shift focus to some common problems I’ve seen in different organizations as they try to be Agile.
The first pitfall is an organizations understanding of Agile. Just like in traditional project management, proper expectation setting is very important up front. It is important to educate your teams, peers and supervisors what Agile is and what it isn’t. The best way I’ve found is through piloting Agile on a small initiative and then beginning to roll it out to other projects and departments.
Even though you’re using Agile – there are many times you still get backed into a date and scope. There isn’t much that can help with this, but I have seen organizations that do a good job with Agile seem to develop a more trusting relationship between management and development teams, so when dev says “we can’t do that” management listens and doesn’t just try to steamroll them.
Communication is important in traditional software development also, but the documentation and processes do help you even if your team isn’t communicating perfectly. With Agile – great communication and collaboration are a must. I recently witnessed a QA team that stopped coming to the daily scrum and participating in the weekly demos and then at the end of the sprint said “What requirements are we supposed to test?”. The team then had to try and document a month’s worth of conversations and feedback between the developers and product owner so QA could know what to test – this was not Agile. The full team needs to be involved throughout. Now this doesn’t mean that your daily scrum needs to involve 40 people, including every QA analyst, lead and manager – but it does need to involve the key players from dev, QA and product management.
We talked earlier about how Agile can give you improved visibility and sense of true status. This only works if you provide an honest assessment of where you really stand – without any smoke and mirrors. If you are calling something “Done” it needs to be able to be run without a bunch of caveats, fully test or at least testable and be vetted by the product owner to make sure it generally meets expectations.
One of the benefits of Agile is that is gives you great flexibility to make adjustments based on actually seeing software work and knowing the true status of a project. For that to be effective, the product owner needs to be heavily involved in the project so that they know the status of items, can field questions and can give feedback. They also must be empowered to actually make decisions on usability, requirements and scope. It can’t always be a “well – let me check with so and so”. It can’t be someone that struggles with making timely decisions and you shouldn’t use flexibility as an excuse to continually change your mind and never really make progress.