By Mark Beets, GM: Business Development at Entelect Software
DevOps has in principle been around for decades. In the early 1980’s DevOps was a rudimentary end-to-end process; starting with punching holes into cards (representations of code and data), quality assuring their correctness, followed by physically transporting the cards to be fed into an IBM mainframe. All the while ensuring that nothing fell out or were blown away, thus breaking the programme and causing delays in delivery.
The overall impact was potentially less than today’s demand for accuracy and expediency, however the interactions and flow of people, processes and systems were just as important as today.
The combination and intra-workings of the development process and the dependency on operational components forms the basis for the logical grouping of these functions into one- DevOps.
The basic principles of software delivery haven’t changed dramatically over the past few years: analyse, code, test and deploy. However, there has been a tremendous maturity seen in the supporting process and tools. This is most prevalent in the more modern and controlled software development environments that have shortened release cycles from weeks to hours, without compromising on the same quality delivery – all due to a high level of DevOps automation.
DevOps tools have also subsequently gained focus by being further developed to accompany and enhance the preferred development-methodologies. Including tasks such as automated Quality Assurance (QA) processes, measuring code coverage and also performing code-compilation tasks, issue tracking and the final deployment and configuration of compiled systems are now the standard.
Efficiently grouping all these requirements together, while also coordinating the project’s tasks was traditionally the responsibility of the Development Managers, but we have seen the empowerment of the development teams to accomplish the same or similar outcomes. Reporting metrics; including backlog, delivery rate, and the related costs to the Chief Information Officers has also been made easier.
Once it is understood that every software team has some form of DevOps, many with varying levels of maturity or slants in implementation, the next step is to understand the overriding objective: to make your software delivery lifecycle (or preferably an iterative cycle) and the operational requirements as efficient and painless as possible.
In our experience, clients frequently ask how quickly they can get what they want, and depend on your rapid response to change while you’re balancing development scope, time to implement and the cost, as efficiently as possible. The software development industry has been forced to embrace the creation of internal facilities to allow for this rapid change to inevitably deal with scope-creep or scope-change.
The underpinning of your DevOps, and the capabilities of your staff, will facilitate change without the need for embarking on another complete analysis-phase. We are finding that there is a trend of pushing the develop-to-specification (traditionally a binding contract, accurate to the last full-stop) to the side-lines. Emerging businesses need to be in an entrepreneurial position to hastily evolve and change according to market related direction and pressures. As such, so do the companies supporting the development of their software projects.
This change-management complexity exists in every operations hub within software companies worldwide. The industries’ reaction is to consider and implement Agile, Scrum or Kanban methodologies to structure the flow of design principles, manage issue (defect) and change tracking, and efficiently allow the flow into release management, which ultimately results in a solid product or valuable service to a client.
Principles of Continuous Integration and Continuous Build have become an integral part of modern DevOps. If you’re not currently doing these, you’re behind the curve of collaborative development and likely diminishing your production quality by increasing technical debt, substituting automated operations for man-power and increasing costs unnecessarily.