Friday, April 17, 2009
Agile Defect Fixing
It is very clear to me, both from the literature and from experience, that you should account for defect work done in the sprint. You must account for all the work done, otherwise you set false expectations for your business partners, for other stakeholders, and for the team itself (creating a tendency to over task and over commit). There is more than one kind of defect however and they don't all need to be treated the same.
Defects found during the sprint that are a result of coding done during the sprint (sprint defects) should be part of your normal code/fix work. We don't track hours or points for these because they are part of the original story point/task hour plan. This does mean that you have to think about that during sprint planning. We should be planning on code quality, requirements clarity, and the things that create less defects too of course.
Defects found that are not a result of the sprint or that are found during the sprint and the team/PO chooses not to fix them (based on time and priority), are put into the backlog for future sprints. These need to be prioritized by the PO and estimated just like any other backlog item.
If a defect is planned to be fixed during the sprint, we consider it part of the sprint backlog and it gets counted in the velocity. We typically add a "bug" story that gets x number of story point assigned to it, then we add defect tasks that approximate the story point estimation. This allows us to keep working on defects that are found at other times or by other stakeholders/customers.
I don't think that punishing the team by not including their defect work in the sprint is productive. We have a lot of legacy code that the teams are not the originators on and to make them accountable for previous years mistakes (before Agile) doesn't make sense. I do however believe it's important to keep the team accountable to their commitment of story points and to completing the sprint defect free. The basic point is that the team working on an issue, isn't necessarily the one that created it (which can cause mixed feelings and eventually a lack of productivity).
Agile and QA is an evolving process for us, but as we move toward more automation and more consistency in our Agile implementation, we're starting to see better and better results. There is much more to say about defect management in Agile to be sure, stay tuned.
Monday, March 9, 2009
Demo Scripting
Benefits of a Demo Script
- Start a demo script at sprint planning to begin to understand what will be shown to the Stakeholders. This helps get the creative juices flowing about how the functionality in the sprint is going to be deployed and demonstrated. Some deployments can be very complicated. Getting the team thinking about the end is a good way to mitigate risk and keep the team focused on the right goals. Clearly, the script will change as the sprint progresses, but it should roughly correspond to the commitment that the team makes to the Product Owner.
- Allows the team some think-time to understand if a particular environment needs to be setup or updated to allow for final demonstration or production deployment.
- Gives the team a way to write down and walk through the steps they intend to take during the demo (pre-demo demo). This should be more than just a list of stories. It could list specific pages in a website that are visited, usernames/SKUs to look up, particular emails that are sent, or whatever it is that the product is doing. Writing down the steps helps the team understand clearly what they are going to be showing.
- Gives the stakeholders something they can look at before the demo so they know if they need to be there, be prepared, or pay more attention in particular sections. Provides them a reference for the new functionality to keep with them. Provides an instrument to discuss potential changes or impacts to future/other work/products.
- Helps the team practice in a room if the demo is in a place that isn't dedicated for that or that needs to be changed for some reason.
- Provides a simple release notes of sorts (in lieu of some other more rigorous form).
- Provides a common point of reference for the team to drop or add an item quickly, before the demo (depending on how soon you send it out).
- When the team successfully demonstrates all the done functionality on the script, it becomes a statement of their success. Since things that aren't done, aren't demonstrated, the stakeholders are left with a clear understanding of what was accomplished.
- Provides a way to reference work that didn't have visible outcomes. We always try to link actual end user functionality to every story, however sometimes those stories produce work that is not really demonstrable without taking more time than necessary (like on a sprint where there is no deployment potentially). This hard work needs to be made visible and this provides a simple way to do that.
- Provides a simple list that support functions in the organization can reference in other discussions to form more complete documentation.
- Have a good title - Name of team/sprint
- List the team members names, including the Product Owner
- Include a list of stories for sprint that have been completed
- Include a list of steps that will be taken during demo, and then stick to them.
- Remember to include done and undone work (retain visibility for accountability)
- Don't include anything that distracts from the work of the team for that sprint. Other documents can fully describe things that need more work, bug lists, future stories, retrospective reports, etc. Including too much can detract from what is being presented.
Saturday, February 28, 2009
Agile Scrum Overview
Here are some important books that you need to read if you are going to be implementing Agile in your organization.
- Agile Project Management with Scrum by Ken Schwaber
- The Software Project Manager's Bridge to Agility by Michele Sliger and Stacia Broderick
- Agile Estimating and Planning by Mike Cohn
- User Stories Applied by Mike Cohn
- Practices of an Agile Developer by Venkat Subramaniam and Andy Hunt
- Agile Retrospectives: Making Good Teams Great by Esther Derby and Diana Larsen
Scrum and get it!
Thursday, February 12, 2009
More about Barriers
Barriers between the team and the Product Owner can come in the form of the old “us vs them” mentality, a lack of following process (stories, conditions of satisfaction, poor tasking, lack of commitment, etc), a lack of understanding of what's being asked for, and good old fashioned lack of trust. The SM can help remove barriers by keeping some of the following in mind.
Some of this discussion was taken from my linkedin q&a. Thank you to all those that contributed to that discussion.
Thursday, January 8, 2009
Removing Barriers between the Team and Product Owners
I asked my LinkedIn, Certified ScrumMasters group, the following question.
I asked this question in an effort understand in a more realistic and "earthy" way, just what it means in practical terms to remove barriers - in this case, between the scrum team and their product owner. In summary, here are some highlights of that conversation that I believe to be significant.What are specific ways you remove barriers between the team and Product Owner? What are some specific ways that you, as ScrumMaster, have removed barriers between the development team and the product owner, so that the product owner directly drives development?
The SM needs to remove barriers by:
- Ensuring that the team is concerned about delivering business value. It's easy for developers to seek excellence for their team and department, which is good; however the team exists to meet the needs of the business. If the team is not truly focused on the needs of the business through delivering value, it is not meeting it's fundamental purpose.
- Helping the PO trust and learn how to work with the team. Some examples include helping ensure accurate tasking, promoting flexibility in accepting change,and ensuring that everyone is working toward the same goals (sprint goal and an understanding of Agile itself).
- Ensuring that the team knows how to work with the PO (not take on adhoc work, redirecting the PO to the SM in case of conflict with the plan, etc)
- Asking tough questions of the team and the PO to ensure that quality is not sacrificed.
- Learning to address the problem and not the person. Many times there are issues - like a lack of communication, not following the basics of the framework, not adhering to agreed upon engineering standards and others. These issues should be identified and then targeted for removal by the SM, pulling in as many people as needed (with the right authority)to remove the barrier.
- Educating the PO and team on the process regularly. It seems clear from many comments here and elsewhere, that the SM is the one driving the agile education process - on a day to day level by consistently pushing for agile adherence and continual process improvement; as well as on a more formal basis by identifying training needs and facilitating those needs in formal and informal ways (again, working with those who are in the position of authority to enable that training).
- Owning the Agile process and facilitating regular communication between the team and PO. There is some discussion between the ideas of ownership vs. enablement. The SM should clearly be doing his best to enable the team toward growth and self direction. Because the Agile team is focused around collaboration, it seems that the the SM is typically the one helping to direct the growth and use of Agile within the organization. There are usually other partners involved as well.
- Work to remove impediments on a daily basis and communicate resolutions
- Protect the team from disruptive outside influences (support staff, managers, customers, even the PO if that becomes an issue).
- Unnecessary time wasters (inappropriate meetings, tasks that someone else could/should be doing)
- Between individual team members
- Between individual team member roles
- Between the team and the product owner
