I wish that literary was mine, but this one belongs to Martin Fowler. He used this phrase in his keynote at the Agile 2018 conference to describe the large monetary system that has been built around agile since 2001. You can read the full transcript here.
Most software practitioners experience the agile industrial complex in the form of Less, DaD, SAFe, and certifying bodies. The complex takes waterfall process and organizational structure and renames everything. There is no real change in process or teams.
I don’t have a lot of experience working in that type of environment, but I know it exists. I do have experience working in the exact opposite though. So, what does it look when I work outside of the complex?
One project I worked on had a team of 10 developers, another team of 4 developers, and one other team of 2 developers. Each of these teams had a couple of test specialists, too. We had two product people for all of the development staff. They would give us a list of changes that belong in a sprint, but after that it was up to the development team to figure out the dependency chains, work streams, and generally prioritize the sprint.
Each development pair would pick up a change, and work it till it was done. Done meaning ready to go to production, not some contrived definition that includes half a dozen hand-offs between roles and reviewers. Every once in a while, we would get a change request that didn’t make sense or that turned out to be much more complicated than we originally thought.
This wasn’t a free for all, we had an organizational structure. But, guess what, our leads understood software development, and while management has been out of the details for a while, they too understood development. We also had a structure for making decisions, but it was adaptable. Feature changes should be done in a couple of days max, spikes should last a day or two max, and you don’t start a new change until your current PR is approved. Our decision frame was light weight, adaptable, and built in our own language.
The important thing to note here is that there is no decision making framework, and there is no way to defer responsibility. We don’t have a ‘framework’ (SAFe for example), to act as a father. When there is a technical decision to be made — how long to spend on research, how to test something and how long to spend on that task, how deep to go into a refactor — someone on the technical staff makes those decisions. This works because the development staff are skilled, care about improvement, and want responsibility for their work.
One of the easiest ways I can identify BS agile is separation of roles, and software decisions being made by people that don’t have the technical skill to make software (ironically, the best place to see examples of this is at agile conferences). The agile industrial complex strips power and responsibility from the development staff and sells it off to people that don’t want to change the way they work.