Pursuing a Full Agile Software Development Life Cycle
Pursuing a Full Agile Software Development Life Cycle by Jasper van der Hoek
A few years ago, everybody was trying to adopt agile or scrum methodologies, and now the latest trend for organizations is to start adopting a CI/CD or DevOps strategy. Every organization is continuously trying to improve their speed and agility, and it’s likely that there will always be ways to become better and faster at what we are doing. But how can we determine where we should start and what change has the most impact?
The easiest way to determine organizational agility is to start by looking at the software development cycle. There are a few variations on the terminology and number of steps. In this blog post, I’m not trying to debate the perfect steps in the software life cycle, as you can easily apply the same strategy to a different variation of the software life cycle.
What I will point out is that an agile or lean methodology impacts specific activities you move through the wheel, but the phases stay the same. When looking at where an agile methodology provides the most impact, this will mostly be limited to planning (1), analysis (2) and somewhat during development (4). But the software development life cycle has three more phases. Past the development phase, organizations frequently revert back to their mostly manual maintenance mode and lose all speed and flexibility. Knowing that the methodology can improve the agility of planning (1) and analysis (2) what can we do to optimize the remaining phases?
Are CI/CD & DevOps the Solutions to Becoming an Agile Organization?
The latest market trend is for organizations to start adopting CI/CD and DevOps, but this alone doesn’t make you agile. Becoming agile in all phases of the software development life cycle takes more than just adopting agile, CI/CD and DevOps. Each phase has a different goal, to achieve that goal we need to focus on different areas. When we closely review the phases, we can identify five key areas that can enable speed and agility: Methodology, Architecture, Automation, Infrastructure, and Technology.
With the five key areas identified, we can take the next step towards identifying the focus areas for your organization to improve. We can start by identifying how agile your organization has become in each of these areas. It’s important to honestly evaluate where your organization lies in regards to each area. Is your organization truly ready to accommodate the changing business needs? If you are currently less mature in a specific area, it just means you’ve got more opportunity to improve. Let’s take a closer look at each of the five focus areas and some recommendations:
In this area, make sure to improve collaboration between business and IT and allow for quicker discovery of the requirements to ensure a quicker time to value.
Allowing for quick adoption to changing business needs improves speed and agility during Planning (1), Analysis (2) and Implementation (4).
Design your solutions using the principles from a component-based or microservices architecture to create autonomous and independent systems, allowing for flexibility due to the reduced impact of change. This area has the most impact during Design (3). You’ll reap the benefits during a sequential Implementation (4) or Maintenance (6) phase.
Manual work can be time-consuming and prone to error. Start by measuring the time spent on all manual tasks and continuously keep automating the most time-consuming work. Automation reduces risk and improves speed during Testing & Integration (5).
Flexibility in infrastructure is a must to keep up for the continuing change. Waiting days for a server should be something of the past. IaaS providers already allow for immediate provisioning of servers. The next step is containerization which, in combination with automation, can lead to sell-service and fully automated provisioning so System Operations can focus on improving rather than provisioning. This improves speed and agility during Testing & Integration (5) and Maintenance (6).
Technology is what ultimately allows your organization to be agile. To achieve the most value it’s imperative to choose the right technology for the job. While identifying your focus areas look at the underlying business goals and choose a technology that helps you achieve those goals with the least amount of effort.
Do your due diligence and adopt a combination of technologies that can collaboratively support you in your pursuit of becoming a full agile organization. Choose technologies that are open and can easily increase your agility, but are also capable of growing with you. A full-stack platform like Mendix has been designed with this in mind. Throughout the other four key areas, the Mendix platform can help increase your agility, while at the same time supporting and encouraging you to use the technologies that fit best in your business.
You can fit the Mendix Platform in your existing processes through connecting your existing agile requirements suite, by leveraging the built-in agile toolset, or by running your apps on the Mendix Cloud built on top of CloudFoundry, or run your applications in your own managed Container Framework. You can choose to leverage many of the Mendix features to improve your speed and agility.
What is Your Agility and Your Focus?
After looking closely at the agility in the five key areas, how far have you come in the pursuit of an agile business? What would be the next big step to becoming more agile? The focus on any of these areas can vary depending on your organization’s strategic focus. Most frequently, it’s best to focus on the area that is least mature.
For example, if you’re already proficient in Scrum, have a solid SOA architecture and are slowly moving to a microservices architecture, you are already on the right path towards agility. But when you are still hosting your own hardware and it takes a few days to provision a virtual machine, you’ll lose a lot of your organizational agility. In that case, try and focus on adopting a cloud platform or the latest container architecture.