The best methodologies for Agile VSM and Continuous Testing
Did you know that there are more than 50 documented types of agile and Agile VSM methodologies? Yeah, I didn't either. It's like when you see a photo of a Kiwi bird. Native to New Zealand, because of their shape and name we mostly think that these birds are tiny little cute things. However, in reality, an adult Kiwi can be larger than a pineapple and weigh up to 2 kg.
That's Agile for you. As a software development and project management process, Agile helps teams self-organize and collaborate in order to bring better products to market. Sounds simple enough, and yet here we are with numerous different types of processes and methods.
Agile, as we have discussed in a previous post, is related to value stream management and Continuous testing and delivery. However, in the face of so many different types of agile development, I thought it would be important to look at specific Agile Methodologies that directly aid Agile VSM and continuous testing.
So, let's try to make sense of it all. We will look at four types of agile methodology than can benefit your VSM and see how each one can help your organization.
However, as author Dave Pilkey says. Before I can tell you that story, I have to tell you this story.
Agile at a Glance
To be specific about Agile, it is a set of standards developed and put in place to respond to some of the famous inefficiencies in software development. We know where continuous testing fits in this because the goal of continuously testing your web and mobile apps is to increase efficiency and delivery speed. But what of VSM? Since we use VSM to improve processes with repeatable steps and multiple handoffs you can already see the similarities to continuous testing and where it fits in agile by extension. The bottom line is that we use all these processes and methods in order to increase value while removing waste.
The following principals encompass Agile:
- Customer Satisfaction – This is #1. Everyone understands that a satisfied customer base leads to success for any company.
- Inspired Contributors – Necessary in order to develop different projects.
- Functional Software – This is a good measurement for company progress.
- Observing and Adapting – All Processes need examination from time to time and the flexibility to adapt to change is necessary.
Agile has a list of core values as well:
- People and Communication – Gives value to these over the actual processes and tools.
- Functional Software – Prized over comprehensively documenting everything.
- Customer Collaboration – Better than negotiating contracts.
- Responding to change – More important than sticking to a plan, especially one that is not working.
Essentially if your VSM and testing process or plans follow the concepts above the congrats you are practicing Agile. However, we are here for more than a simple affirmation so let's dive into some of the most relevant types of Agile that will best suit your VSM and continuous testing efforts.
Lean Software Development
This Agile methodology focuses on delivering value by mapping the value stream. I'm sure you can already see the connection. A value stream is every combined step in the process of delivering a product to customers. In our example of delivering web and mobile apps, the value stream would be a software or app release from ideation to delivery. The most advantageous aspect of Lean is how flexible and easily evolved it is.
In the absence of rigid rules and guidelines there are some defining principals.
- Eliminate waste
- Boost learning
- Deliver Quickly
- Empower team members
- See the big picture
The main goal of Lean and Lean VSM which we have covered in another post is eliminating waste. You should only consider the most necessary processes and features for a release. The rapid and reliable feedback that Lean demands is provided by continuous testing, and remote debugging. The best way to eliminate waste is with efficient tools, processes, and development workflows. Lean methodology keeps teams small; resources used efficiently and puts decision making power in the hands of individuals. One more important aspect of Lean is the emphasis it puts on developing automated unit testing alongside the product.
Agile Scrum Methodology
Scrum has grown in popularity over the past few years because it is so simple. Used for managing repetitive and incremental projects, Scrum has a proven track of helping teams increase productivity and even incorporate practices from other agile models.
Product Owners in Scrum work with their teams to create a product backlog that consists of prioritized functionality. Simply put, everything that is necessary for a web or mobile app release goes into the backlog. This includes features, bug fixes, functional and performance requirements. With the backlog in place, these deliverables will commit to sprints of 30 days or so typically. After a sprint is delivered the backlog is added to reexamined and reprioritized.
Agile Scrum works well with continuous testing in that during a sprint we add code as it is written, tested, and debugged. Team efficiency will improve greatly with that ability. It is also beneficial when working on value stream mapping. Discover examine and eliminate Extraneous or wasteful processes during each sprint in order to build a leaner and more effective software delivery process.
In the world of software development there may be no Agile methodology that is more lightweight or adaptable than Crystal.
Not a single method, Crystal is made up of different models like Crystal Orange, Crystal Yellow, and Crystal Clear. Basically, anything that sounds like a soft drink from the 90s. Each of these methods has individual characteristics defined by team size, and project priority. This family of methods shows that projects vary and perhaps each project needs a slightly different range of practices and processes in order to be successful.
Crystal takes the focus away from tools and places them firmly in the hands of the people involved in the process. Attention is also given to business criticality. It is not just the people that it is important however, it is also the communication between them that drives Crystal.
When using a VSM collaboration and communication is also key. In an effort to eliminate waste and build efficient processes you must place emphasis on the people working to create more efficient systems. You also need to be sure that they communicate their processes in a helpful way as well. As with other agile methods that promote faster delivery and fewer bugs a continuous testing process would be helpful.
Dynamic Systems Development Method (DSDM)
This method's roots go way back to the year 1994. There was a need was for rapid software delivery. DSDM provides a common industry framework. Of course, it has evolved with then to include foundations for Agile process planning, management execution, and scaling.
There are eight key principles of DSDM that aim to deliver development projects on-time and under budget. The principles work within a VSM system as well as function well with continuous testing. It starts with defining business needs and value and includes user feedback. From the development side, DSDM seeks to empower teams to deliver software frequently by collaborating with stakeholders and integrating their testing. Fans of the process call it "fitness for business purpose". Focus is placed on the most useful 80% of a system that can be deployed in 20% of the time. This is waste elimination as exercise, something any VSM process can line up with.
The 8 Key principles of DSDM
- Focusing on business need
- Delivering on time
- Never compromising quality
- Building incrementally from a strong foundation
- Developing iteratively
- Communicating continuously and clearly
- Demonstrating control
High-level business requirements are established early in the process. Next, all development changes need to be reversible, and rework is meant to be built into the process. Sprints that are made up of system requirements and delivered in short, fixed-length time-boxes are the next step.
Prioritized sprints using MoSCoW Rules.
- M – Must have requirements
- S – Should have if at all possible
- C – Could have but not critical
- W – Won‘t have this time, but potentially later
Yeah, I don't know what the Os stand for either. Sounds good though.
Critical work needs to be completed in the time-box that is defined as a result of the DSDM project. Good news though, you don't have to consider every single project requirement critical. Each timebox includes less critical items of course. They are there, in order to make space for higher priority items if needed. DSDM functions best when all teams are working efficiently and in unison as with any agile methodology that will help eliminate waste and improve development projects.
Agile development has a great set of development tools and principles. It increases team member productivity which helps them feel good about their work. From product owners seeing their vision achieved to developers being able to fully manage their personal workloads. It all leads to delivering useful web and mobile apps to your users.
Value stream management and continuous testing are two ways Agile is helping increase efficiency in the development and release of web and mobile apps. VSM Agile provides the methods that give enterprises insights into which areas of their development process need to be changed or tweaked. On the other side, continuous testing is the backbone of a good testing process and helps free team members to focus on other areas of development.
Agile is a world of collaboration and we are all better for living in it.