
Going Agile
By RAR
It
seems to me that when we experience big changes in our broad, shared experience
with the world, it is usually the result of tribal tinkering. Somebody will come
up with an idea and develop it until others see the value in it, and they adopt
whatever behaviors are associated with the big idea, and because people have the
following characteristics of sheep, you get adherence to the popular behavior
until it becomes a group norm. Outside of behaviors that are reactions to
natural disasters, there is very little else that shapes our experience with
life other than the reverberations we feel from the machinations of our fellow
man.
In the tribal world of software development,
the biggest reverberator in the lives of most of its groups is “agile
development”. It is the most logically conceived idea that you will ever
encounter, and the most difficult for anybody to explain. That grey
foggy area of understanding is like a John Carpenter phenomenon,
populated by autonomous knifing pirates who are having devastating
impacts on certain segments of the workplace jungle.
The idea of agile development came into
existence in the 1980s within the DuPont Corporation, but it was
formalized in the software industry in 2001 when a group of industry
figures gathered at a resort in Utah to draft the Manifesto for Agile
Software Development. That created some pillars on which the agile
process would stand:
• Individuals and interactions over
Processes and tools
• Working software over Comprehensive documentation
• Customer collaboration over Contract negotiation
• Responding to change over Following a plan
In practice, agile development is a process
in which the aspects of a development project are divided among
semi-autonomous development teams. Every piece of software consists of a
range of functions, and developing those individual functions is
assigned to individual teams. Led by a Scrum Master, the teams set
short-term development objectives, with 3-week long sprints focused on
developing their assigned function to the next milestone point. Teams
meet daily (separately) to discuss progress and share ideas, and at the
end of the sprint period they may release a new version of the
still-in-development function into the still-developing software
product.
While Team A is working on their part of the
software, Teams B through Z are going through the same cycle of sprints
to develop those parts of the application for which they are
responsible.
As there is a significant interdependence among these teams, a bridge is
needed to manage cross-functional communications.
In an Agile environment, cross-functional
communications is largely done through program managers and ascending
layers of middle management, but for the development team members,
communications are largely managed through the use of tools like Rally.
Rally is a project management software that
users update constantly to report on the status of various aspects of
application development. It gathers together “User Stories” that define
situations encountered in testing the application as written. The User
Stories define how the software product should be modified or further
developed to achieve the desired user experience. Rally provides
schedule information for each aspect of application development, along
with status reports designed to communicate how well things are going
for each aspect of the project.
Communication is always the problem link in
any organization, and what you will often hear from workers at the agile
team level is that they don’t necessarily know what the other teams are
doing.
For one thing, the Rally reports – which are
daily snapshots of project status - often contain inaccuracies.
Looking back up at those four pillars undergirding the Agile Manifesto,
one may recognize a subtext underlying the whole concept, most obvious
of which is that agile development creates a competitive environment. It
pits teams against one another, not in terms of what they are producing
but rather in the way in which they are doing it. Teams that are
struggling to meet their sprint marks are not likely to advertise this
to the broader team. It is easier to apologize later, when you move your
User Stories to the next sprint, to be resolved in that next three-week
period. And unresolved User Stories may live on in this way from one
quarter to the next.
Sometimes teams see no benefit in falling
off the development schedule to wait for some lagging unit, and so they
release their work even while teams with inter-dependencies are unable
to release as scheduled. In big organizations, where there are a lot of
agile development teams, you tend to get a lot of privately-held
management tools designed to provide a real-world assessment of project
status. You get people capturing the reality of where they are at in the
development process through informal documentation, often in Excel or
PowerPoint. Developers pull information out of Rally to create tools
that better represent the truth of what they are dealing with, but
mostly for their own use.
Software companies were early adapters of
agile development, but with the advent of cloud technology the number of
companies engaged in software development has skyrocketed. You get
companies who are not known as software developers doing software
development, and to support the needs of those latecomers there is an
industry in agile consulting, which is a big feature offered by the Big
Four consulting firms. Firms like Deloitte will bring in a team of agile
consultants to help the company’s nascent development teams get
organized into agile groups, and then they will mentor the whole team
through the agile process.
Agile development has largely replaced the
earlier “Waterfall” style of development, which put product creation
under one team that shared resources and didn’t release any aspect of
the product until the entire product was completely developed and
validated. Waterfall developments characterize the type of design and
development that very nearly wrecked the American automobile industry,
where developers would take years to develop a new product only to have
it hit the streets when the time for its design had already passed. (The
rate of change in human perception and in human attachment to particular
styles and fashions has expanded exponentially with the widespread use
of the Internet.) These are hugely expensive mistakes, and so big
manufacturing concerns started to look at ways to exploit a more agile
approach to product development.
The Resulting Agility
Among the most profound changes that we have
experienced in modern life is a focus on reactive behavior that became
really profoundly impacting with the widespread use of the World Wide
Web. Product developers suddenly had access to all kinds of data about
the ways that consumers used and viewed their products, and so they
sought ways to make it possible for them to quickly respond to what they
perceived as customer demands.
That was huge. In an earlier time, products
were developed by visionary designers who created products to meet unmet
needs in the marketplace. U.S. manufacturing went through an early
golden age of development when product designs were focused on style and
durability; beautiful things were produced to last. Pushing new concepts
into the market place was not really the first order of business.
American culture was not geared to reactive change; to the contrary, it
was geared toward classic designs that survived short-term fads and
retained standards against which other products were judged.
Most people over the age of 50 can almost
mark the year in which they saw the world change. The automobile
industry was the canary in the coal mine. Around 1970, car makers began
producing cars that were different from previous generations.
Distinctive styling all but disappeared, outside of what was offered in
some luxury models, and Americans got used to driving around in boxes
that were designed to be cheap to buy and fuel efficient.
What was really happening was an early agile
development process that swept through the auto industry and transformed
it into a manufacturer of jigsaw puzzles. Cars could be compiled from an
array of compatible parts, the tradeoff being that they had to all fit
within a small group of body styles. Some things, like the safety
features of cars, benefitted from this approach, but overall car design
became boring and it has never really come out of it. The industry
continues to be responsive to customer needs, and as fewer and fewer
customers can afford anything more than low-end automobiles, the world
has been flooded with low profile designs.
Most people over 30 can tell you that this
same phenomenon, skewing toward unimaginative design, has also taken
over the information technology sector. Like the automobile industry,
the information technology sector is really dominated by a handful of
big players who set the standards for, and often even control access to,
the Internet. What Web designers can do in developing websites is more
and more restricted by technical options, and by dictates in their realm
analogous to the software industry’s Agile Manifesto. In its short
history, the World Wide Web has changed character before our eyes. Gone
are the garish, awful website designs that characterized the early years
of the Web, replaced by cookie-cutter clean designs focused on
optimizing the site’s visibility to search engines. And have you noticed
that there is really only one of those: Google? You can use Bing and
Yahoo and others, but there is no wide-open market in search engine
development, as that, too, has been culled to only a handful of
survivors, only one of which really matters.
Agile development supposedly puts emphasis
on individuals and interactions, but that can mean a lot of things that
have nothing to do with personal relationships.
In an earlier world, businesses placed a
value on customer service, which often amounted to nothing more than
provision of basic assistance delivered by someone behaving in a
pleasant and attentive way. With the advent of the Internet and all of
the data resources that came with it, customer service has been replaced
with access to resources, and not necessarily resources provided by the
product manufacturer or service provider. The do it yourself era had
begun. People who had gotten used to pumping their own gas, became
further use to ATM machines and online banking and purchasing. The world
became flooded with electronic devices, and less personal in the
process. More and more the support for those devices fell to users
sharing their experiences in product user forums. Product documentation,
per the third pillar in the Agile Manifesto, became a low priority in
the new world where you could simply be encouraged to ask an online
friend for help. The expectation was that your software products were
expected to work, obviating the need for a lot of expensive-to-produce
documentation and customer support.
The good news is that agile development has
produced a lot of software that does work, because if it doesn’t there
is very quickly a new release fixing the problem.
Making agile work in the workplace is
something else again.
The Developing World
Sort of hidden among those pillars of the
Agile Manifesto is something that is very precious to those honchos who
got together at the Snowbird Resort to dream the whole thing up:
intellectual property rights.
In an agile environment, very few individuals actually see the whole of
the product that they are building, and even the visibility that they do
have into parts of it is likely not deep. That means nobody leaves the
company and takes the baby with them. The tech sector is nuts for
non-disclosure agreements anyway, but add in these teaming partitions
and you have really cut the kid up into parts, with no single piece
carrying the potential of revealing the entire code, to put it in
programming terms, or the entire child, to stay with our baby metaphor.
It is not unusual (e.g., Apple) for companies to keep their engineers
completely in the dark as to the product that they are developing.
Engineers there take pride in learning that part of something they
worked on ended up in a new device. That is protecting your intellectual
property.
That model has long been used in defense
industry applications, where individual engineering and science teams
work anonymously to develop systems to be used in assemblies that they
will likely never have the privilege to see. Hitler’s Nazis used a
similar development strategy to protect the secrecy of technological
developments, and to create culpable deniability for the war crimes they
committed. Their extermination program was a model of agile development,
which makes the DuPont connection to the history of agile development
all the more intriguing. Founded in 1802, E. I. du Pont de Nemours and
Company is an American chemical company. It began life as a gunpowder
mill but in the 1920s they began developing polymers and a new age of
plastics was born. Since then, reacting to changing needs and
opportunities, they have branched into products ranging from
insecticides to genetically modified foods.
Accepting that level of compartmentalization
of one’s work experience is not for everybody. It creates an odd
dissonance between the part one plays in a field of competing peer group
members, and the behaviors that work successfully within the scrum
organization that is so central to the individual agile development
teams. Consisting of eight or so members, individuals in these teams are
expected to engage the process fully to present ideas and analyze those
of others. Agile consultants arm their client teams with processes and
tools designed to create the behavior patterns for each team to mimic.
Role definitions turn every person into a certain type of cog in the
development process, and it places a great deal of emphasis on
collaborative decision making. It is not really a place for rebels or
cowboys, and in fact the process is designed to make it difficult for
such types to function within the agile process.
Like many manufacturing processes, performing a role in an agile
environment has some dehumanizing aspects. The only way to keep up with
the project schedule is to perform a robotic sequence of events, often
in a repeated fashion, until the end result is achieved.
This is, of course, a situation that has
always been a defining aspect of human endeavor. We must martial
ourselves together like an army of ants to accomplish anything, and ants
have roles, and the only happy ant is one that accepts his condition and
situation. On the other hand, “Do Androids Dream of Electric Sheep?”
Science Fiction novelist Philip K. Dick posed the question in 1968. What
does it mean to be human?
Agile development is designed to cut workers off from coworkers outside
of their agile team, to counteract what was one of the great, but most
expensive, aspects of old world work environments, which was the sense
of belonging to some group that produced tangible outputs. That is not
really the world that the developers of the Agile Manifesto wanted for
themselves, but instead it is what they wanted for their employees. As
Jon Lovitz says in those Go Daddy ads, “I don’t see you so much as a
business owner, but more as a business “‘worker’”, in finger quotes.
Lovitz, or at least the character he plays
in that commercial, understands one fundamental aspect of agile
development: you, the individual, doesn’t matter outside of your
performance of a narrowly defined role within your organization. You are
a micro-managed cog in a development machine that is designed to
carefully control costs while quickly moving revenue generators into the
marketplace. No one development is “the complete answer”, but if
visualized effectively each development may initiate the revenue
generation that funds the further development of other aspects of the
product.
Agile, in all of its alternating dynamics,
that simultaneously optimize individual initiative while also casting
agile team members as robotic functionaries, is focused first and
foremost on the business’s “bottom line”. It rewards companies and those
individuals who can comfortably fit lock-step into its micro-management
nature. People with personalities geared to the earlier “waterfall”
world do not often survive the change to agile development, and so in
2015 you have armies of older displaced workers who have been made
obsolete, not by technological advances so much as by modification of
our relationships with one another in the workplace.
One could suggest that we, as human beings,
need to look at what is gained and what is lost by this enormous change
in the way the world works. The agile world has created a structure that
rewards business owners, who do not personally have anything to do with
the agile process, and diminishes the place that human beings occupy in
that working world that consumes most of the time of our lives. It
further perpetuates the concept of human slavery, expressed through
diminished personal and financial rewards.
Futurists spend a lot of time fearing “the rise of the machines”. In the
form of agile development, it is really the rise of “masters of the
universe” – those tech industry leaders who hatched their plan at a
resort in Utah in 2001 – that are having the greatest impact on the
quality of life in our world of the future, where business profits trump
the very essence of how it feels to be human.
|