Adam Smith's pin factory: 10 workers make 48,000 pins per
day. A single worker could "scarce" produce 10 or 20. So we
have a productivity increase of 50x.
In any case, we seem to be reversing this process
with Agile / Lean / DevOps.
Why? What does it mean?
A clue: There was always someone who organized the
factory, who, in the first place, decided to make pins: the
entrepreneur.
Entrepreneur: one who is alert to opportunities for
improving the way things are currently done.
The extreme division of labor during much of
the 20th century was a temporary thing.
Workers were discouraged from thinking about the
overall production process.
"Keep your head down and do your own job."
Humans were, in essence, turned into machines on the
assembly line.
Marx: the worker is alienated from his product.
Smith:
"In the progress of the division of labour, the employment
of the far greater part of those who live by labour, that
is, of the great body of people, comes to be confined to a
few very simple operations, frequently to one or two. But
the understandings of the greater part of men are
necessarily formed by their ordinary employments. The man
whose whole life is spent in performing a few simple
operations...
has no occasion to exert his understanding...
He naturally loses, therefore, the habit of such exertion,
and generally becomes as stupid and ignorant as it is
possible to become for a human creature to become."
The lure of central planning.
A form of "central planning" prevailed: a few expert
engineers/managers were the only ones who were supposed to
think about the entire process and product.
Taylorism:
"Taylorism was based on trying to replace the implicit
knowledge of the workmen with mass production methods
developed, planned, monitored, and controlled by managers.
'Under scientific management,' [Taylor] wrote, 'the
managers assume... the burden of gathering together all the
traditional knowledge which in the past has been possessed
by the workmen and then of classifying, tabulating, and
reducing this knowledge to rules, laws, formulae... Thus
all of the planning which under the old system was done by
the workmen, must of necessity under the new system be done
by management in accordance with the laws of science.' --
Jerry Muller, The Tyranny of Metrics, pp.32-33.
General Motors: "The managerial 'superstructure which
organizes and directs production... draws all possible
brainpower away from the shop; everything is centered in
the planning and schedule and design departments.'" --
Daniel Bell, quoted in Muller, p. 33
The waterfall model was an attempt to duplicate this
condition for software development: everything was centered
on the analysts: the coders just had to turn it into COBOL!
A problem with central planning:
F. A. Hayek's "Use of Knowledge in Society":
each person is an "expert" on their own particular
circumstances of time and place.
DevOps practices are a
different way of working, based
on the different demands of the 21st
century.
DevOps represents a reincarnation of "craft work."
A reincarnation, because it is craft work with a
new layer of automation available.
The expert craftsperson understands the roles of
the other experts with whom they interact.
"Get all workers deeply involved in analyzing
feedback from the market and rapidly figuring out how
to act on that feedback." -- Mary Poppendieck
Software-controlled machines can take the place of "human
machines."
People re-take their rightful place: rational animals.
Every employee acts as an entrepreneur.
What is the role of the "DevOps toolchain" in this
new way of working?
The mechanical, repetitive tasks the assembly-line worker
performed in the 20th century must be automated! (And
automation is documentation!)
Testers cannot test successfully
unless they are part of the
production process from day one: thus, continuous
testing.
Operations cannot successfully deploy constantly evolving
products unless deployment itself becomes a software
product capable of swiftly evolving:
thus, software as infrastructure.
The "business" stakeholders in the product can't ensure
it is meeting business needs unless they
are continually engaged: thus
continual interaction between the engineers and the
"business people."
Why is "business" in scare quotes above?
"We are not developing software. We are doing something
larger and software is just part of the solution." -- Tom
Poppendieck
How new versions of a piece of software impact the end
users cannot be determined without continual feedback
from those users, thus:
Incremental development, which means
developers work on small batches and can easily change
course based on feedback;
Continuous deployment, allowing users to
comment on the work done in those small batches;
and
Continuous monitoring, so that problems using the
product become known right away.
How can we balance the need for
specialists with the DevOps demand to "break down silos"?
An agile enterprise needs to hire people with broad
understanding of various technologies and
how they forward the goals of the enterprise.
To a great extent, the need for specialization, and thus
the division of labor, has been pushed into the
software.
Nevertheless, we still are coping with extremely complex
technologies, and we will need people who understand them
in great depth!
So we need people with:
a) a specialty; but who are also
b) entrepreneurs.
A story of the need for "generalizing specialists":
adding exchanges to a price feed.