If I'm involved in a task and it's not completed yet, then people may want to talk to me about it or ask questions.
Eventually it's done, and there is less reason for people to need my attention on that topic.
So, the more work I have in progress and incomplete, the more reasons people have to talk to me.
When I have a lot of work in flight, and I'm trying to work on something else, then all those conversations will be felt as interruptions in the work I'm doing now.
Someone may occasionally want to talk to me about the design of something long-finished. If I did that work, they'll probably want some help understanding it so that they can repeat or enhance it.
This forms an interesting "law" or "rule" of work.
The more things that are going to be started soon, and the more things in flight at once, the more I'm going to be interrupted.
So if we suffer greatly from interruptions, it is because there are too many reasons to be interrupted. If we did only one thing at a time and worked each to completion then there'd be very few reasons to interrupt the current work.
Every work item that has my name attached to it is an *invitation* to interruption.
The likelihood of interruptions is proportionate to my WIP load.
And there is one more knock-on effect: if everyone else is working on the same topic, then there is only work talk, no interruption.
When we're all loaded up with in-flight work that has dependencies and interactions, like features in the same code base, then interruptions are natural and unavoidable.
Disturbingly, if we all have a lot of work in progress, and a lot of our work is dependent or interactive (like features in a single codebase) then we've built a system that runs on interruption and distraction, squeezing out concentration and focus.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
So here's what I wanted to think on today: Continuous Improvement.
It has two features to consider:
* It's about making improvements
* It's continouous
Let's take the 'continuous' bit first:
* You're not in it for a burst or for a while, you're in for good.
* Nobody has completed their continuous improvement program. Ever.
* It's not "hopping from rock to rock" - improvements sustain and accumulate.
If you "improve" by expending greater physical effort and endurance, you can't do continuous improvement. Working harder isn't an improvement at all.
You have to sustain if you're to be continuous. Lower the level of effort necessary to succeed, don't brute force it.
So a given web application has an architecture which involves a UI and an API and under that some domain objects, data, etc.
When a new feature comes up, there is a gherkin test that does NOT go through selenium, but directly to the API. In developing the gherkin test, the team drives out the changes needed by the API and gets it working.
The gherkin test is a "story test" and checks to see if the system (behind the UI) works correctly. It does data, persistence, etc in a safe way.
See what methods the primitive type has which are not appropriate for the domain of variablename. What does type do that variable shouldn't?
string CustomerId;
What does string do that a customer ID shouldn't?
It can be
* passed as a time zone.
* upper/lower cased.
* concatenated to/with other strings
* passed as a filename to open()
* centered in a field of spaces
* used as a format in a print statement
* searched
int typeCode;
It can be:
* operated upon bitwise
* used as a port number
* treated as a boolean
* multiplied/divided/added/subtracted
* overflow/underflow
* passed to so many functions!!!
Q: Why say "ensemble"? Just use the proper name "Mob Programming!" Is this just PC run amok?
A: I needed a term to encompass Pair Programming, Mob Programming, and Swarming. That it's inoffensive is a very nice and welcome bonus (worth it).
You know, people snigger when I say "pairing" as shorthand for pair-programming. It suggests sexual behaviors.
People also flinch when I say 'mobbing' because it is a term for grouping up to bully people in schools and workplaces.
"Grooming" is another - suggesting pedophilia.
We deal with words as they are used and try to not draw connotations we don't mean. That's just being clear.
"Ensemble" is a good category term. The other, better, term is "teamwork" but people have coopted that to mean all kinds of "working near but not together."
Just read a story about a new COO who started their first day on the job by cleaning the kitchen.
They drew a line saying that " spread the word that the next person I caught leaving a mess for their fellow employees to clean up would be shown the door."
Leaving a mess for their colleagues to clean up?
Sounds like Business As Usual in a lot of corporate software groups.
"If I don't do a good job, then that's okay. I can close the ticket and someone else will fix it."
Because, sadly, in many shops "getting things done" is "closing tickets."
"Look how much we did! We closed 20 tickets!"
"What can we demo today?"
"Well, nothing. It doesn't work yet and we can't deliver, but 20 tickets!"
"That's fine, then. Next sprint, we want 30 tickets."