I recently spotted a five-year-old blog post by Mike Gualtieri of Forrester, where he suggests firing your quality assurance (QA) team to improve your quality. He got the idea from a client who actually tried and succeeded with this counterintuitive move.
The thinking goes that without a QA team to cover for them, developers are more likely to take care of quality properly — or risk getting the dreaded Sunday morning wakeup call to fix something.
Gualtieri’s post generated modest buzz at the time, but since 2011 the world has changed. DevOps has turned a corner, representing an end-to-end rethink of how organizations handle the entire software development lifecycle.
Now that 2016 has finally arrived, it’s time to take a fresh look at the question. But why stop with QA? Now that we have DevOps – and digital transformation more broadly – whom else can we fire?
Pros and Cons: Firing Your QA Team
If developers’ butts are on the line, they are more likely to be careful to properly test their own code before deploying it. Furthermore, if you have already been doing test-first development (where developers write the tests), then a separate QA team makes less and less sense as you move to a continuous delivery DevOps culture.
However, for those development shops that still have traditional organizational silos with the commensurate throw-it-over-the-wall thinking, simply crossing an entire silo off the org chart without making any other changes will inevitably cause turmoil.
Waterfall projects have enough problems with quality as it is without squeezing the QA effort further, after all. Better to transition gradually from waterfall to test-first Agile to the fully automated testing that DevOps efforts expect.
Pros and Cons: Firing Your Ops Team
If DevOps empowers us to fire our QA team, then who else can we fire? What about our operations team?
In a DevOps world, after all, ops should be fully automated, where developers (who now have newfangled titles like ‘DevOps engineers’) manage immutable, idempotent infrastructure – without touching any of it directly.
Not that DevOps shops should ever talk about actually firing anyone, least of all the ops folks. Instead we reinvent their roles, where they deal more with scripts and recipes and manifests instead of servers and networks and software infrastructure. Regardless, one way or another, nobody ends up retaining a traditional ops role.
However, this ‘DevOps-rules-the-world’ perspective may work for some web scale companies perhaps, but traditional enterprises have plenty of technology that developers don’t generally monkey with.
What about all that legacy, COTS, and other not-invented-here tech? Someone has to manage all that gear – and that noble task still falls to traditional ops personnel.
Transforming traditional IT to the extent that we no longer need anyone in a traditional ops role may still be out of reach for most enterprises, but "traditional" ops is unquestionably becoming an increasingly minor part of the overall IT operations picture.
Furthermore, as companies proceed with their digital transformation efforts, performance management increasingly becomes the responsibility of business stakeholders, and the application performance management market – now rapidly becoming digital performance management – is reflecting this shift.
In spite of this shift, we can’t expect line-of-business (LOB) stakeholders to manage hypervisor configurations or cloud autoscaling parameters or the like. Just because digital transformation slices across the organization horizontally doesn’t mean that we no longer need individuals with specialized skills. Instead, such transformation requires a rethink of how we organize such individuals.
Pros and Cons: Firing Your Developers
Even in today’s fast-paced, turbulent digital business environment, asking whether or not enterprises need developers at all is an intriguing question. After all, the low-code, declarative model for assembling software is rapidly maturing (especially for mobile apps), and LOB personnel are building increasingly sophisticated business applications using such technology.
The low-code approach has many advantages over traditional coding: it’s more business-focused, more iterative, lighter weight, and supports the business agility needs of the organization better than traditionally coded apps.
Of course, even in a low-code, drag-and-drop world, someone has to write the underlying software. But there’s no reason an enterprise development team should handle this heavy lifting. Instead, vendors should be responsible for building such ‘agility platforms.’
On the other hand, as enterprises become software-driven organizations, developers – real, hands-on coders – become more important, not less. While low-code tooling can serve an important role, enterprises that rely upon software for their market differentiation are unlikely to do away with their development teams.
For organizations adopting DevOps, furthermore, the newly transformed role of a ‘DevOps engineer’ is first and foremost a developer. The last thing we want to do is fire these folks!
Pros and Cons: Firing the Entire IT Organization
Enterprises have been outsourcing huge swaths of their IT organizations for years, of course. But that’s not really the question here. After all, if you’re working in IT and your company outsources the whole shebang, that rarely means you’re out of a job. It’s more likely that your job mostly stays the same, but you simply start getting paychecks from a new company.
The more provocative question, of course, is whether an enterprise can get rid of its IT organization altogether. With all this talk about bimodal IT – where LOBs drive fast, digital efforts, leaving the old guard IT to keep doing things the old, slow way – perhaps the solution is simply to get rid of slow IT completely.
After all, shadow IT is only shadow if there’s regular, non-shadow IT to compare it to. What if all we had was shadow IT? Could that ever be enough?
As enterprises gradually replace their dinosaur enterprise apps with cloud-centric, modern apps, there should come a time that the entire enterprise can run on a combination of such enterprise cloud apps and LOB-written apps using low-code tooling.
Sounds appealing — but I don’t think the big banks or insurance companies or manufacturers or any other large enterprise will be chucking their entire IT organizations, outsourced or not. In today’s enterprise environment, getting rid of IT is an unrealistic goal.
Instead, the challenge is to transform IT to support business at velocity, which means focusing on security, governance, maintaining access to systems of record – but not in traditional, slow ways that provide roadblocks to digital success.
Such change won’t happen, however, unless companies also transform their organizations – starting with the hierarchical org chart. From the customer to the systems of record, new organizational patterns must slice across existing silos.
The Intellyx Take
The end result: we don’t have to fire anybody. Instead, we’re are recommending an end-to-end rework of traditional hierarchical management thinking. After all, the entire premise of this article — fire QA to make quality better, then rinse and repeat – is more about getting rid of a hierarchically organized QA team structure than eliminating the QA people themselves.
Replace the traditional hierarchical organizational structure with a self-organizing, horizontal organizational structure — thus eliminating externally organized teams and the hierarchical management thinking that leads to them.
Eliminating our siloed QA team improves software quality. Eliminating siloed dev and ops leads to DevOps, which improves software deployment and drives software at velocity.
Eliminating a rigidly defined IT organization, it stands to reason, not only solves the bimodal problem — it is also the key to becoming a software-driven enterprise.
Image credit: The US Army.