The Unnecessary Tension between Process and
Programmer
Some of My Best Friends Use an Agile Software Process
Dave Thomas, Bedarra Research Labs
|
 |
ARTICLE

PDF Version |
1 THE PROCESS BORG
Today all organizations are required to achieve process compliance,
be it ISO 9000, Six Sigma, CMM, Sarbanes-Oxley, Balanced Score Cards
etc. Each of these compliance activities seeks to ensure that the
company has the appropriate processes in place to ensure that the
company can serve the needs of their customers and shareholders.
Most mandate some form of continuous improvement measurement, dare
I say metrics, so that the organization can monitor its improvement.
Many of these efforts were originally targeted at improving manufacturing,
operations or finance, but they are having an increasing impact on
the IT and SE. Also, while these efforts were initially applied to
larger companies, they have trickled down to the smaller ones who supply
these larger firms.
Having a documented process has therefore become a mandatory requirement
for software development. It isn’t sufficient to say “we
are doing Waterfall, Iterative or Agile; go away and let us get our
work done”. Like it or not, everyone needs to be able to articulate
the process they use for software development. It is time for developers
to take ownership of the process side of things so that they can stop
fighting it. Process is like democracy: if you don’t participate,
you get the process you deserve. However, there is no need for process
tension to obstruct productive development!
2 SOFTWARE CULTURE YES - SOFTWARE PROCESS NO
Ask any software developer and they will tell you if they feel they
are working in a good software culture, and most who answer no will
say that they would like to be. However, ask most developers how they
feel about their company’s software process and they will complain
bitterly. Yet the best software cultures always have very disciplined
processes which developers follow almost to a fault. Indeed the culture
is defined by a unique combination of people and process. The open
source Apache foundation is an example of a successful software culture
that has very disciplined practices. In fact, all of the successful
software cultures I know of have disciplined and valued rites and rituals.
How can cultures be so respected while the software processes that
help drive them are so repugnant to developers?
Let Them Eat Process
When articulated by the CEO or VP of engineering, the process initiative
brings tears to your eyes: clearly we all want to improve. However,
too often these speeches take the form of political promises sounding
like free universal health care and a good life for all without seriously
looking at how they are funded or implemented in the organization.
My most recent irritation is the attempt by some to move to Agile development
without first making the investment in a continuous integration and
test environment.
Traditionally software processes have been dictated top down by the
Process or Quality department with little input from the analysts or
developers. Searching for the usual quick fix, many companies have
adopted commercial processes in the hopes that they could provide the
solution. Unfortunately this has created a perception gap which says
that process is bad and something which gets in the way. This persistent
adherence to a top-down approach is surprising when history has shown
that quality and change is best introduced bottom up sharing experiences
across teams so that the organization learns from experience. Instead
of evolving with the teams’ learning experience, the process
often remains a static pile of out-of-date manuals or a huge website
which is seldom referenced. Top-down processes emphasize artifacts,
roles and linear production where as bottom-up processes tend to focus
on skills, practices and incremental improvement.
Too often the appearance of process is more important than actually
having a process which works! Middle management people have become
experts at gaming any measurement system, and can often obtain their
quality bonus without actually doing anything to improve quality. The
measurement system is gamed to give the same good news results as before.
Consider for example the hotel room quality control card that says “if
you can’t give us at least 9 or 10 call me, the manager, at my
home number”. Clearly this hotel chain doesn’t really care
about quality! Nor does it care about improvement since reporting real
problems is actively discouraged.
Unfortunately many managers and executives often lack modern real
world development experience. Few, if any, have developed and deployed
a
new major application or product; hence they have maintenance processes
at best, which are designed to reduce risk through incremental fixes
and features. They believe in all best intensions that if there is
a documented process that development will improve. There is little
said about first-time software where expert education and mentoring
are so important to acquiring new practices. The problem is compounded
by process implementations by managers and project leaders that do
not provide for learning, proper time allocations for activities etc.
In many cases the process is simply a set of check boxes and artifacts
to be produced in addition to the software asset (with no additional
time to do so).
Culture – The Invisible Implicit Process
What one really wants is a learning organization with a culture that
is tightly aligned with an almost invisible process. In such a software
culture things just get done according to a seemingly implicit process
because that is the culture. In such organizations people follow the
process because they just do it, not because it is posted on the wall,
distributed in a large manual accompanied by draconian gate reviews,
piles of project charts etc. We need to move beyond large complex process
definitions to implicit practices which are intrinsic to a productive
culture.
Agile Development (www.agilealliance.org) is an increasingly successful
example of a bottom-up people/team center process which can be assimilated
quickly by small teams to improve software predictability and quality.
Agile Development quickly builds a common culture of simple, day-to-day
practices which developers live and breathe. Unfortunately, the lack
of Agile process descriptions and the disdain which Agile developers
have for process creates unjustified concerns about the lack of discipline
of developers. Agilists need to meet the need by providing the straightforward
process documentation and measurement which organizations need.
3 AGILE PROCESS DEVELOPMENT – MAKE IT BETTER EACH SPRINT
Process descriptions don’t need to be lengthy, they just need
to describe the vocabulary essence of what people do, what is produced,
the sequence in which things are done and how the process can be observed
by management or customers who are not actually inside the development
team. Since there are lots of publications available, there is no need
write a massive document; instead, the documentation needs only to
provide sufficient information and appropriate references, ideally
to online documents, to allow a newcomer to understand how it is that
things are done in your software culture.
Process doesn’t have to be built in a single day. It is really
just a case of Agile writing where pairing, incremental releases, and
collaborative reviews to find bugs can easily produce a simple website.
Many Agile teams do this already in one way or another in their team
wikis, blogs or websites. If you are concerned about the quality lingo
of Six Sigma, or the software metric police, take the time to ask them
what information they need and why they need it. Just asking them,
indicating you may even care if they can be successful at their job,
can often lead to a ground swell of cooperation that may have process
experts writing and editing your process for you as you speak.
Leverage Open Space Communities of Practice
Virtually everyone accepts that Agile works inside a small team,
but large organizations need to have common language across the organization
so that people can communicate using the same vocabulary and so that
people can be moved to from team to team and new employees can be brought
up to speed quickly. Building process consensus across teams is best
facilitated by communities of interest who meet informally in open
space to discuss how they can improve their practices, be they in developing
stories, acceptance tests, unit tests, interfaces, acting as scrum
master, measuring progress etc. Grow your process and culture bottom-up,
sharing what works and doesn’t for your team and your organization.
Measurements – Let Code Report Itself
Agile advocates’ providing constant visibility to both customers
and developers through collaborating as well as visible progress through
burn down and velocity charts. The Agile manifesto values working code
over voluminous documentation. Similarly, small releases and continuous
integration are essential practices. Since the code is so important,
make sure the code base is instrumented and stories’ implementations,
unit, and acceptance tests documented so that rather than using cumbersome
project reporting tools one can just produce accurate information from
the code base. “Luke, trust the code”. Why fake it with
tedious reporting tools if you can collect the information at every
build directly from the code base (feeding whatever inane PM tools
are still in use auto magically). Project information can best be obtained
from simple qualitative web based questionnaires filled out each iteration
by the scrum master, with quantitative measurements for the code base.
Towards Open Process Development
To be fair, the process community is very concerned about
the gap between process and programmer and they are working to find
ways to improve
the situation. Many process champions have tried everything they can
to publish processes on the web, wikis and other friendlier formats
which may appeal to developers. Recently, organizations have even been
situating process people with development teams to try to document
the processes actually used by the development teams. However, their
efforts are seldom supported by development organizations, which see
all process as evil overhead.
Recently Randy Miller (http://blogs.msdn.com/randymiller/archive/2005/05/10/416021.aspx)
and others at Microsoft (http://msdn.microsoft.com/vstudio/teamsystem/msf/msfagile/default.aspx)
have made efforts to incorporate processes integrated with development
tools.
In October Eclipse has announced the Beacon Eclipse Process Framework
(http://www.eclipse.org/proposals/beacon/proposal). Per Kroll, principle
author of the proposal, () promises EPF will provide open source process
definitions and tooling to define such processes. In doing so, the
process community is seeking to provide a common place repository for
process descriptions as well as tools for defining and publishing process
descriptions. The existence of open process documentation should reduce
the effort and expense needed to create process description and ideally
offer the opportunity for communities of interest to describe practices,
including typical pitfalls.
4 SUMMARY
It is time for developers to embrace and extend software processes
into a healthy description of your organization’s software culture.
All that is needed is the vocabulary, practices, measurements, lessons
learned and references to places to learn more. Agile software has
better ways of measuring and predicting software development than classic
PMI. Now we need to make the efforts to articulate these new ways to
others. We also need to automate our code bases so that the artifacts
themselves can provide the information that organizations need to manage
and plan their software.
About the author

|
|
Dave Thomas is cofounder/chairman
of Bedarra Research Labs (www.bedarra.com), www.Online-Learning.com
and the Open Augment Consortium (www.openaugment.org) and a founding
director of the Agile Alliance (www.agilealliance.com). He is
an adjunct research professor at Carleton University, Canada
and the University of Queensland, Australia. Dave is the founder
and past CEO of Object Technology International (www.oti.com)
creator of the Eclipse IDE Platform, IBM VisualAge for Smalltalk,
for Java, and MicroEdition for embedded systems. Contact him
at dave@bedarra.com or www.davethomas.net.
|
Cite this column as follows: Dave Thomas: “The Unnecessary Tension
between Process and Programmer”, in Journal of Object Technology,
vol. 5, no. 1, January-February 2006, pp. 7-11 http://www.jot.fm/issues/issue_2006_01/column1
|