chris - Fotolia
More than ever, businesses must move quickly to gain and retain relevance, and that's no less true in application development.
Many organizations implement Agile transformations and then take the next step to set up DevOps practices. And organizations that have not implemented Agile increasingly feel the competitive pressure to do so.
But a complete transformation is not an effort to take lightly. The move to Agile is complex, costly and time-consuming. Employees must take on new roles and learn new ways to work, all of which requires training to acquire new skills. Teams centered around old norms dissolve, and new teams form in accordance with Agile principles. Additionally, a team might require infrastructure and tooling investments.
A true Agile transformation involves more than implementation of new methodologies, processes and roles. The undertaking calls for a cultural transformation, which might be the most difficult initiative an organization's IT department can undertake. The organization needs to approach an Agile transformation from the top down; senior management must endorse it and, more importantly, lead by example.
In some regulated industries, the nature of the field itself can impede Agile adoption. Organizations that provide medical devices, pharmaceuticals and utilities find it especially challenging to implement Agile ways of working given the heavy testing and quality control documentation required. Additionally, organizations that have products with safety-critical components must also adhere to strict quality assurance standards that require full, non-risk-based testing. These organizations might find Agile's tenets of rapid development at odds with their quality standards.
Whatever the reason, when a full transformation to adhere to the Agile Manifesto isn't feasible, you can still implement Agile principles -- even if partially.
What it means to be Agile
Despite all the methodology's complexities and challenges, it is possible to achieve Agile benefits and gain agility without a full transformation -- think of it as Agile-ish. After all, agility is just the ability to move, react and change quickly. And Agile as an approach to code creation and delivery is not only about processes; it is, more importantly, a software development philosophy. The Agile Manifesto sums up this philosophy with 12 principles that intend to facilitate practical approaches to make code delivery faster and higher-quality than with other methodologies.
Organizations that implement Agile respond to the unpredictability of development by using small, self-managed teams to build software incrementally. These teams develop in successive work sequences called iterations and with timeboxed builds. Most importantly, developers break each feature down into its smallest components and deliver them individually.
Agility sans dogmatic Agile
Regardless of the preferred methodology espoused by the organization, it is possible to take an Agile-ish approach to software development. Any organization can move toward agility via the implementation of Agile practices. In fact, you can apply Agile practices to a traditional Waterfall software development lifecycle (SDLC) approach. Introduce Agile practices throughout the SDLC, especially in planning, project management and team development.
Start with requirements development. Break down requirements into the smallest increments possible to shift the organization's focus from long-term planning to faster results. Develop and maintain a prioritized backlog of streamlined requirements or user stories that enables team members to shift among priorities. And it can help to experiment with different techniques to improve estimation accuracy.
It's easy to incorporate Agile practices into project management with these approaches:
- Shorten release cycles as much as possible to make time for bug fixes, reduce technical debt and increase speed to market.
- Develop minimally viable products, which have just enough features to satisfy requirements, improving speed to market over a product with more features because MVPs are faster to code and test.
- Organize frequent demonstrations of new features to receive early feedback. This approach enables you to catch any misunderstandings in requirements early and decrease costly design errors.
- Finally, implement fixed timelines with variable requirements to increase flexibility, as less critical requirements can be moved to the next release.
Bring Agile communication and work practices to your teams to help kick-start a cultural shift in a nonthreatening way. For example, you can implement daily standup meetings to increase transparency and give everyone a shared understanding of a project's status. Use a whiteboard with sticky notes to manage tasks and issues, which further increases progress visibility. Try pair programming, or pair developers with testers to better share knowledge and enable a truer understanding of other roles. Finally, implement retrospectives after each release to champion continuous improvement.
The key to agility -- without a full-blown Agile transformation -- lies in the implementation of these practices and processes, which can both work within your organization's constraints and add value via increases in speed to market and quality. Many successful organizations are only Agile-ish -- and that's OK.