- Be Proactive
- Begin with the End in Mind
- Put First Things First
- Think Win/Win
- Seek First to Understand, Then to be Understood
- Sharpen the Saw
Habit 1 - Be Proactive
A Scrum Master's goal in any software project is empowering his team members to get things done and removing impediments. Here are some ideas for being proactive on software projects:
- Run Daily Scrum Meetings - Each day, your team should hold a Daily Scrum Meeting to make sure that everyone is working efficiently and towards the same goal. Set this meeting for fifteen minutes and ask your team members these questions:
"What did you do yesterday?"
"What will you do today?"
"Are there any roadblocks or anything impeding your progress?"
15 minutes is not always enough time to have a good dialog and a meaningful meeting, some days may take 30 to 45 minutes. To speed this up, consider having each team member post a summary of what they did yesterday and a summary of what they plan to do tomorrow in a daily discussion forum that is automatically distributed to all team members. This allows you to spend the Daily Scrum meeting talking about roadblocks, design decisions, and impediments to progress.
- Best Foot Forward - A key way to reduce cost and time overruns is to prevent them during design. Some Agile evangelists might argue that doing user stories (which normally do not contain detailed requirements, prototypes, or designs) is the best approach. Although our team has been using Agile for years, we found that user stories are not detailed enough, as they tend to cause too much rework and have a tendency to reduce the accuracy of estimates. Agile is designed to be flexible and tweaked for your specific needs; by gathering requirements in a more structured manner we enjoy the flexibility of Agile and the reduction of rework, providing us with the best of both worlds.
- Review Metrics Daily - It is important to ensure that the Agile sprint will complete on time. You can ensure this by having team members enter their time daily and reviewing burndown and velocity charts.
Habit 2 - Begin with the End in Mind
Your end goal for the sprint should be to deliver high quality software that meets the goals your team outlined earlier. Before coding begins, you should make a list of success criteria on which the project will be judged. For example, your success criteria may be that the software produces specific results, has no known defects (or a small number of low severity defects), is reusable, is maintainable, is well documented, is easy to use, etc. By defining the success criteria up front, you can objectively evaluate whether the project met the criteria or not. Solicit help from all team members (product owner, scrum master, developer, tester, etc.) when defining the success criteria. By getting a team perspective, you will have better and more measurable criteria with much better buy-in from the team. Below are some tips for ensuring you meet your success criteria at the end:
- Identify - Make sure your success criteria is published and agreed upon by the team members.
- Review - At least weekly (in one of your daily team meetings), review the success criteria. This can include reviewing your defect statistics, test case run history, etc. to allow you to determine if you are progressing towards the success criteria as the project continues.
- Retrospective - Once your project is complete, do a "post mortem" or "retrospective" to determine if you met your success criteria.
Habit 3 - Put First Things First
Prioritizing work effort is critical. You must apply effort to the most important things first, followed by less important things. Work the higher priority items first, then the lower priority items if time allows.
Habit 4 - Think Win/Win
When dealing with projects, you want to foster a win/win relationship between your team and the client. The alternative to that is:
- Win/Loss - Your team wins but the client loses. This can cause loss of future business with the client.
- Lost/Win - Your team loses but the client wins, resulting in team burnout, financial distress and other issues.
- Win/Win - This is the scenario you want to foster. In this scenario, both your team and the client win. How is it done? Normally this centers on the project management pyramid (Features, Time, and Cost). To foster a win/win relationship, one of those variables must be flexible. Once your team and client agree to that, it is much easier to make objective decisions about how to plan the project. Here are examples:
- More Features / Less Time - The flexible variable is cost, so your client agrees to absorb more costs (you can hire more people).
- Cost Savings / Less Time - The flexible variable is features, so less features will be delivered but costs and time will be less.
- More Features / More Costs - This product needs a lot of features, but the client is flexible on the cost. This means you can hire more people to ensure product completion within the agreed-upon timeline and with all the bells and whistles your client needs, but also without sacrificing your team's well-being.
Habit 5 - Seek First to Understand, Then to be Understood
Many of us have a bad habit of blocking out a conversation and not listening because we so desperately want our opinion to be heard. Every team member (product owner, scrum master, developer, tester, etc.) has different experiences, different perspectives, and different motivations. Before you can solve any problem, it is important to first listen intently and diligently to fully understand the problem. Once you feel you have all the facts, solicit ideas for multiple solutions. Having several options can provide better discussions and allow team members to tweak initial solutions into results that are more far-reaching and solve the problem in a more direct way. If you disagree with an approach, don't attack the person that offered the approach. Instead, explain based on your past experiences why you think there might be a better approach.
Habit 6 - Synergize
Team collaboration is the key to a synergized team. A synergized team is made up of divergent team members that have different strengths, different backgrounds, and different perspectives. Encourage these differences but provide your team with tools that allow for maximum effectiveness. Highly collaborative teams communicate with each other by sharing their calendars and posting their statuses into discussion forums so that everyone is aware of what the other is doing and accomplishing. These teams keep track of the tasks they work on each day, the number of hours worked, the number of hours remaining, and variances to plan. They also share documents that illustrate best practices and produce white papers that teach others what they have learned.
Habit 7 - Sharpen the Saw
Productive scrum masters see the need to continue honing their skills and love learning new techniques, best practices, and approaches. Below are some links that might be of interest to you: