People often treat standardization as a self-evident good.
They want everyone to do everything the same way so it will be standard.
A short thread is in order here.
They want everyone to do everything the same way so it will be standard.
A short thread is in order here.
The primary reason we standardize things is for interoperability.
If we're not going to interoperate, then there's no point in standardizing.
If we ARE going to interoperate, then we need standard *interfaces* not standard everything.
If we're not going to interoperate, then there's no point in standardizing.
If we ARE going to interoperate, then we need standard *interfaces* not standard everything.
This suggests that we don't need everyone on every team to work the same way, or for teams to operate (internally) the same way other teams interoperate.
There is another concept, though: standard work.
Standard work in manufacturing is to ensure that everyone does the work the same way every time, consistently, as a basis for improving the work incrementally.
Fine if you're turning out N identical widgets per day, right?
Standard work in manufacturing is to ensure that everyone does the work the same way every time, consistently, as a basis for improving the work incrementally.
Fine if you're turning out N identical widgets per day, right?
Standard Work is constantly being updated and improved. THAT is the reason for standard work.
Whatever you do right now is your standard work.
Whatever you do right now is your standard work.
Your input and your output vary constantly. They're never the same from job-to-job. What looks like "just add a button" to someone who isn't doing the work seems pretty standard, and you'll build it from standard components (ah, that interoperability thing), but it's unique.
If it already existed, you would not have to write it.
Once it exists, you will never write it again.
So if the input and output are constantly varied, what is "standard work" for you?
Once it exists, you will never write it again.
So if the input and output are constantly varied, what is "standard work" for you?
It seems that "standard work" can only apply to the habits (and micro-habits) you apply to doing your work every day, since it doesn't apply to the inputs and outputs.
How crucial is it that every person has an identical approach and set of habits? Should they be the same across teams doing different kind of work, in different stacks, for different clients? Or is that a place for only interface standardization (so teams can work together)?
Maybe there are habits we can share; approaches like TDD or DbC, version control behaviors (CI), or release behaviors (CD vs Big Bang).
But teams do different work, and may need different habits.
We shouldn't assume that standardizing all work identically is a good idea.
But teams do different work, and may need different habits.
We shouldn't assume that standardizing all work identically is a good idea.
There is no way to standardize humans and it's not even a good idea to try. People bring themselves to the work (it's 11/12ths thinking, you know) and diversity results in better decisions and fewer defects.
Maybe next time you talk about standardizing anything, you'll think about which kinds of standardization you mean, which you really need, and where you should grow diversity instead of standardizing.
Maybe.
It's a choice.
Maybe.
It's a choice.