Embedded Specialization and the Rise of the “Full Stack” Engineer
In many ways, the entrenching of QA into the product team in Agile methodologies parallels the need to implant operations within the development team in DevOps. In the waterfall approach, many organizations were divided into discrete development and QA teams.
The QA and Development teams were also often driven by competing goals with the QA team focused on the quality of software and the development team focused on the speed of delivery of features. This division is not unlike the organizational division of development and operations. In these organizations, development and operations were also driven by discrete goals with operations focused on constancy while development focuses on feature velocity.
As Agile developed and matured it became increasingly evident that QA had to be engaged throughout the entire development process. Beyond that, a quality needed to be part of everyone’s job. In order to avoid lengthy hand-offs and separate QA cycles, Agile integrated QA into the team. Similarly, we are now seeing a movement within DevOps to engage the operations team or, operational thinking, throughout the entire development lifecycle.
DevOps as an Extension of Agile
In many ways, DevOps can be seen as an extension of Agile and even a natural development of Agile. In a waterfall, there is a clear hand-off (it is obligatory by the process). Agile, as a continuous procedure, requires a new approach and DevOps helps with the implementation of this approach.
In order to do small batch releases central to Lean and Agile best practices, you need to find a way to reduce handoffs and make releasing to production seamlessly and easy. Out of this need naturally, flow many of the DevOps practices.
The concept of the full stack engineer popularized in DevOps is a natural answer to this need. To reduce handoffs engineers must be conscious of all portions of the system so that any member of the team can understand and integrate QA, security, and operational requirements without handing off to other teams. Similarly, cross-functional teams must become the norm so that small, self-contained team can deliver fully functional products without additional hand-offs to operations teams. Agile was around long before DevOps and there are positively Agile teams that do not follow many of the DevOps practices.
As Noah Cantor states,
“You can do Agile accomplishes and DevOps without each other”.
What you can’t do is employ Agile principles, or DevOps principles, as they are too similar to distinct.” It is not that they are intimate only that Agile is a natural predecessor and motivating influence for DevOps.
Lean has always been a core of DevOps and just as Agile grew out of Lean, so did DevOps, so it should not be a wonder that these two have a significant amount in common.
In the 2016 State of DevOps, the authors state, “When you smear lean management applies to technology — restraining work in process (WIP); introducing visual displays to monitor quality, productivity and WIP; and using checking data to help inform decisions — you get outcomes.
The culture becomes more generative and performance-concerned with; people experience less stress in the workplace and IT performance improves.” DevOps takes the concepts recognized in Agile and extends them beyond code organization. DevOps takes these ideas and put on them to the management of applications and services. By leveraging the principles of Agile, DevOps amplifies them increasing the benefits already known by organizations using Agile.