A growing number of organizations are deploying the Agile approach to software development to enhance and accelerate the development of new software products and features.
The reasons for doing so are compelling. Agile can lead to benefits such as creating more efficient and productive ways of working that enable teams to achieve better results and higher quality products that meet the needs of customers.
The method can also help bolster employee morale by leading to better team collaboration, which fosters more cohesion and cooperation among developers. When employees are more satisfied, they are less likely to leave the organization, and when organizations are viewed as positive places to work, they are more likely to attract new talent.
Furthermore, Agile can result in more satisfied customers. The close collaboration between development teams and the users of the software means customers can frequently voice their opinions about what they think is important or what needs to be changed. There’s a better likelihood that they will be pleased with the final product.
These benefits are not givens, however, and there are no guarantees that using the Agile approach will be a positive experience for companies. They need to leverage best practices to improve their chances for success with Agile.
Following are guidelines for best practices for deploying Agile methods of software development.
Determine Whether Agile Fits the Culture, Processes, and Business Goals of Your Organization
Before getting into any actual preparation for launching an Agile strategy, companies need to determine if the method will be a good fit for the organization and its mission.
The Project Management Institute, an organization that supports more than 2.9 million project management professionals worldwide through collaboration, education and research, notes that there are seven key questions organizations need to ask to determine if they are “Agile ready.”
These questions are based on common adoption mistakes the institute has seen in its practice, and focus on an organization's commitment to devoting the necessary time and resources to make Agile work:
1. Is your organization willing to dedicate a full-time business expert, known as a product owner?
The role of product owner represents the business community, particularly the project sponsor (customer or stakeholder), and is responsible for answering business questions that arise and making business decisions.
“This is the go-to person for the requirements, for answers to the team's questions about the features and functions that the business wants and how the business will use those features and functions,” the institute says.
2. Is your organization willing to dedicate a full-time delivery team?
Many organizations require that their project managers, business analysts, and team members work on multiple projects, and they are reluctant to supply the dedicated resources for Agile projects, the institute says. They question why they should redirect resources to Agile teams.
But there are many advantages to having a dedicated team. For instance, productivity is lost when team members must stop working on one project and begin working on another. Also, it’s harder to calculate the productivity rate. Because productivity is lost moving among multiple projects, it’s difficult to know how much can be completed in an iteration / sprint.
3. Is your organization willing to provide a business analyst to elicit just-in-time (JIT) requirements?
Just-in-time doesn’t mean going straight to design, as often happens when the team tries to define requirements during the iteration, the institute notes. It means taking the time to “groom the product backlog,” which involves defining detailed requirements before they are needed for the current sprint.
With JIT, requirements are elicited before beginning the current sprint, and translated so that a product can be designed, built, tested, and implemented. When requirements are “groomed” or defined before each sprint, the team doesn’t waste time during the sprint trying to figure out what each user requirement means.
4. Is your organization willing to time box each iteration?
A time box is a fixed duration into which an agreed amount of work is completed, according to the institute. Once an Agile team has worked together long enough to understand its speed, the duration of each time box is established. The team estimates how many user stories it can complete in that time box, given its resource capacity.
Time boxes are important on Agile projects for several reasons, the institute says:
- They help set expectations; the business knows what to expect from each time box.
- They’re a useful planning tool, and the team can estimate how much scope will be completed during each iteration.
- They help control scope and reduce the risk of scope creep.
5. Is your organization willing to put the right people in the right roles?
The roles on an Agile Scrum project include the delivery team, the product owner, and Scrum Masters. Some organizations don’t want to allocate resources to these separate roles, the institute says, so they put the wrong people in the right roles. Examples include business analysts as product owners or Scrum Masters, or technical architects as Scrum Masters.
Companies often put the wrong people in the right roles either because they don’t understand the importance of these roles or they are not willing to make a complete commitment to the Agile methods. Either way, Agile adoption is likely to be more difficult for these companies.
6. Is your organization willing to support a collaborative environment?
An organization that’s siloed and hierarchical in its reporting structure and communications style is not one in which trust is typically engendered, or where people feel a need to respond quickly to change, the institute says. Organizational silos create barriers that separate workers into factions, so communication takes longer, and the risk of a distrustful atmosphere is high.
To get things done quickly and productively, organizations need to share information and collaborate. Generally, the more siloed the organization, the less likely it is to see success with Agile adoption.
7. Is your organization willing to apply the necessary discipline?
Although Scrum practices are lightweight, they’re less effective when applied randomly, the institute says. Organizations that are looking for a “quick and dirty” way to develop software are probably not good candidates to adopt Agile methods.
To be adopted effectively, the Scrum framework requires a certain amount of discipline, and the amount of discipline is based on the type of Agile project. For example, a project being completed for a company in a heavily regulated industry might require more rigor than one without any legal or compliance requirements. Regardless of the type of project, organizations need discipline in initiating, planning, executing, controlling, and closing projects.
Get Buy-In from Senior-Level Executives
There are numerous scholarly and business articles published about why projects that lack senior executive buy-in are more likely to fail. Much of the premise is common sense: If a project does not have the direct or even indirect support of the people running the organization, chances are good that attaining success will be a constant struggle for all involved in the project.
One big problem when there’s a lack of buy-in is getting the funding needed to acquire the necessary resources for an Agile development effort. That includes people as well as tools.
Executive support is also important from a morale standpoint. Designers, developers, testers, and others on the team might be a lot more inspired to deliver a great finished product if they know the leaders of the organization are counting on them and are in full support of what they’re doing.
Those interested in launching an Agile initiative can take several steps to garner support from company leaders such as C-level executives.
Perhaps the first thing to do is educate business leaders about the Agile approach. Many senior management executives will not be familiar with how Agile works or its key components. They won’t fully make the connection of why it’s important to the company or fits with its business goals.
When discussing Agile and its potential benefits, speak in language that executives will understand. Specifically, explain in clear terms what the potential business benefits will be from using Agile methods of software development.
What’s the business case for doing this? What’s the potential return on investment (ROI)? Explain possible benefits such as reduced operating costs and capital expenditures, or the competitive advantage of speeding up time to market, increasing customer satisfaction, or improving customer retention. These are concepts that will win over executives, if presented in a coherent and realistic way.
Whenever possible, present real data to make the points about how the Agile model can deliver on the promise. That might include presenting case studies of how other companies have benefited from Agile. In selling Agile, use the business metrics that are most important to the organization.
Don’t neglect to discuss the likely challenges that Agile teams will face, and the possible need of additional resources down the road. It’s better to be open about the possible pitfalls and prepared to address them than to have them arise unexpectedly.
Be prepared to have a plan in place for reporting back to senior executives about the progress of Agile development projects. Although Agile can be autonomous within an organization, decision makers will appreciate knowing they will receive timely updates.
If all of this results in gaining an executive sponsor for the project, all the better. This person can end up being an advocate for Agile transformation within the organization.
Build a Strong Team
Once senior executives give their blessing for an Agile development initiative, get to work on building a team. The good news is many of these people might already be working for the company in its development operations. But there could very well be a need to hire additional professionals from outside.
As previously mentioned, for an Agile strategy to be successful a company must commit to devoting the right resources – namely people – to the effort.
The product owner is clearly one of the key figures to have in place. The development team needs to be able to count on the product owner to make business decisions quickly. And to make those decisions the owner needs to understand the business, its processes, and the interaction of the end-user with the product being developed.
This individual also needs the positional authority to make those decisions and must be available to provide immediate answers to keep the project on schedule, according to the Project Management Institute. “Having a dedicated product owner is critical to the success of an Agile project,” it says.
Another key player is the development team leader. The leader of an Agile team facilitates and guides the team as it performs management activities such as planning and testing. This person helps create and maintain conditions that allow team members to successfully complete tasks, and keeps the team focused on those tasks. The team leader also makes it easy for members to collaborate and communicate with each other and ensures that the team has all the resources it needs to complete the project.
Development team members are the people who do the actual work of building new software products. Their main functions include planning, testing, analysis, and programming. While many of the team members will be developers, the team might also include professionals such as designers, business analysts, quality assurance engineers, and database engineers.
Other members of the overall Agile team might include several specialists who are experienced in areas such as business analytics, machine learning, and cyber security. Examples include database administrators, build masters, information security professionals, and user experience experts. In addition, specialists might be needed for functions such as software testing, quality assurance and integration.
Finally, if the company is using the Scrum development model, you’ll need to appoint a Scrum Master. This person facilitates Scrum and is tasked with addressing any issues that hinder the ability of the development team from delivering on product goals. The Scrum Master acts as a buffer between the development team and any inside or outside influences that might detract from a project and ensures that the team is following the Scrum framework.
All the individuals on the team should have a strong grasp of the Agile approach, and if possible have experience working on Agile projects.
Understand the Agile Manifesto and Principles
At the heart of the Agile approach to development is the “Manifesto for Agile Software Development,” which was created in 2001 by a group of software developers.
The Agile Manifesto documents the developers’ beliefs about how modern software development processes should take place. The values and principles outlined in the manifesto were derived from and support development models such as Scrum and Kanban.
It consists of four central tenets:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The manifesto includes 12 principles that provide guidance in how development initiatives should take place. For example:
- The highest priority is to satisfy the customer through early and continuous delivery of valuable software
- Welcome changing requirements, even late in development
- Deliver working software frequently, from a couple of weeks to a couple of months
- Business people and developers must work together daily throughout the project
- Build projects around motivated individuals
The manifesto also states that:
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation
- Working software is the primary measure of progress
- Agile processes should promote sustainable development
- Continuous attention to technical excellence and good design enhances agility
Having a solid understanding of the tenets and principles of the manifesto can go a long way to making Agile development a success.
It’s especially important to adhere to the tenet on customer collaboration. Communicating and collaborating with customers is an important part of the Agile methodology. Through such collaboration with the development team, the customer is kept aware of progress. This type of cooperation can result in a higher quality product.
Don’t Neglect Product Testing
These days, companies are often in a rush to get products to market, and the competitive reasons for doing so are obvious. But the potential problems that can arise from being too hasty with releases might not be as clear.
Software that’s released before it is ready can result in issues such as security flaws, ease-of-use problems, and poor quality. One of the ways to prevent such problems from arising is to thoroughly test products before they go to market.
Teams can leverage Agile methods as part of the testing process. As noted in a report by research firm Frost & Sullivan in May 2018, the software market is creating new products largely based on IT trends such as the rise of big data and the Internet of Things (IoT), and that’s leading to a shift in the testing market. The market is expected to grow at a 14% compound annual growth rate (CAGR) over the next few years, the firm says, with the rise of Agile testing and DevOps.
With Agile, testing is embedded in the development process, and software developers are trained to write tests either before or alongside the code they write. This makes it much easier to identify and isolate problems as products evolve. Given that software product development can be dynamic, this is an important capability of testing.
There are several methods of software testing within Agile, such as Behavior Driven Development (BDD), Acceptance Test Driven Development, and Exploratory Testing. It’s important for teams to learn about these to choose the best one to meet the organization’s needs.
As with other areas of Agile, be sure to have the right people in place to handle testing at the various stages of the development lifecycle.
Include Provisions for Data Security
Cyber security needs to be a part of every process in business today, and that includes software development and the Agile approach. CSO Online in a 2017 article described the 10 ways to achieve Agile security:
- Change the mindset of development and operations teams. Developer and operations teams often see security as a drag on productivity. Introduce a new perspective that shows how security can keep up with the pace of development.
- Introduce a DevSecOps approach to security teams. In order to move on projects and continuously iterate and deploy new products and solutions, enlist security teams to become “security as a service,” enabling them to operate as a supplier within your organization.
- Standardize on core security principles. To achieve an “always on” culture while maintaining an agile and secure state, execute on three core security principles that map back to DevSecOps: API-driven security, security at speed, and security on-demand.
- Adopt “API-driven security.” Stay away from traditional security systems managed by people logging into a console. By taking the human element away from the process, your organization can establish a continuous integration methodology, which gives consistency of delivery.
- Create a security rapid response team. Fast response times are imperative. To enact “security at speed,” implement continuous measuring, testing, and monitoring to iterate quickly.
- Make use of the cloud. To achieve “security on-demand,” deploy cloud-based technology to ensure that the security posture is never static. Work closely with leading enterprise security vendors to build scalable commercial and technical models to allow for on-demand security systems.
- Deploy a code-driven security infrastructure. Security should not have to be built from scratch over and over. Deploy a code-driven security infrastructure for the repeatable and automated build and management of security systems.
- Prioritize visibility and management. Work with cloud vendors to adopt an agile, responsive approach to infrastructure and to build dynamic commercial and support models. End-to-end visibility allows you to take a granular approach to managing configuration of open-source tools that help the security team keep track of deployment, usage, and management of cloud services.
- Adopt elasticity and automation. As a central tenet of a defense-in-depth strategy, use an automated security tool to monitor, detect, and defend against attacks.
- Secure support from decision makers. Buy-in and support from key decision-makers enforces intention. Once the effort is supported from the top, you’ll achieve continuous and secure innovation.
Evangelize about Agile and Share Best Practices
The benefits of Agile development can be enjoyed throughout an organization. Once one or two successful projects have been completed, leaders of the movement should spread the word to other parts of the enterprise and share best practices.
Info-Tech Research Group, an IT research and advisory firm, recommends that organizations share best practices by creating an Agile Center of Excellence (CoE).
A CoE for Agile gives organizations a way to create consistency across all Agile teams to drive greater business results and alignment, the firm says, and enables them to expand Agile capabilities within the enterprise through a set of support structures and facilitated through shared learning and capabilities.
Info-Tech recommends that companies not “over-govern” when they establish these centers. “Empowerment is critical to enable improvements; set boundaries and let teams work inside them with autonomy,” it says.
A CoE will not be leveraged unless it aligns with the needs of its users, the firm says. Agile leaders need to invest the time to align with the functional expectations of Agile teams.
Other recommendations for the CoE include:
- Creating a set of service offerings aligned with both corporate objectives and the functional expectations of customers, to ensure broad support and utility of the invested resources
- Understanding the cultural challenges of forming a CoE
- Tracking the progress of the CoE and Agile teams, and using this data to determine the root cause of issues
- Effectively preparing changes to the Agile environment to drive business results
- Communicating changes to identified stakeholders to ensure long-term viability of the CoE
When implemented via best practices, Agile can result in:
- Improved team collaboration
- Close collaboration between development teams and software users
- Increased likelihood that the customer is satisfied with the final product
- Accelerated development of new software products and features
The above best practices for deploying Agile methods of software development will improve organizational success with Agile. Without these guidelines, many companies won’t realize the benefits of Agile and could lose buy-in from executives and teams before truly giving Agile a chance.