One of the most effective approaches to DevOps involves moving the automation of the application build, package, and deployment upstream to the beginning stages of the software development lifecycle—an industry best practice long before DevOps became as popular as it is today.
DevOps is getting a lot of attention these days as the benefits of improving communication and collaboration between development and operations is becoming readily apparent. The need for DevOps is especially obvious in the wake of software and systems glitches that have impacted major financial services, including large banks, trading firms, and the trading exchanges themselves. The healthcare.gov website is the latest high-profile software system that failed to meet its goals, due in part to problems related to software and systems reliability. These problems lead us to wonder if the technology industry is really capable of creating reliable enterprise software. Software developers, by and large, are very smart and highly skilled technology professionals. Equally skilled are the operations experts who establish the IT controls necessary to ensure that large-scale systems are available continuously, scaling them to meet the capacity demands required during peak usage. Both development and operations teams bring much expertise to the table, but they have fundamentally different perspectives. Developers are expected to write code that implements new features, while operations is charged with seeing that systems maintain a high degree of reliability even under heavy system load. In addition, there are actually many other key stakeholders, without whom we could never create robust enterprise-wide software systems.
Technology organizations consist of a wide array of professionals, from business analysts to QA and testing professionals, each of whom is essential to the successful development of complex software systems. Coordinating their work is no easy task, and most organizations employ a number of full-time project managers who track and report on the work being accomplished by each member of the team. But managing the development of large-scale software systems involves a lot more than just creating Gantt charts and resource reports.
Developing large-scale software systems requires the coordination of hundreds (or even thousands) of tasks, each with its own set of dependencies that are rarely completely understood up front. Helping the entire team understand what needs to be done is what application lifecycle management (ALM) is all about. With many organizations embracing the enhanced productivity and quality that comes from employing agile principles, the agile ALM is becoming an essential software methodology. It turns out that agile ALM benefits greatly from the very same principles behind the DevOps revolution.
Enhancing collaboration between development and operations works because each group brings a set of complementary skills to the table that, when integrated, enhances both productivity and quality. Developers know the technology they have been creating better than anyone else. They should; most developers have months to get up to speed and focus on changing technologies and software development frameworks. Developers often get to choose which technologies to use in creating systems and then focus on building their expertise on a daily basis. Operations professionals need this information in order to be successful. The operations team understands what happens when a critical system is unavailable for any period time. One of the most effective approaches to DevOps involves moving the automation of the application build, package, and deployment upstream to the beginning stages of the software development lifecycle—an industry best practice long before DevOps became as popular as it is today.