What is agile software development?
Agile software development is fundamentally an admission that more traditional approaches to software development are often ineffective for stakeholders as well as the product development teams on which the stakeholders depend. Agile approaches to software development incorporate many of the pragmatic aspects of software engineering that these legacy approaches have historically ignored.
More agile approaches to software development were first imagined by a crew of veteran software practitioners around 20 years ago in the Agile Manifesto. This document is intended to summarize the most effective aspects of software development learned by masters of their craft. There are four fundamental facets laid out in the Agile Manifesto to describe agile software development:
- Individual team members and continuous collaboration are favored over a reliance on rigid processes and expensive, heavy-weight tools
- Rapid value delivery cycles and feedback on working software is a key focus, as opposed to longer phases without regular input from stakeholders
- Lightweight and fluid documentation, written from the perspective of end users and describing the user’s intent is favored over comprehensive, up-front business requirements
- Acknowledgement that software development is messy and being open to change instead of a rigid plan
Make no mistake – agile software development is much more than a checkbox type approach in which only the technical team introduces a series of changes and realizes gains thusly. Rather, it’s a set of consistent behaviors stemming from core cultural beliefs that must permeate throughout a company from top to bottom. The ultimate goal is to ensure that customer value is put first and foremost, with success being achieved through a consistent and repeatable approach to value delivery.
How do agile software development processes differ from other processes?
The way that I like to think of agile software development at a high level is that it’s first and foremost an admission that software development is a messy affair. Many more traditional approaches claim that success is achieved by adhering to inflexible structures around a slew of required phases, with associated stage gates and systematic executive approvals abound. This insistence of rigidity is driven by the misconception that one can succinctly define every functional and non-functional requirement of a software project up front. The reality, however, is that a technical team regularly gains new insights through the active development of features, and hence must be set up to quickly incorporate changes throughout the process.
A key goal of agile approaches to software development is iterative delivery of customer value in smaller pieces, specifically so that input can be actively solicited from stakeholders and the work trajectory altered accordingly. This way, ultimately what is delivered throughout a project is much more aligned with stakeholder objectives and ensures that the value delivered meets or exceeds customer expectations.
The following diagram illustrates this concept:
What are the benefits of agile software development for SaaS/software companies?
There are a number of reasons why adopting an agile approach to software development is beneficial. These range from greater overall feature value to improved employee and customer satisfaction, each with increased quality along the way.
Typically, agile approaches introduce a frequent cadence of production releases, each delivering incremental customer value. In order to facilitate frequent releases, automated regression testing is often introduced. Traditional approaches to software development generally rely on small armies of manual testing resources, which a company leveraging a frequent production release cycle simply cannot afford. Instead, agile approaches to frequent value delivery focus their quality assurance activities on building and maintaining a robust suite of automated regression tests, beginning with functional tests and frequently including performance tests.
This technique of creating and frequently running a comprehensive automated test suite dramatically reduces costs and improves quality over the long run. Focusing on repeatability will ultimately yield regular production releases that have little to no impact on customers, while simultaneously continuously adding value.
Are there challenges when it comes to adoption of an agile development methodology?
Agile software development certainly comes with its own set of challenges, and should not be viewed as a silver bullet in and of itself. There are two major agile adoption challenges that I’ve continually run into.
One of the biggest challenges that I’ve personally encountered is in garnering a level of comfort for incremental value delivery throughout a varied stakeholder group. Often, the concept of a truly minimally viable product (MVP) is initially not well accepted, and requires several in depth conversations to ultimately foster the required level of support. From my experience, there is often a desire to make larger public splashes with fully-featured products once they’re complete, inclusive of all of the bells and whistles possible.
The notion of delivering a slimmed down feature and getting it in front of real customers (albeit with a smaller pilot group) as quickly as possible, and iterating on the feedback to improve the feature until it’s deemed sufficient in terms of value production, is often a foreign one. To combat this, I recommend ensuring that you have identified a pilot group of customers for which you’ve solicited interest in the specific features being built. With such a group, you can engage them in a feedback cycle during beta periods. This way, you ultimately get to test out the capabilities in active development and tune them along the way to ensure that they deliver the most value possible once fully complete and ready for general availability.
The second common pitfall that I’ve seen is a lack of true understanding of what’s required by all stakeholders involved in shifting to an agile approach with faster turnaround cycles, often going all the way up to the CEO. That is, I believe that some senior leaders hear the term “agile” on a podcast during a weekend jog and believe that they can simply flip a switch and automatically realize value more quickly. They may not understand that, in order to do so, they need to systematically build cultural acceptance and understanding of what this approach means throughout their organization. This includes ensuring that the level of stakeholder involvement increases alongside the product development team’s activities.
As with all cultural change, one must understand that making the switch to agile software development practices does not happen overnight. Rather, there must be a diligent effort applied to ensure that the company fully understands and appreciates the rationale behind the changes being introduced. Walking both your stakeholders and your software development team through the “why”, and tying the needs of the business to this change, will serve you well in ensuring successful adoption.
How have agile software development practices changed product development?
As mentioned earlier, one of the biggest positive impacts to product development through the application of agile methodologies is the ability to quickly deliver value, measure its impact, and then iterate to deepen the value connection with customers. In the past, if you had an idea for a feature and it took 12-18 months to bring it to market, the end product delivered likely was not aligned to the original goal or was no longer relevant after such a long period of time with which to get the feature to market. The ability to nimbly change course as market needs evolve in real time is tremendously valuable to any business.
In addition, the best agile software development teams focus heavily on repeatability, as made famous by companies like Netflix and Amazon. The introduction of DevOps capabilities to significantly accelerate time to market and dramatically reduce the level of toil required by software teams to push changes to production environments is critically important to success. Intelligent suites of automated regression tests and continuous integration / continuous delivery approaches allow software engineering teams to rapidly iterate on code changes with a high degree of confidence that the changes they’re making do not adversely impact the behavior of their systems.
Can you describe how Centage product development has implemented an agile software development methodology?
We’ve intentionally taken a very pragmatic approach to implementing a methodology at Centage that works well for our team and company as a whole. There is certainly a nod to the fundamentals as outlined in the Agile Manifesto, while also incorporating many of the core principles that my leadership team and I have seen to be effective in our combined 60+ years of experience leading software teams.
Our overarching goal is to provide as much transparency into what our teams are doing by focusing on repeatability and a set of core principles that we believe will yield the best possible results for our business and customers. We put as much responsibility in our engineers’ hands as they’re willing to handle, which we find leads to continuous innovation.
Our Core Principles
Keep it simple
We make decisions which keep the long game in mind, and actively consider the total cost of ownership by picking the simplest approach that satisfies the need at hand. We understand that building software is generally the easy part of the larger software development lifecycle, and yet crafting software that is operationally efficient and maintainable in a cost-effective way can be challenging. This is why we favor leveraging our creativity to make decisions that maximize customer value while minimizing the amount of heavy lifting required to support our software.
Stay calm under pressure
We are frequently thrust into situations where we’re asked to think on our feet and come up with creative solutions. The most effective way to get the best results is to ensure that we focus on keeping our composure in all situations, particularly those that require quick triage and results.
Strive for repeatability
We focus on building systems and features through repeatable, reliable processes. We favor not repeating ourselves, and automate as much as we can to simultaneously reduce unnecessary work while improving the quality of our output.
We recognize that our approach is an ever-evolving work in progress, and so we’ve introduced checkpoints along the way to facilitate inspection and adaptation. For example, we conduct regular team retrospectives at the conclusion of each sprint. We also maintain and consistently work on a backlog of technical debt to improve the stability, scalability, and supportability of our software.
Practice collective ownership
We do not believe in silos of knowledge, and do everything in our power to break these down wherever possible. We frequently rotate our engineers across teams so that we build in redundancy for the business, and also so that our engineers remain engaged through broad exposure to various areas of the business and system. We believe that any line of code should be modifiable by any engineer. While there are many “T-shaped” individuals on our team, we are not possessive of our code, and we seek to actively spread our expertise throughout the team.
We achieve rapid value delivery at Centage by conducting demos of our working software every two weeks when we conclude a sprint, getting feedback from key stakeholders along the way. We also conduct demos for the whole company every four weeks during our all-hands meetings, so all employees have an opportunity to see what we’re building and provide input. Finally, we release new features every two weeks, and we endeavor to increase this cadence in the coming year. We have high confidence in our releases due to a comprehensive regression test suite which we continually enhance alongside new feature development.
Fundamentally, the approach that we’ve taken at Centage is a key enabler in helping us achieve the company’s vision for continuous, innovative product development. Alignment around this agile approach throughout the company has allowed us to remain nimble and ensure we are as responsive as possible to the changing needs of our business and customers over time.
Centage Corporation’s Planning Maestro is a cloud-native planning & analytics platform that delivers year-round financial intelligence. With Planning Maestro, Centage offers the sophisticated features needed by small and mid-market organizations to integrate budgeting, forecasting, and deep data analysis within one easy-to-use, scalable SaaS solution. For more information on how to modernize your office of finance with intelligent planning, view our product demonstration video, or call 800-366-5111.