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.
On the cycle of minutes, we can use test-driven development to get quick feedback on behavior on a fine-grained level and on certain aspects of structure like how testable (synonym for decoupled) is.
On the cycle of hours, we can run acceptance tests and rotate people between pairs and ensembles.
On the cycle of days, we can run a DSM to see where we are and where we want to go as a team in our daily work.
On the cycle of weeks, we can have a review and a planning meeting to make transparent, inspect, and adapt about if we're delivering the value needed by the business, and retrospect if we're doing that in the right way.
On the cycle of months, we can have a check with marketing to have feature release plans on a bigger scale and empower our business to make more informed strategic decisions.
The described cycles are, by the way, called "Extreme Programming" (there's a bit more to XP as well, of course). But that doesn't matter. This is just an example, and there are other ways.
XP may not fit everyone, you may have to tweak it for your situation. Startups often need a much more direct connection with the market, for example. The key is to integrate empiricism in your process on various levels of scale.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
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.
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.