Congratulations on reaching this article if you have already read the previous installments in this series. If not, please take the time to read part 1 and part 2 here.
It’s clear that you are still interested in Agile implementation because you have thoroughly analyzed its feasibility and are now ready to embark on a successful Agile journey.
Recommended IPTV Service Providers
- IPTVGREAT – Rating 4.8/5 ( 600+ Reviews )
- IPTVRESALE – Rating 5/5 ( 200+ Reviews )
- IPTVGANG – Rating 4.7/5 ( 1200+ Reviews )
- IPTVUNLOCK – Rating 5/5 ( 65 Reviews )
- IPTVFOLLOW -Rating 5/5 ( 48 Reviews )
- IPTVTOPS – Rating 5/5 ( 43 Reviews )
As a beginner, any process engineer undertaking the important task of defining a compatible Agile process for their organization will invariably review the available literature.
Although the concept of Agile is rooted in philosophy and principles that offer flexibility in terms of practices and tools, practitioners have developed visually appealing graphics and language to make it more enticing.
Their proposed framework includes clearly defined roles, iterations, and procedures, as illustrated in Figure 1.
An Agile Process:
However, we don’t live in an ideal world. It’s not feasible to have all the elements of your desired process aligned perfectly from the very beginning. In fact, you may not even have a clear understanding of your desired process at the outset. Your process needs to evolve. You can’t simply replicate or inherit a process from another organization, not even from another autonomous unit.
Therefore, the key is to identify the starting point. You should understand your priorities to ensure you’re focusing on the right elements at the right time.
Agile challenges the need for extensive planning during software development and embraces adaptability. Interestingly, the same approach applies to its implementation when viewed as a parallel project. The consequences of each step will shape the next.
In this article, I will highlight the key milestones to achieve in order to start delivering products the Agile way. It’s worth noting that I use the phrase “start delivering” because there’s no end point. Agile implementation, like other software development processes, is an ongoing journey of continuous improvement. It’s an ongoing endeavor.
And as long as you are improving the process, your role as an Agile practitioner remains vital. Many Agile adopters attempt to implement all recommended practices immediately, only to become frustrated when they can’t establish an ideal process right away.
While I was initially enthusiastic when I took on the challenge, I quickly realized that being too ambitious would only complicate matters. Therefore, I chose to gradually connect the dots and transform the process into a perfect loop or a repeatable process.
Here are the most essential initiatives you need to undertake to ensure you have the foundation to continue your never-ending Agile journey:
- Select the appropriate methodology
- Apply the most suitable tools
- Adopt recommended techniques
What You Will Learn:
#1. Select the appropriate methodology
All the discussions in this article series revolve around the implementation of Agile, which is not a standalone methodology. Agile is a philosophy, an approach, a mindset, a set of principles, or a framework. However, you need to identify and adopt a specific Agile methodology to implement it effectively.
You must find or develop a methodology that suits your context. There are various Agile methodologies available today, each with its own benefits and limitations.
The easiest option is to choose one of the popular Agile methodologies, start implementing it, and customize it based on your results. Alternatively, you can combine multiple Agile methodologies to create your own approach.
Many organizations nowadays utilize the best practices from various Agile methodologies to create a customized methodology. However, it’s important to ensure that these practices are not redundant or incompatible.
Lastly, you can take a more creative approach and design your own Agile methodology from scratch, aligning it with the Agile manifesto and principles while considering your current process and organizational culture. This approach carries higher risks, as the practices may not have been extensively tested in the industry.
However, high risks often come with high rewards, providing a more tailored methodology if successful.
In our case, we decided to adopt the traditional SCRUM methodology, which is currently the most widely used Agile methodology.
Commonly Used Agile Methodologies:
According to a survey (Figure 2), 52% of Agile organizations use SCRUM, with 14% using a hybrid of SCRUM and Extreme Programming. Our decision to choose SCRUM was influenced by the support provided by our partners at Microsoft for SCRUM-specific tools, as well as our CEO’s admiration for how Microsoft operates.
It’s crucial to select a methodology that is acceptable to all stakeholders, including management, development teams, and clients.
#2. Apply the most suitable tools
Conventionally, software that supports Agile processes is referred to as Agile tools or application lifecycle management (ALM) software. However, some Agile tools are specific to certain functions, such as project management, bug tracking, or requirement management.
There are numerous tools available for each Agile methodology, with valuable user reviews and guidelines. However, when exploring these tools, you may find it more challenging to decide which ones to avoid rather than which ones to adopt.
I recommend avoiding three types of tools: unnecessary, overly complex, and overly restrictive.
“When you have a hammer, every problem looks like a nail.”
Remember that the toolset suggested by experts and practitioners includes tools for all potential problems that may arise during Agile development. While all these tools are useful, they are only relevant in specific contexts. Not all of them will have a significant impact on your processes.
Therefore, identify your specific problems in order of priority and select the most applicable tools. Don’t use tools just because they are part of a recommended toolset or because others have had success with them.
As shown in Figure 3, companies have identified certain tools that they don’t need, even though others have found them useful. Similarly, some tools are considered “nice to have.” Thoroughly review the various tools available for Agile, but avoid using or planning to use all of them.
Usage of Software Testing Tools: (click on image to enlarge)
Even though our process is quite mature at this stage, we have chosen not to use certain commonly used tools because we believe they are unnecessary for our needs. For example, we haven’t used a continuous integration tool so far, but we may consider it once our release management process and automation scripts stabilize.
Some organizations do not utilize a complete ALM tool. Instead, they use different tools for different practices. For example, we complement TFS with Excel and SmartWord4TFS (a tool we developed in-house). Figure 3 provides an overview of Agile tool categories and their usage across the industry.
Another important consideration is finding the right balance between the simplicity and power of the tools we use. The most powerful Agile tools often come at the expense of simplicity, which is a core principle of Agile.
If we force teams to adopt specific applications or practices too early or expect them to produce certain artifacts, they may become overwhelmed and stressed. Their primary focus is meeting deadlines, unlike yours, which is ensuring a flawless process.
Start with the simplest necessary tools that don’t distract the team from their tasks. Allow them to become comfortable with these tools, and then gradually introduce more powerful tools as you encounter new challenges. Trying to use complex tools right from the start is a recipe for team dissatisfaction.
That approach will make your team question why you transitioned to Agile in the first place. In evaluating ALM tools, I considered several options, each with its own strengths and limitations. Ultimately, TFS provided the right balance for our needs. Figure 4 presents a list of specific Agile products (or general-purpose products used in Agile) and their usage across the industry.
Tools Used in an Agile Process:
#3. Adopt recommended techniques
Agile techniques refer to recommended practices or sets of practices designed specifically for implementing software development in an Agile manner. The selection of techniques differs from choosing a methodology or tools.
Every Agile methodology comprises a set of recommended practices that address different challenges. In combination, these practices form a closed loop that defines the process.
If you fail to adopt a technique that is integral to your specific Agile methodology, you may encounter gaps in the execution of your process.
Therefore, to mitigate the risk of missing links in your end-to-end Agile development and delivery process, I recommend adopting all the techniques specified in your chosen methodology, unless there are insurmountable constraints.
When it comes to these techniques, the most critical decisions revolve around their prioritization, sequencing, and adaptation.
When transitioning to Agile, it’s neither feasible nor advisable to adopt all techniques at once. Instead, create a list of techniques and prioritize them. Naturally, techniques that address major or fundamental issues should have higher priority.
For example, my highest-priority techniques were:
- Daily stand-up meetings (addressing team coordination)
- Iteration planning (replacing a work breakdown structure)
- Story mapping (managing requirements)
- Retrospectives (customizing the process based on organizational needs)
Your priorities may be different based on your assessment of the challenges you face. The list of commonly used Agile techniques in Figure 5 can serve as a guideline, but it shouldn’t be followed blindly as it includes techniques from all Agile methodologies combined.
Agile Techniques: (click on image to enlarge)
The sequencing of techniques depends on their priority, feedback from retrospectives with the team, and the ease of adoption. Agile adoption is an evolutionary and reactive process, so you need to respond to the team’s issues and suggestions.
Retrospectives are an excellent way to collaborate with the team, but informal communication channels can also be used to gather individual and collective input. To facilitate this, Agile practitioners should adopt an open leadership style.
Furthermore, some techniques may have high priority and support from the team, but they may be challenging to implement at a particular stage due to constraints and dependencies. Therefore, it’s essential to identify the right time to adopt specific techniques. For example, we introduced Burndown charts relatively late in our process because it was initially difficult to ensure that all team members regularly updated their tasks in TFS. Consequently, the Burndown charts didn’t provide significant value, despite being a widely used Scrum technique.
Similarly, not every technique can be used in its raw or standard form. We need to adapt and mold techniques to fit our environment, needs, culture, tools, and other concurrent techniques. Our approach to daily stand-up meetings, for instance, differs from what you’ll find in books.
In addition to sharing individual status updates, our stand-up meetings include discussions of any issues or requirements, answering process-related questions, or announcing important upcoming events. We also allocate a day for wrapping up sprint tasks, which isn’t a standard practice.
Our stand-up meetings are longer than usual, while sprint planning meetings are shorter than the standard duration, as some stakeholders need to attend multiple sprint planning sessions in a day.
The key message is to “adopt techniques like a malleable material, melting and shaping them to fit your specific mold.”
Summing it up:
So far, we have explored the importance of selecting the right methodology, tools, and techniques when adopting Agile.
While process definition goes beyond these steps, they are crucial initial phases in the end-to-end Agile adoption process that will ultimately determine the success of Agile in your organization.
While none of these achievements come easily, I have endeavored to present the information in a digestible format.
By the time you absorb this information, I will soon publish another article that continues this topic, covering relatively advanced phases such as cultivating Agile in your organization, which are equally important. Remember, Agile is an ongoing journey of improvement.