Many small and medium-sized businesses (SMEs) as well as larger, established, companies are augmenting their brick and mortar presence with an online presence. Concurrently, Agile Software Development Methodology (“Agile”) has been almost universally adopted by venture-backed software companies. In the following, SVSG offers a primer to SMEs on how to get started with Agile: what must be done right at the onset, and what to avoid.
Agile: Definition and Benefits
Today, Agile is the one methodology most broadly embraced by high-tech companies. It was first documented in the Agile Manifesto, which outlines Twelve Principles. Its inspiration stems from the realization that failure rates of long and complex projects grows geometrically with their forecast duration and complexity.
In our opinion, Agile should also be adopted by “non high-tech” companies because it applies solid engineering practices that are relevant to all software projects.
- It defines measures of success along “user stories”, i.e. new stand-alone activities that are in-and-of themselves valuable to the end user
- Each release is broken into Sprints – typically 2-3 weeks long. By the end of each Sprint, the code is brought back to “almost releasable” quality through an Acceptance process: (a) the Product Owner validates that the code correctly implements the user stories and (b) the Development and QA teams validate that the code executes correctly in all test scenarios.
- Software is frequently, if not constantly, tested and validated. Unless impractical, automated tests are written in parallel with the code implementing new user stories, and thus continually augment the existing battery of automated tests.
Three Principles to Focus on When Starting with Agile
An easy way to summarize our recommendation is: Do less, better and faster
- Do Less: By keeping projects small, we increase the likelihood (a) that they will actually complete and (b) that we will meet our schedule. Our forecasting accuracy over three (3) months is more than two times better than our forecasting accuracy over six (6) months. A twelve-month project is almost guaranteed to suffer material changes and/or significant delays.
- Faster: Leverage lean product methodology. Keep projects as small as possible, and deliver an MVP (Minimum Viable Product) as early as possible to our customers. We want to identify the smallest set of user stories, and thus the minimum number of Sprints that allows us to deliver meaningful value to our customers, and release this as soon as possible (see my blog on MVP for techniques to reduce a long list of features to an MVP).
- Better: Quality is a core driver of Agile Methodology, yet it is too often overlooked. Agile works if software is “almost releasable” at the end of each sprint. This means that we must invest in testing as much as we invest in development; including setting a quality frame of mind in the team (see my blog: “Who owns quality?” )The reason is simple: customers expect nothing less than bug-free code. Said another way: Untested code is a liability that can cause harm to the company, and is thus worse than no code at all.
- Furthermore, by keeping the code quality relatively high at all times, we increase our development velocity.
- As a corollary, in order make frequent testing practical, tests have to be automated, because we must test not only the new features but also those that already exist (in order to ensure that we have not broken anything). Once a given feature has been implemented it will be tested every day, if not multiple times a day. This is only possible if the tests are automated.
Please note that these practices are self-reinforcing. Because we build our software around user stories, tests are easy to design and automate. This allows us to test often, and thus release often. Consequently, we also support a Lean Product methodology by consulting our customers often and adapting smoothly to their (sometimes evolving) needs.
Conclusion
While much has been written about Agile in the context of high-tech companies, SMEs and companies whose businesses are more traditional will be well served by embracing Agile and applying the mantra of “Do less, better and faster” when embarking on software development. When using Agile: define small projects that deliver measurable value quickly to customers, iterate using early feedback and ensure that quality is uncompromised through continuous test automation.