Software development has undergone a quantum leap in the last decade as the software development community has largely shifted from the traditional waterfall models of the past to the lean and agile methodologies of today. While the sequential design approach of the waterfall model still has some supporters, today’s rapidly evolving business climate all but demands that companies adopt an agile approach to launching software products.
A Forrester study conducted in 2012, for example, found that 17% of business leaders want strategic IT services or software products delivered in less than 3 months from concept to production, and 34% expect the same in between 3 and 6 months. An agile software development approach is the only way to build software products in such a short amount of time.
Development Operations, or “DevOps” as it is commonly known, is the practice of ensuring that an organization’s development environments, physical environments, and processes are set up to deliver new builds into production as rapidly as possible. DevOps requires tight integration of what have typically been siloed functions, like QA and IT.
DevOps engineers wear many hats in supporting Software and QA engineers with their development needs. They may provide help on a particular project that requires a test server to be set up and configured. They may be resposible for build servers that support continuous integration, an automated build practice that merges code automatically multiple times a day. They may write custom scripts that perform a particular development function. To hear “the Father of DevOps,” Patrick Debois, talk about where he thinks the DevOps movement is headed and why DevOps is like a meme, see the video below.
Some key attributes of continuous delivery include:
- Improvement in product quality – Rapid releases of working software help in gathering user feedback early. Such early gains help improve the quality of the end product to a great degree.
- Risk mitigation – ‘Big-bang’ large deployments are much more susceptible to risk than short, incremental builds where each feature can be thoroughly tested during each release.
- Quick releases and tests of features – Any new feature can be released quickly to gain feedback by testing the responsiveness of the end user.
- Speedier resolution to problems – Each iteration focuses on eliminating problems identified during the evolution of the working software.
- Ideal for this competitive day and age – The time that it takes from taking a new idea from concept to market is of utmost importance in today’s competitive environment.