Agile Implementation: Best Practices
Agile has gained immense popularity among software development firms. The agile principles of incremental and iterative development, self managing teams, and customer collaboration allow for rapid delivery of high-quality software. But all too often, you’ll see companies try to apply Agile without adhering to best practices. They expect that a few sprints will 'fix' all their issues and convert them into a well-oiled machine. It doesn't work that way! Agility is an approach, not a silver bullet! Like with anything else in life — there are best practices for doing things and wrong ways.
These best practices for Agile implementation can be broken down to 4 key levels: the organizational level, the initial stages of the agile process, execution phase, and ongoing development;
If you're looking to implement agile in your organization, read on for some best practices to get you started.
Organizational best practices
It is important that the entire organization buy into the agile process. While organizational readiness will vary from company to company, these are some of the key best practices each organization should observe to get things right.
Assess the current culture
How receptive is the organization, are employees willing to adopt agile methods and practices? Agile is a paradigm shift, and can be difficult to implement if the company culture is not conducive to change.
So, work on ensuring that employees plus leadership are ready for change. The goal here is to drive a cultural shift towards embracing change.
Assess the current IT infrastructure
Perform a comprehensive assessment of your IT infrastructure to identify all of the areas that need improvement. You should also allocate the necessary resources to make those improvements.
Make sure that all members of your team are familiar with the new agile processes plus the IT infrastructure needed to support them. Training and education are essential here.
Engage top leadership from start
Get a firm buy-in and support from the top leadership within the organization, right from the beginning.
If management and top leadership are not on board with agile, the implementation is likely to fail. It's therefore crucial to ensure their commitment and involvement from the get-go.
Hold discussions with the leadership to ensure any changes you make will be beneficial to the customers and that they won't experience any negative effects as a result of your development process. You can do this by conducting customer interviews and surveys, as well as tracking customer feedback.
Evaluate available resources
Before starting an agile implementation, it's important to evaluate your organization's resources and capabilities. This includes assessing the team's skillset, the team's current work capacity, as well as the availability of relevant tools and technologies.
Get a clear understanding of your organization's business and technical priorities. This will help you to identify which areas of your business should be prioritized for agile development, and will help to ensure that the agile implementation is aligned with your overall business goals.
Best practices for the initial stage (starting phase)
The practices around this stage center around the development teams and their capabilities as well as looking at the scope, roadmap, and agile frameworks.
Here are the key best practices in the early stages of the agile process;
Select agile teams with the necessary attributes
The team should be selected with the specific attributes needed for agile implementation. This includes individuals who are flexible and adaptable, as well as have the ability to quickly learn and change.
Another key element is to ensure that the teams are self-organizing. This means that the team is composed of individuals who can work together harmoniously to support one another to achieve the goals. This creates a positive agile environment that is essential for agile teams.
Training is also crucial at this stage. There are a few different ways to train your team members in agile: you can hold an in-person training session, send them to an online course, have them read a book or article on the subject, or give them an agile training Bootcamp.
Apply wisdom when choosing the preferred approach
Top down or bottom up? The top-down agile approach begins with management and works its way down to the teams. This can be a good option if you want everyone to be on the same page. However, it can often lead to resistance from teams who may feel that their voices aren't being heard.
The bottom-up approach, on the other hand, starts with the teams and works its way up to management. This can be a good option if you want team members to have a say in how things are run and feel more ownership over their work. However, it can often lead to confusion among management who may not understand the process or how their team is working.
You might also want to take the hybrid approach, a mix of the bottom-up or top-down. This utilizes the strengths of either approach and might give optimal results.
Think carefully about the preferred methodology
Of course by now you probably know that the most popular agile methodologies include Scrum, Kanban, XP, and more.
While there are similarities between these methodologies, they also have unique characteristics. Choose an agile methodology that will work best for your specific situation.
Further reading: Agile methodologies
Ensure the agile implementation roadmap is sound
The agile implementation roadmap should be created with close collaboration between the business and IT teams. The business team is responsible for understanding and translating the business needs into user stories, while the IT team is responsible for understanding and translating the user stories into development tasks.
You can divide it into two parts — the first covers the high-level tasks that need to be completed in order to implement agile, while the second covers the detailed tasks that need to be completed in order to implement each individual user story.
Further reading: Agile roadmap
Create exceptional user stories
Make sure they're clear and concise. This will help make the later stages of development more efficient and error-free.
Some tips for crafting good user stories:
- Make sure they're specific and easy to understand
- Describe the user's action rather than the system's response
- Use «As a _____, I want _____ so that _____» format
- Keep them short and sweet
Establish a communication standard
One of the most important aspects of any agile implementation is communication. There needs to be a communication standard in place so that everyone is on the same page and knows what is expected of them, at all times. This includes everything from how often you should be meeting to how you should be communicating with key stakeholders.
If you're not sure where to start, we recommend using tools like Slack or Asana to manage communication. This will help keep everyone organized and on track.
Project implementation best practices
Implementation is the heart of agile, real work happens here. So you want to not only get it right but also ensure that the project delivers and in fact exceeds customer expectations on value.
Observe these value-based agile practices during implementation;
Forget not the initial incremental planning meeting
PI Planning meetings ensure that the project team is aligned around the work that needs to be done in order to meet the goal of the project. The purpose of a PI planning meeting is to come up with a plan for how the team will achieve the goal of the project. It’s also used to identify any potential roadblocks that may prevent teams from reaching that goal.
The initial PI meeting is often a two-day event where the project management team develops a vision for the new system. They also establish an overall stable system architecture that is workable/achievable.
Further reading: PI Planning in Agile
Piloting, first
If you're new to agile, it might be helpful to start with a small pilot project before rolling out agile across the entire organization.
This will allow you to test the waters and get a better understanding of how agile works in practice. You can then use the lessons learned from the pilot project to improve your process and make sure that everything is in place before taking the plunge.
Plan new sprints when you have enough items
Sprints should not be planned when the backlog is not full.
If there are not enough items in the backlog, then new sprints should not be planned because it will not be possible to fill the sprint with valuable work.
Visualize the workflow
When you can see your work as it flows through different stages and items, it becomes much easier to quickly respond to emerging issues and make collaboration better. This is why tools like Kanban boards are so popular – they help you visualize your work in a way that makes sense.
You can also use mapping techniques to visualize how teams are delivering customer value. This information can then be used to optimize your workflow and make sure that you're delivering the most value possible.
Outsource documentation
One way to ensure that your project stays on track is to outsource your documentation. This will allow developers to focus on development and leave the writing to a technical writer.
The writer will be responsible for aspects such as creating system implementation documentation, maintaining the architecture, and updating the training manual. This will free up developers to give 100% attention to the project.
Finish what you start
Any work that has been started but not completed can be very demoralizing. If teams are constantly starting new tasks without finishing the old ones, then the process will move much slower and be less productive overall.
You can use a Kanban board to restrict the number of items that can stay in the working column at any given time. This will motivate teams to focus on finishing work instead of just starting new work.
Collaborate consistently with the customer
Always keep the customer in mind. This doesn't mean that you have to constantly check in with them or spam their inboxes — it just means that you should be open and communicative. Let them know the progress. In return, they'll be more understanding if there are any delays or disruptions to the process.
It's ultimately up to them whether they want to sit in on sprint reviews, provide feedback, or just be kept in the loop.
Eyes on the task, not the person
It's important to remember that in agile, the team is more important than the individual. This means that you should always focus on the task at hand, not on the status of individual team members.
This will help to ensure that everyone is working together towards the same goal and that no one is left behind or discouraged by having the ‘spotlight’ on them.
Match tasks to the right abilities
Put people in charge of tasks that they are good at and that they enjoy. For example, if you have a team member who is great at user interfaces, you should put them right there. If you have someone who is great at writing code, let them focus on code.
This will help to ensure that everyone on your team is doing something that they are good at and that they enjoy, which will lead to a more productive team.
Best practices for continuous delivery
The ultimate aim of agile is to eventually have a well-oiled machine, with everyone on the team working together in a coordinated fashion that reflects continuous improvement mindset. That's where best practices for ongoing development come into play. You want to ensure that your team is constantly learning and growing, and that they are able to adapt to changes quickly. This phase may involve lots of agile ceremonies such as daily stand-ups, sprint reviews, sprint retrospective, and more.
Observe these practices to get your implementation rocking like a well-oiled machine that it should be;
Appoint Agile champions
It's important to have a designated team who is responsible for championing the new way of working.
The role of the agile champions is to help keep the momentum going and make sure that everyone is continuously learning and improving. They should be available to answer questions and help resolve any issues that may come up.
Automate continuous testing
By automating the testing process, the software developers can ensure that new code changes do not break existing functionality and that all new features work as expected.
Continuous testing also helps to avoid regression bugs, which can be expensive and time-consuming to fix.
Synchronize progress without fail
Daily syncing will help project teams stay on track and be up-to-date with the project's progress. This will help you avoid any overlap or missed steps in the project.
It's also a good idea to sync after every major milestone so that you can track how the project is doing and catch any problems early.
Track and measure
Measuring flow metrics is a great way to track the progress of your agile implementation and ensure that your team is constantly moving towards the goal. There are a few different metrics you can use, but the most common ones are cycle time, throughput, and task time.
Cycle time is the amount of time it takes for a task to go from start to finish. Throughput is the number of tasks that are completed in a given amount of time. And task time is the amount of time it takes for a task to be completed.
Embrace frequent reviews
Reviews are part of agile ceremonies. They allow team members to give and receive feedback, identify and solve problems, and make course corrections. Reviews should be held on a regular basis, at least once a week.
The ideal length is around 15 minutes, but they can be shorter or longer depending on the specific needs of your team. You can make use of review boards to gather feedback, track issues, and visualize progress.
Keep your communication channels diverse in order to accommodate everyone. The most common means are e-mails, instant messaging, shared web pages, and phone calls. Weekly videoconference meetings and quarterly face-to-face meetings are highly encouraged.
Prepare for challenges
Challenges are almost inevitable, and preparing for them is a step closer to solving them in a timely manner. One of the main challenges you're likely to face is lack of motivation among teams to change their way of working. This can be due to a number of factors, such as a fear of the unknown, a need for stability, or a natural reluctance to adapt to new working practices. Another common challenge can be consultants who are tied to their beliefs and not necessarily interested in your project's success.
It's important to carefully select your team including consultants plus the agile coaches. Vet them thoroughly to avoid these challenges down the line.
Celebrate project successes
Whenever your team achieves goals and milestones, it's important to take the time to recognize and appreciate the work that they put in. This will motivate them to continue working hard and pushing themselves.
There are a few different ways to celebrate success. You can have a team dinner or happy hour, or you could even do something as simple as giving out a small token of appreciation. However you choose to do it, make sure that every individual member on the team feels appreciated for their contributions.
Conclusion
Agile is a continuous process that should be revisited often to ensure it is meeting the needs of the business and its internal or external customers. Remember to revisit your goals, team composition, ceremonies, and artifacts regularly to make sure they are still effective.