If You Have DevOps, Do You Need Agile?
Cliff Berg
Co-Founder and Managing Partner, Agile 2 Academy; Executive level Agile and DevOps advisor and consultant; Lead author of Agile 2: The Next Iteration of Agile
Today when I hear that someone wants an Agile coach, they almost always add that it is highly desirable that the person also know something about DevOps.
What’s really going on there? Do they really want DevOps? Is it that DevOps folks aren’t good coaches? Is it that Agile and DevOps need each other? Is it that Agile is becoming DevOps? What do people really need?
One must be careful when discussing this, because if you ask two different “Agilists” what “Agile” is, you will get two different answers. The same is true of DevOps. And people can get quite emotional about Agile, particularly with regard to Scrum’s place in Agile.
It also depends--it really does. For example, what works for a startup almost never works for a large organization that has a complex digital platform containing many multi-component products. It’s a different scale. Just today a reviewer of a book manuscript that I am also reviewing wrote,
“When I worked at a startup, a single team definitely did implement an entire business feature. Now that I’m at a large enterprise, I feel the pain of needing multiple distributed teams to collaborate to deliver a new business feature. Size of company and org structure has to do with this.”
The reality is that there is no such thing as “Agile”, in a definitive sense. The Agile Manifesto proclaims some “values” and “principles”, but the interpretation of these spans a very wide range. What we have is a community of people--“Agilists”--who collectively have a set of ideas. Some of those ideas work in some situations.
And then there is DevOps, which does not even have a manifesto. DevOps also is a collection of ideas, and some of them apply in certain situations, and others don’t.
The ideas that one tends to find within the Agile community generally focus on team issues, particularly the human side of things. There are also ideas about how to organize and manage multiple teams, but there are multiple divergent and irreconcilable viewpoints.
Also, many of the ideas of the Agile community are pretty extreme, and are often advocated in their most extreme form: “self organizing teams” is one such idea.
Although, if one presses someone who advocates self-organizing teams, it is eventually revealed that they don’t really mean fully self-organizing: They will exclaim in exasperation, “Well of course self organizing does not mean completely self organizing!”--as if you are stupid for taking the phrase at face value. Or they will try to explain that “self organizing” and “self managing” are two completely separate things--as if “organizing” means something obviously different from “managing”.
And all this ambiguous vocabulary is only about a single team--let alone a collection of teams!
In contrast, the DevOps community’s ideas are mostly about very tangible things: how to build and rapidly deploy and test software at scale. It’s about the nuts and bolts, although there are some concepts that are key, beautifully articulated by Gene Kim’s “Three Ways”.
If DevOps is about actually building and delivering software, then why not just go with that? Unfortunately software is built by people, and DevOps does not say much about human interaction within a team and how to organize many teams. So if we were all robots, then yes, we could just go with DevOps.
Could we just use Agile and not DevOps? No, because Agile, which had technical roots early on, left those behind, and became almost entirely a touchy-feely idea space, focused on things like “team happiness” and human collaboration. Those are important things, but they are not enough to build software. The Agile community’s answer to the nuts and bolts of building software is generally “Leave it to the team, to self organize and figure it out”.
So really we need both Agile and DevOps; except that some of Agile is - honestly - somewhat cockeyed. Extremists took over the Agile movement early on: witness, the first book about what became “Agile” was Extreme Programming Explained, by Kent Beck. Note the word “extreme”, and it is--I think--no coincidence that ideas with extremes had cachet in those days, which also saw the birth of “extreme sports”.
But while extreme sports might be fun, if you do not get injured, in software development extremes usually don’t work--not unless your situation is an extreme one. The Agile Manifesto, written two years after Beck’s seminal book, was intentionally not extreme: it expressed a set of values and principles that one could interpret thoughtfully and apply in a rational and contextual way.
So much for that: What then happened is that people tried to monetize Agile, and created methodologies and certification programs to make money, and blogs and books to become famous (I wrote one), and there is no better way to get attention than by going to an extreme. Pretty soon we saw people advocating things like “mobbing” in which a whole team codes together, and Agilists claiming that one should not look ahead any farther than the current two-week iteration.
Well, those ideas can work sometimes, but they usually don’t. They have their place, but that place is not everywhere, for every team, all the time.
So Agile needs to be revisited. But I don’t think we should chuck it. Instead, we should view the pool of Agile ideas as just that--a set of ideas. Consider each one, along with other ideas, such as those provided by people like Peter Drucker, W E Deming, Eliyahu Goldratt, Kelly Johnson, Susan Cain, Cal Newport, Daniel Pink, behaviorists such as Prochaska and DiClemente, and countless others, as well as the methods of some of today’s successful tech entrepreneurs such as Elon Musk and Jeff Bezos--the latter who famously rejects some of today’s popular methods yet is highly successful in his endeavors.
We need to think for ourselves. Never adopt a methodology. Never put a label on what you are doing. Everything is contextual. But we still need ideas, to enable us to think through our situation and decide what to do.
DevOps & Agile Engineering Senior Leader
4 年I think the question (and answer) would be a whole lot simpler if we stopped using the the single word 'Agile" as if it were a noun and went back to saying it correctly: Agile *Development* - when the manifesto first came out it was "Agile Software Development" -- and as it has been successfully applied to more than just software, we can drop that part, but it's still Agile *Development*! Without the *Development* -- the technical practices keep getting left out and just "Agile" apparently means just Agile (Project) Management (which is still not accurate, even it it means only Scrum+Kanban). I used to keep correcting folks that said just "Agile" (especially if it was in all caps, like an acronym). Sometime after 2010 I just stopped. It was too late - one word "Agile" (as a noun) had won! But as youve pointed out, it is clearly wrong. And the question is not one of Agile vs (or without) DevOps, but there there is no "Agile" (as a noun) without the *Development* part (ain't no "DevOps" without *Development* either). So maybe everyone just stop saying "Agile" as a one word abbreviation for a proper-noun. There is no "Agile" without Development" (without the noun that it modifies, the "Agile" adjective has no meaning! You can talk about "Agile Development" in general, or even "Agile Testing", 'Agile [Project] Management". "Agle Leadership", "Agile Architecture", or even "Agile CM" (which, in many, if not most ways, is how DevOps came about, as the convergence of Agile (Sw+Infra) CM (thanks to virtualization, SaaS, and configuration-as-code).
Experienced Scrum and Coaching Agilist
4 年Darin Buck
Transformational thought leader who successfully helps organizations solve business problems thru lean-agile mindset.
4 年I remember in my early days as a coach, teaching agile values and principles, and thinking "we can't accomplish these without better technical practices". I won't reiterate the principles, but it seems that to accomplish principles 1, 3, 7, and 9 you need something like DevOps, and to a lesser extent principles 2, 4, 5 and 8 also. Depending how wide you cast your net in defining "agile", there are some very good agile practices that can solve problems, especially in the product and project management domains. So in response to "Do we need Agile and/or DevOps?", I'd say "It Depends"... there, all cleared up!
Agile Coach // Scrum Master ??People ?Products ?Delivery
4 年If we all had focused more on Agile Principles 1 3 5 7 9 we wouldt need DevOps, it would a natural practise/capability
Innovation Coach
4 年Very thoughtful post, I’m going back to the agile manifesto and from that thought space, adopting practices that work to solve the problems we face