We have four teams successfully practicing the tenets of Agile software development. We release new products and enhancements every month and iterate every week to accomplish the goals of the release. We try to remind ourselves of the good behavior. Here is the list for all the major functionalities of an agile team.
Customerâ€™s good karma (Customers => Product Managers, Usability, QA, Member Reps)
- Always keep the end in mind: Agile software development does not stop you from having an over-arching vision. Have a clear-thought out story-board for the product. Communicate the vision clearly and continuously.
- Respect programmer’s need for zone time: Programmers need time to focus and are productive when they are in the zone. I am not saying – do not collaborate. Establish the right balance between collaboration and annoyance.
- Establish crystal clear priorities for programmers: Programmers hate multiple, confusing priorities. Make the priorities and the problem at hand very clear.
- Do your homework before the iteration: You are supposed to have completed the following before the iteration planning meeting:
- Clearly thought-out goal for the iteration
- Clearly defined stories for visual design, front-end and programmers. Each story has
- Has a clear specific objective.
- Has a clear acceptance criterion.
- For programmer stories, have story tests ready before the iteration plan.
- When working on new products, provide interaction and flow diagrams like the paper prototype or wireframes.
- Do not fudge too much with iteration plans: Do not change the scope once the iteration plan is finalized. No new features must be added to the iteration plan mid-stream.
- Insist on having weekly demos: Before a new iteration begins, customers demo the last iteration. Customers work proactively with the programmers to accept most of the stories before the next iteration begin.
Programmers’ good karma:
- Think of customers as partners: Before you start working on a story, understand the customersâ€™ vision. Advise the customer teams on better approaches and designs. Once you finish the story, update the customers and gather feedback.
- Communicate early: Do not wait till the end of the iteration or release to communicate any issues or risks. If you find something that change your estimates inform your project manager immediately.
- Do not say no when asked for help: You do not have to help them now. But, make sure you make an attempt to help whenever you have time.
- Update the plans: Update the plan with your estimates and the status of the story at least once every day.
- Respect businessâ€™s priorities: Business may have a different agenda than yoursâ€™. Focus on continuously delivering business value.
- Do not cut corners
- Keep practicing test-first development and refactoring.
- Chant the â€œdo not repeat yourselfâ€ mantra.
- Signup for tasks that no one wants to sign up for.
- Integrate frequently and continuously.
- Run all the tests before committing your code.
- Do not ignore a broken build.
- Do not ignore architecture.
Project managerâ€™s good karma:
- On-time delivery: Own the iteration and release schedule and on-time delivery
- Keep meetings short: Yes, Agile software development teams have lot of meetings. Please keep close tab on them.
- Mitigate risks: Have regular team meetings to discuss risks and come up with solutions to mitigate risks.
- Control issues: Bring any open or closed issues and identify a clear owner to solve the issue.
- Regulate changes to the plans. Keep the plans upto date.
- Do not ignore the non-programmer needs: Keep the visual and front-end teams are ahead of programmer teams by at least two weeks.
Consultant Coachâ€™s good karma:
- Customize to the needs: Learn to customize the process to meet the goals of the business and company culture. If the company culture makes having weekly iterations difficult, have two week iterations instead.
- Listen more, learn more: A real effective coach is a good listener and learner. Do not rush to enforce your learnings on the teams.
- Learn to say â€˜noâ€™: It is better to say â€˜I have not done this before. Let us solve this togetherâ€™ than to make up an advice for the team.
- Do not play favorites: Yes, there are some people who do not like Agile. Do not ignore their ideas or concerns and promote people who support your ideas.
- Facilitate Respectfully: Guard and restore the self-respect of participants.
- Know when to back off: As teams start adopting Agile and take more initiatives, learn to back off. If needed, let them make mistakes and learn from their mistakes.
Internal Coach or Technical leadâ€™s good karma:
- Coach Resolutely: It’s tough work, especially if you are being compared to an external consultant coach. Have patience and you will be accepted more. Do not give up.
- Keep sharpening your technical skills: I strongly believe to be an effective coach, you need to be player. If your technical skills are rusted, sharpen it everyday.
- Keep key players and management in the loop: Do not get carried away with your authority. You still have a boss and other important players. Keep them in loop.
Upper managementâ€™s good karma:
- Do not expect miracles: â€œI spend so many dollars and nothing happenedâ€. Adopting Agile software methodology is just the beginning, teams have to customize it to see results.
- Avoid the temptation to be date-driven: â€œNow, go get it doneâ€ bravado is changed to â€œLet us see if I can change the scope to meet the dateâ€.
- Do not be in a rush to roll it fast throughout the company: After initial success, you may be eager to roll out the process throught the organization. Please make sure you understand the implications of it before rolling it out.
- Make sure you really understand Agile before talking about it: Now that the teams are agile, you want to go and talk about it to your friends, other companies.