The Good, The Bad, and The Agile
Agile methodologies have become increasingly popular as businesses have sought to develop software more quickly and efficiently. Agile methods are based on iterative development, where software is developed in small increments and delivered on shorter timeframes. These development cycles, called Sprints, allow greater flexibility and responsiveness to changing requirements. Done correctly, Agile can also help improve code quality.
Key benefits of using Agile Development methodologies include:
- Increased speed and flexibility: The Agile methodology relies on development Sprints that last a few weeks and are focused on developing discrete functionality. These short, structured phases allow developers to focus on a discrete set of tasks to deliver software more quickly and respond more efficiently to changes in requirements.
- Improved quality: Agile emphasizes continuous testing and feedback from business stakeholders, which can help improve the software’s quality. Regular demos of the developed code allow the end users to see the solution and provide their evaluation of the fit to requirements. Adjustments to the solution are incorporated into the next Sprint to refine the application from the demos, which provides a continuous feedback loop during development. This approach avoids the monolithic waterfall deployments that represent months of work and are challenging to realign with requirements at that scale.
- Better customer satisfaction: Agile methodologies allow for more customer involvement in the development process, leading to better applications that meet the end-users’ or customers’ needs.
- Increased team collaboration: Agile methodologies promote cooperation and communication among business stakeholders and development teams, which provides transparency and can help to improve productivity and morale.
- Reduced risk: Agile methodologies allow teams to mitigate risk by delivering software in small increments. Mistakes are identified early through the demo process. They can be addressed in the next Sprint before becoming integral to the solution and requiring significant re-work later in the development lifecycle.
However, there are also some challenges associated with using Agile methodologies, including:
- Agile Adoption: Agile methodologies require a different mindset from traditional waterfall methodologies. To truly adopt the new methodologies, there is a significant change management dimension and necessary staff re-training. Frequently, teams devolve back into their traditional ways of working or get stuck in a hybrid methodology (waterfall-agile).
- Delivery Management: Agile methodologies can be challenging, especially for large projects. A strong project manager (Scrum Master) who can keep the project on track and coordinate across workstreams/teams to align priorities, manage scope/story points correctly, and maintain code quality is essential.
- Requires Experience: Agile methodologies require experienced and skilled team members who can work independently and collaborate effectively.
- Not a “One Size Fits All” Solution: Agile methodologies are not suitable for all projects. Within the Identity Management realm, we often see a waterfall approach to establish a strong IDM foundation (HRIS to ID Store to Active Directory/Azure AD) before transitioning to Agile for endpoint connectors.
Overall, Agile methodologies offer several benefits for businesses looking to develop software more quickly and efficiently. However, it is crucial to be aware of the challenges associated with these methodologies before deciding to adopt them.
Some additional thoughts on the good, the bad, and the agile:
- The good: Agile methodologies can greatly improve software development’s speed, flexibility, and quality. They can also help to improve customer satisfaction and reduce risk.
- The bad: Development teams can be prone to take shortcuts, where practical considerations force developers to abandon security and focus instead on functionality and performance, which are the cornerstone of the Demo process. Functionality and performance are more tangible than security and are easy components to overlook for end users. As a result, code is developed with inadequate security mechanisms, and security is added later using ad hoc and manual techniques. The resulting systems are often insecure. While security frameworks can initially slow development efforts, they will undoubtedly hamstring your program’s efforts if you try to retrofit your code after the fact.
- The Agile: Organizations with high-functioning Agile teams run their ceremonies like clockwork and have excellent Scrum Masters and knowledgeable Product Owners. A good Scrum Master keeps the team on task during the sprint and the various ceremonies (i.e., time boxing discussions, stopping solutioning during ceremonies, and removing obstacles). The Product Owner keeps the backlog full of base User Stories that need to be groomed and planned into a future sprint. This requires that the Product Owner knows the business and what functionality is most needed (i.e., business priorities). Scrum Masters and Product Owners provide the framework for defining the Sprints and setting the developers up for success.
Agile organizations have several experienced developers who can check their egos at the door and foster peer-to-peer conversations instead of relying on formal titles/authority. The true leaders on the team foster collaboration and results on their merits (the way they work and lead by example). On the technical side, having a solid Continuous Improvement/Continuous Delivery (CI/CD) pipeline allows the developers to focus on coding tasks and not worry about code builds and deployment tasks after the initial pipeline has been built. The CI/CD should be set up to include tools for measuring code quality and coverage metrics.
Finally, Agile organizations have a good relationship with the management team, which can help remove operating/political barriers that the Scrum Master may not be able to resolve. At the end of each sprint, the solution demos all the features that were worked on to the management and business team. This allowed stakeholders/end users to see the application and ask questions about various aspects of the system to clarify uncertainties and provide feedback to the developers. This last point is critical for a successful Agile Team, as without that feedback loop you don’t know whether or not you are continuing to provide business value.