Every business is different. Every business has different goals and needs. But every client wants to see results as quickly as possible.
In the case of website or app development, we can bring tomorrow ever closer to today by using the next evolution of the Agile process. It’s called continuous development, and it dramatically improves technical time-to-market.
For this post, I enlisted the help of fellow “Alipian” and Senior Technical Lead, Brendan Butts.
What is Continuous Development
Continuous development presents an iterative approach to development by building software and releasing that software in pieces. This starts with the build and deployment of core features (typically called the minimum viable product) and iterating/removing/adding functionality from there.
Continuous development can be split up into separate concepts: integration, delivery, and testing.
Continuous Integration (CI)
When a member of a development team starts working on a new feature, they typically create a branch of the most up-to-date source code, code the feature, and then their changes are merged back into the main source code repository.
This approach can lead to conflicts if the code in the main repository has changed greatly while the new feature was being developed (typically due to other features that other developers were working on having been merged in).
Continuous integration seeks to reduce the amount of time a code branch goes without being integrated into the main source code. With CI, developers are encouraged to integrate their changes into the main source code multiple times a day.
Continuous Delivery (CD)
CD is an approach to development aimed at reducing the length of development cycles and having more of them. The goal is to ensure that new code can be released at any time, with high confidence of it performing the way it is expected.
This involves incremental updates to applications that are oft deployed to the production environment after being tested automatically on a staging server, using rigorous test cases. It is important for the deployment process to be a fully automated “push button” solution.
There are three key elements that CD provides:
- Continuous deployment
Visibility means that all aspects of the build/deploy/test/release process are visible to the entire team.
Feedback means developers are made aware of issues as soon as they occur, when the code they just wrote is fresh in their minds. This allows the developer to fix the issue quickly.
Continuous deployment means the automated process that allows the release of new improvements or fixes to the production environment.
The book “Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation” provides more technical detail than we ever could in a reasonable blog post, if you are interested in taking a deeper dive. A copy sits on our shelves.
Benefits to using Continuous Development
There are a number of benefits to operating under continuous development.
It gets to the user faster
This is the benefit that is the most obvious. With a traditional digital project, the launch of the website or app is the last thing that happens. If you have a project running a full calendar year, for example, the user doesn’t see the finished product until closer to November or December. That stinks!
With continuous development, you can get a version of the site to a user much earlier in that calendar year and then iterate through the year, capturing feedback all the way.
Because the model is more collaborative and faster moving, we have even seen cases where it has resulted in a shorter timeline for delivery of everything originally scoped!
Seeing and touching
We maintain that sometimes it is difficult to fully understand how something functions until you are in the driver’s seat — compare this to watching a car in action on a commercial versus taking one for a test drive.
It can be difficult to understand how design or requirements align with an individual’s expectations until after it is available to be touched and used. Continuous delivery allows a user or stakeholder to identify any gaps in understanding early and fix them prior to the end of a project.
Experimentation and User testing
On a similar note to the above point, continuous development opens the door for further creativity and user testing. Direction can shift on the fly, as humble beginnings make way for exciting new ideas.
User feedback can also help identify additional opportunities or places with which an application can do more or do differently.
Unit Testing and Incorporating Feedback
The feedback cycle enabled by continuous delivery, as mentioned earlier, provides a developer with immediate feedback about the code they just wrote. After the code is integrated and deployed to the staging environment, automated unit tests are run, which test core functionality of the application. If there is an error, or something behaving improperly, the developer will be made aware and they can fix their code.
This isn’t the only kind of feedback though. Problems in the deployment due to software libraries or configuration changes, or database migrations, will all be reported on to the developer.
Then of course, there is the user feedback which can come from internal teams reviewing the new software and performing acceptance tests, or from actual clients of the application.
As a team, everyone involved in the software development lifecycle gets a measure of satisfaction from releasing new features. This satisfaction is often tempered or reduced by bugs, anxiety over the deployment, or low confidence that the feature will perform as expected.
Continuous development reduces bugs, heads anxiety over deployment off before it ever starts by making deployment so routine it’s about as anxiety producing as making a cup of coffee. Automated tests and acceptance tests raise the confidence level of everyone involved in the project as to what the feature is going to accomplish.
Is Continuous Website Development the way to go?
We believe that continuous development is the future and recommend it as the methodology for most projects.
There may be situations in which a more standard “Waterfall” plan is required (Discover → Requirements → Design → Develop → Launch). If you are willing to take a chance on a more iterative and agile approach to building your new website or application, we think you will be pleasantly surprised by the results and by the more immediate returns.