Anda di halaman 1dari 4

How We Became The Pongo Team

Marco Dani, Alberico Gualfetti, Luigi Mengoni Francesco Cirillo


Unirel S.R.L. XPLabs S.R.L.
Via Volturno 12 Via dei Castagni 22
50019 Sesto F.no (FI), Italy 01015 Sutri (VT), Italy
+39 055 340773 +39 0761 659037
pongo@unirel.com francesco.cirillo@xplabs.com

ABSTRACT “Why Our Projects Fail.” We had, in fact, failed with our
Process improvement has always been an extremely last project, yet we considered ourselves technically
complex undertaking. Among other things, it requires that talented. What we needed was a bit of formality, perhaps in
the people involved have a well developed capacity for the form of a Unified Modeling Language (UML) diagram
observation: only they can truly understand their problems or two. This would have solved our problem - or so we
and they are the ones best suited to resolve these problems. believed. At first we thought that making the map would be
The experience of discovering Extreme Programming (XP) a simple exercise, though for the most part pointless. In the
values is central to the process improvement of a software end, we discovered things that we didn't expect in terms of
development team. By enhancing observation skills and clarity and relevance. The map became more and more
encouraging a willingness to change, team members reflective of our experience, and helped us recognize our
increase self-awareness, thus enabling them to make needs. As the map took shape, we came to realize that a
decisions to improve. The Pongo team tells of their series of factors were contributing to our lack of success. In
journey, in the hopes that this will lead other teams to summary, from the map the following points emerged:
become active participants in the process of change.
• We do not have a direct relationship with the client.
Keywords • We don't know how to accurately interpret the requests of
Process improvement, XP values, team experience. our clients.
1 INTRODUCTION • We do gold plating.
Today's markets require software which is capable of being
• The client never provides acceptance tests.
adapted in real time to the continually changing
requirements of business. The Unirel company had for • We have no way of determining the progress of our
some time expressed an interest in increasing effectiveness projects.
by producing software "good, fast, and cheap." The goal • We don't know how to estimate.
was to reach Level III, and ultimately Level IV of the
• The client adds functionalities, but we can’t adapt our
Capability Maturity Model (CMM). In June 2001 a
planning.
collaborative effort began with Francesco Cirillo, mentor at
XPLabs, to create the conditions which would allow • We don't know how to test. (“All the tests run, so why
developers to work concretely toward these objectives. doesn’t the system work?”)
What we initially approached as a course on the application • We don’t have a suite of automatized tests, so we spend
of good engineering practices became instead a journey that hours testing manually.
led us to an understanding of why our past projects failed,
• We spend too much time fixing bugs.
and then to discover the values we wished to adopt and
apply. • Management assigns us "project territory areas"
following a strategy of specialization.
2 THE WAY WE WERE: WHY OUR PROJECTS
FAILED • Developers are considered mere executors, with little
Our experience began with Francesco posing the question, involvement or sense of responsibility – someone else
“Are we or are we not a team?” to the ten developers who makes all the design decisions.
signed on for the programme. After several weekly • We write programs alone.
sessions, only four answered this question affirmatively and • Developers write code with their own formatting, style
continued the mentoring experience. (naming of methods, classes, etc.), editors, tools
Our next step was to reflect on the causes of project failure. (makefile or shell script), compiler, even with a personal
The study of traditional software development processes way to make objects work.
and the failure of certain projects recorded in the literature • We have difficulties understanding other people’s code.
were the starting point for the creation of a map entitled • We feel unproductive competition between developers.
• We suffer from the "up till now it was perfect, then More importantly there were things that had become
someone fiddled with it" syndrome. permanent fixtures, and other objects - belonging to the
• We don't share common values. gurus of the company - that were considered sacred.
Beyond that, we thought that it would take forever to
• “Just make it work” is the unspoken rule. straighten it all out. Following Francesco's advice: we all
• The design of our software is rigid and immobile. pitched in to reorganize the bookcase without a
• We have to rethink, reorganize, rewrite parts of the coordinator, without first dividing up work areas, but by
system when work is in progress. talking to one another about every problem and every
decision, by doing simple things like setting out books two
• We don't know how to handle complexity - it increases by two to classify them, and finding the courage to touch
when it should decrease. the "untouchable." Surprisingly, in a short time not only
• The final phase of our projects is a “blood bath” – was the bookcase tidied up, but there was much more space
accumulated delays cause stress, demotivation, and available than what we had imagined when we started out.
frustration in everyone involved. Spontaneous, sudden order had emerged; things that didn't
• We can not choose the projects we like. belong to the team were removed, and most importantly
every member of the team knew the position of any given
• Work is not enjoyable. object.
There is no need to describe our shock and fatigue, in
seeing these truths black on white. Undoubtedly, the Another enlightening experience was the "challenge"
resulting sensation was unpleasant, but who was to blame between two pairs of programmers involving how to make
but ourselves? We were the ones doing the writing. Though a given mind map communicative. The first pair wanted to
analyzing ourselves was not something we enjoyed, we proceed in an evolutionary way, "refactoring" and rewriting
needed to do it to move on. the map again and again from scratch, though without
altering the contents. The second pair, instead, considered it
Gradually, as we studied traditional software development "a waste of time" to work by taking little steps, ripping up
processes, we were encouraged by Francesco to ask maps and doing them over; they were convinced they could
ourselves which one was most similar to ours. We realized draw the final map straight away, adding new items if the
that our scanty ability to estimate, to analyze, or to design, need arose. That way, they thought they could save time on
together with the fact that planning was determined by the useless rewrites. Surprisingly, it was actually the
client, led us to choose the "value" of speed when facing "evolutionist" pair who delivered in less time: small steps
projects. The immediate consequences were the implicit guided simple moves and countless rewrites and revamps
selection of a "code and fix" model that resulted in had produced a map that was so communicative that it won
underestimating risks, accumulating duplication in the unanimous approval from the whole team.
code, intense bug fixing, and increasing complexity. We
concluded that the more we strove for speed, the more We sensed that through these experiences we had found a
slowly we went, to the point of inevitable "throw away." way to work that was good, fast and cheap, and we could
We certainly didn't expect to follow a strict iterative still have fun! In processing feedback from team members,
incremental model, but at least a waterfall! what emerged was that our experiences had many common
elements: we had worked on the verge of chaos (at times
The more we learned and understood about software even creating disorder on purpose so as to be more free to
engineering issues, the more a sort of shared consciousness put things back in order); we had tidied up with simple
of our mistakes grew. strategies, communicating continually, giving and receiving
constant feedback; we had shown courage in asking for
3 HOW WE ARRIVED AT XP VALUES: CHANGE
Understanding that the reason for our failure was the choice help when we needed it, and in touching the untouchable.
of the “speed engine” was only the first step. We had come It was only natural to ask ourselves if these same values
to the point of no return. Now all team members recognized could be applied to software development (at that time we
how we were working and the mistakes we were making. didn't know that behind these aspects were XP values - that
No one would accept continuing to work that way. We is, communication, simplicity, courage, and feedback; in
asked ourselves what other values could substitute speed. fact, at that point we didn’t even know what XP was). If, in
What engine? abstract terms, we could intuit analogies between the
One morning at Unirel, Francesco told us that our room experiences we had with Francesco and the development of
was too messy to work in; we needed to tidy up. As we software (for example, working on the verge of chaos in
were doing so, we realized that most of the clutter was order to combat complexity), in concrete terms, we did not
concentrated on the bookcase, which hadn't been sorted out know how the values that had emerged could fit into
for months. There was an accumulation of things used by programming.
various people, some having nothing to do with the team.
Most of the team members felt growing confidence that bugs into the system, and design arises directly from
these values could constitute the new engine, capable of tests.
enabling us to work successfully. However, one person • Clients now provide acceptance tests.
expressed opinions indicating that in critical conditions he
• Through test-first we obtain a significant "coverage"
could possibly move in the opposite direction of the rest of
for code which allows us to work with more
the team (e.g. allow throw away). This fact could have
confidence.
constituted a future risk for the team. After painful internal
debate, he eventually decided to leave the programme. This • The process of code writing is no longer a chore; in
was a difficult moment, yet also a defining one; it fact, test-driven development is great fun.
confirmed our motivation. Now we were truly a team. • Writing tests lets new ideas emerge, both on how to
build applicative code and on new tests that were not
In our search for a team name we liked the idea of linking it
originally foreseen.
to the quality that we felt was most necessary to support
change, namely, malleability. This characteristic evoked • We use tests as an instrument of knowledge: if we have
our childhood experience of Play-doh, Pongo in Italian, to use third party software or understand how a system
which was great fun and at the same time stimulated our works, rather than read documentation, we write tests.
creativity. That's why our team chose the name Pongo. The This activity may seem an expensive waste, but it
change had begun within ourselves. eliminates insecurity and ambiguity, since we know
exactly what the software does or does not do.
At this point we - the Pongo team - decided to follow an Moreover, a test that works is a tangible result.
evolutionary development method. In January 2002, we
began a six-month full-immersion programme with • System-oriented approach. The team shares a system that
Francesco at XPLabs. Our objective was to maintain and is continually nurtured and gradually enriched as we
develop values on one hand, and on the other to experience work on different projects. High quality is maintained
how through XP we could apply our new values engine to and the enrichment of the system gives us speed and
programming in order to improve team process. A economy.
description of the continual series of discoveries we made • Pomodoro. Our work day is divided into half hour time
at the center would be beyond the scope of this paper. units by means of the "pomodoro," a tomato-shaped
Suffice to say we learned how to find and use the tools to kitchen timer [1]. We set the pomodoro for 25 minutes,
improve our process. take a short break and then get back to work again. Every
4 THE WAY WE ARE NOW: RESULTS four pomodoros we take a longer break (about 15
Back in Florence, we immediately began applying our minutes). Over time we have come to realize the
discoveries to our ongoing activities. Our objective was to importance of these breaks - they allow us to maintain
develop software good, fast and cheap while working in an rhythm and enhance creativity. Using the pomodoro, we
enjoyable way. Here is a summary of the results we have "box" time; the effect of this is that the passing of time is
achieved so far: not as frightening. In fact, time is no longer an enemy,
but an ally, in the sense that it stimulates us to get things
• Teamwork. We don't work alone anymore, we share work done. Thanks to the pomodoro we have been able to
space. We learned that working together encourages improve our estimates, since estimating brief units of
communication of differing viewpoints, and therefore time is simple.
creates conditions for collaborative problem solving.
Working on a team stimulates creativity and favors the • Feedback. We are more aware of how we are working
emergence of ideas that enable the team to better regulate due to feedback. In fact, the first pomodoro of the day is
complexity. Competition between developers is dedicated to feedback, and this allows us to improve our
eliminated, while respect for fellow team members is process day by day. We have learned to observe
enhanced. Work has become more enjoyable. ourselves. If something is not right we work to improve
it.
• Design. We let the code be our guide, rather than
imposing structures a priori. That way, code stays simple • Pair rotations. During our time at XPLabs pair rotations
and modifiable. were very frequent, to the point of one rotation every
pomodoro. Doing so made sharing our perception of the
• Testing. We have revolutionized our approach to testing, progress of the project, or adopting new tools or
specifically: practices, or finding collaborative solutions to complex
• We have come to understand the purpose of tests problems, a natural part of the process. At first glance,
("doing analysis means finding the tests"), and how to frequent rotations might seem to slow down progress, but
use them as a development tool. In other words, tests even today our experience is that overall we get an
now guide code writing. Result: we introduce fewer increase in speed.
• Focus. Interruptions are eliminated (e.g. checking emails work in some way, now he or she assumes responsibility,
or answering the phone), and this, combined with the use along with the rest of the team, for delivering value to the
of the pomodoro, allows us to work with more focus and client. Work, as a result, is more motivating and
rhythm. The effect is that at the end of the day we gratifying.
developers may be more tired, but not as stressed as we
Maintaining these results requires continual effort on our
would have been using "old" work methods. We have
part. Often times we fail in doing so. This is human. We
accomplished more and produced concrete results. In
perceive the danger in losing sight of our values, and we
addition, we have acquired and are still developing skills
immediately ask ourselves how to get them back in focus.
that go beyond specific programming abilities, for
At times, this involves a great deal of effort, but we feel
example: learning techniques, proactive text reading,
that the delay in our reaction is continually diminishing.
keyboarding. As a result we can concentrate more on
what we are doing, make fewer errors, and enhance our Inter-Library Loans Project
creativity. The Pongo team worked on the Inter-Library Loans project
from September 2002 to January 2003. Here are some
• Metrics. We keep on working to improve our metrics. To considerations on the results obtained:
this end, we are creating, in collaboration with XPLabs, a
tracking and planning tool that will enable us, among • Good. The team increased the quality of software
other things, to obtain Return On Investment (ROI) developed. Beyond the positive effects regarding quality,
directly from metrics. communication with the client was also dealt with
successfully. In our experience, shifting from a monthly
• Communicative code. Having understood the importance delivery rate to a weekly one has significantly improved
of "code that speaks," together we have sought to find communication and has enabled the team to receive more
"our" way of making code speak. This, along with feedback.
"collective ownership" and the use of tests, has
eliminated the fear of touching other team members' • Fast. The team is faster in delivery and has decreased
code. In addition, a better understanding of what a certain estimating error, which, from an average of 245% in the
snippet of code does has diminished the fear of accepting first three stories, has dropped to 110% in the last three.
change and also of rewriting a given portion of code from Though this percentage is still high we were able to cut
scratch. our errors in half, and we know how to reduce them even
further.
• Communicative tools. To communicate, we use mind
maps, wikis, metaphors (even colorful ones). Through • Cheap. The team has introduced no bugs, reducing costs
these tools, we are better able to communicate with other related to bug detection to zero.
team members (developers and clients).
• Fun. The team works in a more enjoyable way, thanks to
• Development tools. We have gained familiarity with attention to the work environment and work tools, the
environments and development tools which allow us to focus on product quality, and the elimination of overtime.
be more effective, streamlining programming, testing,
refactoring, and integration. Also, sharing said 5 CONCLUSION
instruments aids in communication, and therefore We’ve been guided to the threshold and we’ve gone
enhances the effectiveness of the entire team. through the door; now we are on our way. On our journey
we have encountered difficult obstacles as well as pleasant
• Facing challenges. Fear of change, or facing new
surprises, and we know that there are more of both still to
activities, is no longer a cause for anxiety, but becomes
come. We’ve evaluated our achievements up to this point
positive tension which moves us to act. When a situation and concluded that the results we have obtained have made
becomes difficult, we stop. (In the past we would have the struggle worthwhile. We have changed both
kept going.) This allows us to be more lucid.
professionally and personally. All of this is very exciting!
• Working hours. Two out of eight working hours a day are We are committed to keep growing and improving. We are
dedicated to learning, so when the work day is through, strongly motivated to go on.
we don't feel the need to study or work (what's more, we REFERENCES
know that this would not be effective after such an 1. Cirillo, F. The Pomodoro Paper. Available soon on-line
intense day), and we have more time to dedicate to the at http://www.xplabs.com
family, and to other interests. Systematic overtime is
eliminated.
• Responsibility. We work with greater responsibility in
terms of the success of the project: while before a
developer was assigned the task of making some thing

Anda mungkin juga menyukai