It seems it's that time again to clear up some misconceptions about DevOps. A thread.
DevOps means Development Operations. If your team isn't doing both, development and operations of the same product/project, it's not DevOps.
DevOps is not about tools but about mindset. Using Docker, Kubernetes, Helm Charts, Packer, Terraform, etc, does not make you DevOps. Having the same team performing development and operations does.
If you have a Dev team, a DevOps team, and an Ops team, for the same product/project, your DevOps team is *definitely* not a DevOps team. If this is your setup, you've done the *opposite* of what DevOps means.
Using something that has "DevOps" in its name does not make your team a DevOps team. Your team uses Microsoft Azure DevOps? If it's not performing development and operations, it's not a DevOps team! No matter what they use. (And don't use Azure!)
If you have a team that uses "DevOps tools" like Docker, Kubernetes, Helm Charts, Packer, Terraform, but is doing this for other team's products/projects, that's again not DevOps: It's not development and operations in the same team.
DevOps is part of proper Extreme Programming. It directly relates to the XP practices Whole Team and Continuous Integration.
DevOps is also "hidden in plain sight" in Scrum. Scrum talks of a cross-functional team. Operations is a function. If you include it in your team, your team is more cross-functional.
Not all teams need DevOps. For example, if you're making a product that's used by somebody else, you're perfectly fine without. It may still be worth looking into it, there may be some tools and practices that could still be useful for you.
DevOps needn't be complicated. Deploying to prod at the end of your CI/CD script, after running all the tests, using
could be perfectly sufficient for your team/context.
Simplicity. Travel light-weight.
Don't believe the management hypes. Major DevOps environments like Microsoft Azure DevOps are fundamentally flawed and need lots of workarounds to operate reliably (for example, their bash shells do not set errexit and pipefail by default).
And again, DevOps isn't for everyone. DevOps can significantly reduce the lead time from dev to prod. DevOps can increase the adaptation from feedback and thus, if done well, in some contexts even eliminate the need for support teams. But that depends on you and your context.
If you want to hear other people's opinions about this, check out @allenholub for example.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Agile is much more about reducing lead time, defects, and all kinds of wastes by empiricism (feedback; transparency, inspection, adaptation) on all various scales of time (from seconds to months) than any particular method or framework.
Your practices, methods, and frameworks should be aligned with this: Check where you are, decide where you want to be, go a small step in that direction, look at how that worked, and repeat. Establish that cycle on various time scales.
On the cycle of seconds, we can use editor-based static code analysis, pair programming, and ensemble programming, to get instant feedback on code while code is written.
Scrum is all about empiricism. Empiricism is good. Empiricism is usually not the problem. In fact, Scrum can even increase the problem.
So you know you have a problem. You can't react to change fast enough. Empiricism isn't helpful: it will only tell you what you already know: that you can't react to change fast enough.
Are you ready for a little thread on a few aspects of software (re-)design, sparkled with inspirational quotes around the topic?
Let's go!
"Life is really simple, but we insist on making it complicated."
― Confucius
When we get the chance for a (rewrite or re-)design, there is a temptation that we should resist, from a technical perspective as well as from a business perspective. That temptation is to equate "better" with "more". And that's wrong.
The fundamental vim ideas:
• Commands come in sequences. Having a command mode allows commands with fewer keystrokes and fewer modifier keys to make you more efficient. Also, move away less from the touch typing homerow.
• Commands are mnemonic. For example, z for folding...
...z looks like a sheet of paper when folded.
Why hjkl? Touch typing homerow. Of that, h is left, l is right. The shape j goes down, k goes up. I don't remember specifically what hjkl do, I just remember that the whole editor is mnemonic. That way I remember more with less.
• Repetition. All normal commands can be combined with ranges and counts.