Software development is relatively new when compared to plumbing or electricity. We don’t have standard wire and pipe sizes or handbooks telling us how to “unclog” or “rewire” our testing problems, nor do we have licenses ensuring that we meet industry “code.”
To handle this, software professionals have developed many methodologies and strategies to work through software development issues, such as the formulation of Agile to combat Waterfall’s shortcomings. Unfortunately, simply following the principles of the Agile Manifesto or a book on Scrum isn’t enough to attain success.
Like habits for a productive and meaningful life where you learn as you go, adapt, and improve with experience, there are habits that lead to highly effective Agile, whether converting from a Waterfall process to Agile or trying to fine-tune the Agile process.
Habit #1: Work Closely with Customers to Understand Them
Close working relationships and daily communication are the foundations of Agile. Unfortunately, if the project lacks a dedicated product owner or uninvolved business stakeholders, your team cannot understand the requirements to be able to create a product that matches requirements.
In addition, work closely with customers who will actually use the product so you can understand, with task analysis in mind, which direction to take based on their feedback. This should be done early in the process to facilitate early and frequent failure, as well as early learning. This will save you time at the end, help you stay close to the requirements, and help you understand and surpass the unspoken expectations set by product owners and customers.
Habit #2: Keep Teams Small
Breaking old habits to form new ones across large teams can be extremely challenging. Bigger team sizes can cause groups to form around a single discipline, inhibiting cross-discipline collaboration. They almost always lead to disrupted cadence, diluted shared understanding, and dispersed focus.
However, with smaller teams of six to ten members, multiple disciplines amongst several team members leads to a fully stacked, cross-functional team capable of real collaboration. The collaboration and more efficient communication you’ll get from greater team autonomy will allow you to iterate faster without duplicated work and without setbacks to staying on track.
Habit #3: Promote a Shared Understanding
With smaller teams, you can promote shared understanding, critical to effective Agile. Introducing newly hired team members can be disruptive. Don’t just assume that “the new guy” shares the same understanding, and don’t assume that your team is always on the same level either. Leverage the benefit of a small team and take the time to initiate new members while being receptive to all team input. This resets and reinforces the entire team’s understanding for seasoned or new members.
A great way to bring new hires up-to-speed that also encourages shared understanding is to apply XP programming techniques like pair programming. This will force them to work hands-on with other team members and lead to successful integration into the team. You can also do this with user story writing or test execution where team members work side-by-side, learning from each other and developing the same understanding of both the software and each other.
“Which ever formula you choose, you will achieve the healthy Agile “diet” you’re working toward“
Habit #4: Collaborate, Collaborate…and Collaborate Some More
Remember that collaboration and communication have different meanings. Email is one common communication medium, but it is not collaboration. Whether you are across town or across the country from your client or your team, use high bandwidth communication. If face-to-face isn’t an option, use video conferencing, actual telephone calls, and whiteboards that help everyone visualize progress and next steps.
Create processes with built-in communication. For example, decide from the start which documents will be useful. So that team members won’t write documents to avoid talking, purposefully develop ‘verbal documents’, to build in face-to-face collaboration into your process.
Even after solid communication has been established, achieving productive collaboration can be difficult. Everyone has different viewpoints and some ideas won’t always work out as expected. Use these imperfections and failures as the basis for collaborative discussion.
Habit #5: Measure Your Progress
For continuous improvement in the long term, you’ll need metrics that affirm and reinforce your Agile goals and principles. They should be focused on trends, rather than on absolute numbers, and be a place to start conversations and raise questions in daily stand-ups and stakeholder meetings. Your metrics need to be easy to collect both for the benefit of your time and for the benefit of easier understanding on your and the stakeholders’ part.
Regardless of the metrics you choose, there must be a team understanding and acceptance of what is measured and why. Team members should understand that metrics are there to support building better software and that they are not the end, but the beginning, of the discussion to improve.
Habit #6: Make Roles and Responsibilities Clear
With many tasks to be completed and overlapping skills amongst team members, it’s necessary to make sure roles and responsibilities are clear. From a skills standpoint, maybe everyone can do everything, but one person must be solely responsible for the ultimate completion and quality of one task.
On the other hand, use overlapping skill sets for task rotation and role swapping. There is some overhead involved in doing so and both productivity and cadence may decrease, but team members can try their hand at other roles and improve on or learn other skills without much unexpected harm if planned carefully. Additionally, this diversifies your team and risk – if someone gets sick, another person can step in and temporarily handle their responsibilities.
Habit #7: Facilitate a Team Culture
Setting up a team environment that is fluid and adaptable for Agile is great, but only if you are also able to facilitate a team culture. New habits won’t stay long if culture and common understanding aren’t strong.
When people come in and out of the team, the collaboration between team members can be majorly disrupted. Discontinuity also happens if a team member is absent, and even working too long in isolation can cause interference. Isolated work should only be allowed for short durations so that progress made (or any lack thereof) and potential problems can be seen instantly.
Team members should then hold each other accountable through daily stand-ups, bi-weekly sprint retrospective and planning, and quarterly product roadmap planning. Set up a rhythm that will contain the naturally occurring procrastination while closing the gap between non-productive work and real progress.
Successfully Going Agile: Develop a Long-Term Agile View
With a change in diet, it’s hard to kick old habits. Dieting is about lifestyle modifications, just as enforcing a healthy Agile environment is not only about short-term changes. Remember that your goal is improvement over the long term, rather than perfection in the short term.
None of these individual habits have more importance than another, and there is no sequential order. Rather, like the principles of the Agile Manifesto, they are a set of guidelines to be used to implement Agile successfully while you create your own instance of the Manifesto. Whichever formula you choose, by making a resolution to actively change these habits across your teams, you will achieve the healthy Agile “diet” you’re working toward.