Vous êtes sur la page 1sur 14

25/9/2017 Extreme Programming: A Gentle Introduction.

Extreme Programming:
A gentle introduction

The first Extreme Programming project


was started March 6, 1996. Extreme
Programming is one of several popular Agile
Processes. It has already been proven to be very
successful at many companies of all different sizes
and industries world wide.
Extreme Programming is successful
because it stresses customer satisfaction. Instead
of delivering everything you could possibly want
on some date far in the future this process delivers
the software you need as you need it. Extreme
Programming empowers your developers to
confidently respond to changing customer
requirements, even late in the life cycle.
Extreme Programming emphasizes
teamwork. Managers, customers, and developers
are all equal partners in a collaborative team.
Extreme Programming implements a simple, yet
effective environment enabling teams to become make no sense, but when combined together a
highly productive. The team self-organizes around complete picture can be seen. The rules may
the problem to solve it as efficiently as possible. seem awkward and perhaps even naive at first,
Extreme Programming improves a but are based on sound values and principles.
software project in five essential ways; Our rules set expectations between team
communication, simplicity, feedback, respect, and members but are not the end goal themselves.
courage. Extreme Programmers constantly You will come to realize these rules define an
communicate with their customers and fellow environment that promotes team collaboration
programmers. They keep their design simple and and empowerment, that is your goal. Once
clean. They get feedback by testing their software achieved productive teamwork will continue even
starting on day one. They deliver the system to as rules are changed to fit your company's
the customers as early as possible and implement specific needs.
changes as suggested. Every small success This flow chart shows how Extreme
deepens their respect for the unique contributions Programming's rules work together. Customers
of each and every team member. With this enjoy being partners in the software process,
foundation Extreme Programmers are able to developers actively contribute regardless of
courageously respond to changing requirements experience level, and managers concentrate on
and technology. communication and relationships. Unproductive
The most surprising aspect of Extreme activities have been trimmed to reduce costs and
Programming is its simple rules. Extreme frustration of everyone involved.
Programming is a lot like a jig saw puzzle. There Take a guided tour of Extreme
are many small pieces. Individually the pieces Programming by following the trail of little
buttons, starting here.
What has changed here? | Links and Books | Extreme Programming Rules | About the Author
Copyright (c) 1999, 2000, 2001, 2004, 2009 Don Wells. All Rights reserved.
Last modified October 8, 2013.

http://www.extremeprogramming.org/ 1/1
25/9/2017 Agile Software Development: A gentle introduction.

Agile Software Development: A gentle introduction

Computer science is a young science. customer, the one who funds the software
Computer programmers my age were trained by development, a valuable and essential team
engineers. That training dictated how we member. When the dead line gets close a
approached software development for an entire traditional approach to reducing scope is to let the
generation. But now after decades of building developers decide what will work properly and
software to be expensive, unwanted, and what won't. Instead let the customer make scope
unreliable we have come to realize software is decisions a little at a time throughout the project.
different. Building software is more like creating a When your customer, or domain expert
work of art, it requires creativity in design and works directly with the development team
ample craftsmanship to complete. Software everyone learns something new about the
remains malleable, often illogical, and incomplete problem. True domain expertise and experience is
forever. Agile software development is based on essential to finding a simple, elegant, correct
fundamental changes to what we considered solution. A document can have plenty of
essential to software development ten years ago. information, but real knowledge is hard to put on
The most important thing to know about paper. Left alone programmers must assume they
Agile methods or processes is that there is no know everything they need. When asking
such thing. There are only Agile teams. The questions is difficult or slow the knowledge gap
processes we describe as Agile are environments grows. The system will get built, but it won't solve
for a team to learn how to be Agile. the problem like one guided by an expert on a Agile also means a fundamental change in
We realize the way a team works together daily basis. how we manage our projects. If working
is far more important than any process. While a Perhaps the biggest problem with software is what you will deliver then measure
new process can easily improve team productivity software development is changing requirements. your progress by how much you have right now.
by a fraction, enabling your team to work Agile processes accept the reality of change We will change our management style to be based
effectively as a cohesive unit can improve versus the hunt for complete, rigid specifications. on getting working software done a little at a time.
productivity by several times. Of course to be There are domains where requirements can't The documents we used to create as project
eligible for such a big improvement you must be change, but most projects have changing milestones may still be useful, just not as a
working at a fraction of your potential now. requirements. For most projects readily accepting measure of progress.
Unfortunately, it isn't that uncommon. changes can actually cost less than ensuring Instead of managing our activities and
The most brilliant programmers alive requirements will never change. waiting till the project ends for software, we will
working competitively in an ego-rich environment We can produce working software manage our requirements and demonstrate each
can’t get as much done as ordinary programmers starting with the first week of development so new version to the customer. It is a hard change
working cooperatively as a self disciplined and why not show it to the customer? We can learn so to make but it opens up new ways to develop
self-organizing team. You need a process where much more about the project requirements in the software.
team empowerment and collaboration thrive to context of a working system. The changes we get Take a guided tour of Agile Development
reach your full potential. this way are usually the most important to by following the buttons starting here. Or
The second change is making the implement. continue your guided tour of Extreme
Programming by following the buttons. Let's
look at how we manage by features next.
Links and Books | Manage by Features | The Paradox of Process | Agile Modeling | Process Proverbs | About the Author
Copyright 2009 Don Wells all rights reserved.

http://www.agile-process.org/ 1/1
25/9/2017 Manage by Features

Manage Your Goals Instead of Activities

can't use that efficiency because requirements get


changed before the project ends, usually right
from the start.
Agile processes like Extreme
Programming (XP) and Scrum accept that
requirements will change and create opportunities
for improvement and competitive advantage. We
just can't count on requirements being a constant.
Instead we will represent each feature the
customer wants as a user story. Story cards are a
low cost mechanism for scoping out a project
without spending our entire analysis budget up
front.
With a traditional process we schedule So now when we create our schedule we
our activities one after another until the project pencil in the features in order of importance. This
end date. Design always starts when analysis is offers us a different kind of efficiency; we can
finished. Coding starts when the design is done, change our minds about what we want without
etc. We make a plan to get everything finished on huge cost over runs. We can also stop at any time
time. At the end of the schedule we demonstrate and have the most important features done.
our new software and see if the customer likes it. An Agile process takes the traditional
process and turns it 90 degrees on its side. This
allows managers to get an estimated cost per
Now we can flip the axis of the previous feature instead of per activity. Customers can
chart. We visualize the activities, our process itself make the difficult decisions about what can be left
as the constant. Our process is applied to our undone in an intelligent way. If you find yourself
user stories in sequence. The activities are on running short on money you will not have wasted
going and the user stories get what ever they your money on analysis and design for features
We can visualize our requirements need. that will never be coded and tested. Costs make
remaining constant throughout the project. Don't panic. With professional software more sense this way since customers can't pick
Requirements flow through the different activities engineers on our project we can relax knowing and choose which activities should be done. This
like a production line. We finish each activity on that the team will do what is needed to get the job gives us a "shopping list" style of requirements and
all the requirements at the same time and deliver a done. Any activity needed with any combination planning.
fully functioning program at the end. This of people will just get done without any further One of the costs of managing this way is
approach offers many cost and effort efficiencies. scheduling or ceremony. This is the spirit and to always be ready for new features. We must
We can have people who specialize in one benefit of a self organizing team. keep code and design quality up throughout the
specific activity and change our team as each entire project.
phase is finished. Unfortunately most projects

Agile-Process.org home | Quality is Important | About the Author


Copyright 2009 Don Wells all rights reserved. Excerpt from T he Hitchhiker's Guide to the Galaxy by Doug Adams.

http://www.agile-process.org/byfeature.html 1/1
25/9/2017 Surprise! Software Rots!

Surprise! Software Rots!

Is software designed to be simple and cost compromises. We fight software rot from
elegant more valuable than software that is start to finish so it can never dominate our
complex and hard to maintain? An Agile process decisions.
accepts this as an important fact. One common misconception about testing
It may surprise you to learn software rots. software is the cost. Most developers only know
Intellectually we know it really doesn't, but it two data points; no tests, and too many tests.
might as well. Software rot is caused by improper Finding bugs cost you something. If you don't test
design and limited project resources. Complexity your software you are essentially moving that cost
creeps in as easy code changes are made instead to your users/customers. If you only pay for fixing
of difficult design changes. Code duplication bugs but not finding them you save money.
accumulates rapidly during maintenance tasks. On the other hand if you set out
After a while we notice that fixing one bug to accelerate software rot. When we proclaim the determined to test every possible input to your
causes several even more subtle (and expensive) design is done and accept no more changes. software you will find the cost of testing rises
bugs to occur and the cost of maintenance goes When we move the system into maintenance and exponentially as you get close to 100% tested. Of
up significantly. Eventually the cost of maintenance change the team's process. Last when the cost of these two data points not testing is obviously
exceeds resources. It seems as if our code has making vital changes exceeds our resources we cheaper.
decayed on its own in spite of our best efforts. reach the wall of unmaintainability. We know now that you can not effectively
Barry Boehm found that as software To stay Agile you must fight software rot. increase software quality at the end of the project
proceeded through its life cycle the cost of Refactoring is the art of making design changes by testing and fixing bugs. It remains low quality
making a change became larger. Ratios of 100:1 over time to keep the software fit for its purpose but with fewer bugs. Second, designing code to
for making a change after delivery versus project and ready for more changes. Unit and acceptance be testable lowers the cost of testing it. There is a
start are common. But ratios as low as 5:1 can be tests can almost eliminate the fear that drives sweet spot between no tests and too many tests
found. How flat this curve stays depends on many inappropriate easy changes on a that minimizes the total cost of development. It
individual project factors. delivered system. Early delivery of partial systems lies some where close to testing everything that
This cost curve is commonly interpreted to helps detect big changes before they become could actually break.
mean that you must create infallible requirements expensive. An Agile process accepts that Agile processes are a re-evaluation of the
documents followed by complete, detailed, and requirements, analysis, and design are never truly way software is created. The quality of the source
error-free designs or pay a huge price later. That done. An Agile process runs equally well in code is much more important than you may think.
isn't what it means. Boehm's findings are not a maintenance or development easing the transition. Just because customers don't see code doesn't
condemnation of change but rather a caution to We know that some changes will cost mean we are excused from the effort needed to
be prepared when changes occur. A well run much more than others. Boehm's findings were be ready for changes by keeping quality up,
project keeps the cost of changes lower longer. that 20% of the changes make up 80% of the complexity down, and full test coverage.
There are three life cycle events that seem effort. We accept that. We counter it with honest
estimates and use a planning process that requires
the customer to guide our spending decisions and

Agile-Process.org home | Most Important Features First | XP guided tour | About the Author
Copyright 2009 Don Wells all rights reserved.

http://www.agile-process.org/change.html 1/1
25/9/2017 Most Important First

Most Important Features First

How can we help our business grow? It simplifying and listening to customer objectives.
seems like an obvious question for everyone to Communicate with your customers simply
ask. Yet many software teams never do. When and in a language they understand. Most
we consider adopting an Agile process we worry specifications are way too technical for customers
about iterations and testing. But the very first thing to understand. Do you really expect your
you must do to become Agile is establish a good customer to approve your SQL queries? So
relationship with your customers, users, and where do you draw the line? What is technical
domain experts; who ever it is that directly or by-product and what is requirements? Many
indirectly pays for your work. Agile projects use stories and face to face daily
The first symptom of a damaged customer communication as requirements.
relationship is when your customer considers it a Agile projects keep a set of unfinished
waste of time to participate in the project. You features as stories in a simple spreadsheet, list, or
may have delivered software that just doesn't stack of cards that form the backlog of product
meet return on investment (ROI). You may have features. You want to prune or groom this list on
delivered software that is frustrating to use. You a regular basis by removing and destroying things
may even have treated the customer with disdain. your customer or product owner doesn't need
In any case your customer is important and you anymore. Only keep features you would consider
need to repair your relationship first. paying good money for, the rest go into the trash
One way to start a partnership with your can or shredder. time to developers, and negotiable increments of
customers is to listen to their needs and respond From the list of unfinished features you will scope to managers. Stories without value to
immediately. The best way to guarantee your choose the most important. Important means the customer are counterfeit. Destroy any stories
customer's time (and thus money) isn't wasted is different things to different teams. You can choose that have no value. If you find that you can't tear
to involve them enough to guarantee success. the highest return on investment (ROI). You can up or delete a story without second thoughts then
Customers who don't want to be involved in their choose the architecturally significant features first. you are making your stories more valuable than
own software project believe the software will be Risk is a very important way to sort. You can mere currency by spending too much time on
built the same even if they don't participate. This choose the features in groups that make good them. Use cases can be especially hard to throw
belief needs to be dispelled. business sense together. Most projects settle on a away once created unless you limit them to title,
Damage to the customer relationship can combination. The one constraint is that the estimate, and a brief description at first.
be the result of careless disdain for the customer's customers guided by estimates of effort from Important project decisions are difficult
expertise by the development team. It doesn't developers choose what is most important next. and stressful. Agile projects distribute the
matter how smart you may think you are, you This collection of most important features responsibility for decisions amongst the entire
simply can't expect to know as much as your is the input to the planning process. Features are team. Developers make technical desicions,
customer. You can't learn in weeks what someone represented in a minimal way that allows rough managers make people descicions, and customers
else learned over years. Respect your customer estimates of effort, but not detail. You will make business decisions. The best way to ensure
by acknowledging their expertise, listen carefully, probably only implement a fraction of the bad choices is to have one person make them all.
defer to their authority, and never insert your own features, so spending time on details is a waste Spending a million dollars on a software
opinions into your code. until they are actually part of an iteration or sprint project does not mean you have software worth a
Repairing an abused relationship takes plan. Many Agile teams use a quick way to scope million dollars. If your customers think being part
time. Trust takes months to establish but minutes projects called story cards. of software development is wasteful you might be
to destroy. Start out by being honest about your Stories are the currency of your project. building the wrong software. Don't just sort user
process. Everyone will give up something before Like money they don't have much value stories by importance, sort your entire portfolio of
the project is over. Giving up something first is a themselves, just a piece of paper, but they potential projects by importance as well.
good way to start. Give up on having the most represent value and can be used to buy things. Once we know what we want to build
interesting and complex system around by Stories represent valuable software to customers, next we will use iterative planning to stay on
track.
One dozen Agile words: Iterative planning, honest plans, project heartbeat, working software, team empowerment, and daily communication.
About the Author
Copyright 2009 Don Wells all rights reserved.

http://www.agile-process.org/fi rst.html 1/1


25/9/2017 Iterative Planning

Iterative Planning

I prefer to say iterative planning instead of amount of effort to implement them. The people
iterative development because it places the who will do the work, namely the developers,
emphasis where it belongs: You must adapt as the have authority to set the estimates. The manager
project unfolds by changing your plans. You can will set the total amount of work that the next
plan out an entire project into detailed iterations in iteration can have planned. The customer then
advance, but that isn't Agile. You change plans chooses a subset of the most important features
based on feedback from incremental delivery of that will fit into the next iteration.
working software. The customer/product owner The iteration plan will often be verified by
is part of your team so let them guide your project breaking the stories into development tasks and
not just at the start but day by day. Show them estimating them with finer grain units. At this level
the system as it is being built so they can learn use cases could also be created. This greater level
more about the solution and then listen to them. of detail is permissible because iterations or
Some Agile projects don't even have sprints are kept very short.
iteration ends. They remain Agile by balancing the The third level is the daily plan. A daily
need for stable requirements with the need to plan isn't usually represented by any artifacts. At
change requirements while launching working the daily scrum or stand up meeting everyone will
software on a regular and frequent basis. announce their plan for the day and then act on it.
Iterations are just an easy way to demarcate Even greater detail is allowed because the plan's
when changes are accepted, when a new plan is duration is one day and no more. anyway.
created, and when working software is released When you slip your schedule you The changes we get late in a project are
to customers. Shorter iterations give more acknowledge how far you have come and make a usually the most valuable because that is when we
opportunities to plan. new plan based on the new information. Trying to know the most about our problem domain and
There are three Agile levels of planning. catch up only puts you further behind long term. solution. Consider every dollar spent on
Release planning is a group of stories selected Even if you can make it up in a short time the development as also being spent on learning
because they represent a usable set of features strain on the team puts them behind schedule next about a better solution. The last change request is
that can be released together. These types of week. Keep a sustainable pace going. always the one you paid the most for, so use it to
plans are made by selecting the stories and When you get ahead of schedule you your advantage.
deciding how many iterations are needed or by make a new plan. Being ahead of schedule does Iterative planning is exactly what you think
selecting a release date and seeing how much can occasionally happen. Keep your pace steady. it is; make a plan, build some software, and then
be done by then. Release plans have no details Some slack time is nice, but you need to keep make another plan based on what you learned.
other than a list of stories to be done by a date. your team challenged or they will challenge Agile processes are based on the idea that
The second level of planning is the themselves in ways you wouldn't have chosen. planning throughout the project is just as
iteration or sprint plan. This plan is a subset of the When your customer learns something important as having a plan. Things change, plans
release plan stories that will be done in the very important about requirements or a competitive must either be short in duration or very sketchy in
next iteration or sprint. Only one iteration plan advantage you make a new plan. Changes to details to remain useful.
exists at a time. With our chosen collection of requirements are welcome because we have How do we know how much we can get
important features we can now estimate the already decided we will be making new plans done in an iteration or sprint? We need to talk
about creating honest plans.

One dozen Agile words: Iterative planning, honest plans, project heartbeat, working software, team empowerment, and daily communication.
About the Author
Copyright 2009 Don Wells all rights reserved.

http://www.agile-process.org/iterative.html 1/1
25/9/2017 Honest Plans

Honest Plans

How wide is my table? I look at my table our iterative planning process. We compute
and see it is about 6 feet wide. I then triple that to velocity by adding up hours, days, or story point
18 feet wide so I don’t underestimate. But I estimates to get a single number that represents
know this room is only 14 feet wide. So my final work finished this iteration. The project manager
estimate is 14 feet wide. Unfortunately we also can use this to suggest how much work can be
estimate software projects this way. Agile done in the next iteration or sprint. The team can
processes support honest estimates by accepting commit to more or less, but it is a good number to
and mitigating honest mistakes. start with. For our very first iteration we may not
An agile process makes honest plans have a velocity. If we did some initial prototypes
based on feedback. If a mistake is made a new and measured our progress we can make a guess,
plan is created by accepting how far we have but we don't know yet.
come and revising our plans based on the new We don't break down velocity by team
information. There is no blame, there is no sense members because people don't scale, only teams
of failure, we have learned something we didn't do. Everyone contributes something different to a
know before. team effort. Assuming any one team member out
of a team of 8 will be 12.5% of the capacity is
just plain wrong.
Comparing velocity between two teams is
Let's try a simple exercise. Estimate these also a bad idea. Any two teams will have different customer who does not want to make the hard
three lines for me. You probably just made three velocities. Consider for example a team moving decision and is delegating to the manager. If the
estimates in inches or centimeters. Those seem as fast as possible without making mistakes. What manager responds by saying "we will try" then he
like good units of measure except every different happens when you tell them to go faster like some is delegating to the developers. When a customer
type of monitor displays those lines differently. other team? Take an incredibly productive team refuses to prioritize features and drop one or a
Let's estimate them in hectopixels instead. That that severely under estimates their work, what manager demands a change in estimates it may
still doesn't help too much does it? Let me tell you happens if you then decide to pay them less seem like that customer or manager is grabbing
the top line is 1.5 hectopixels long. Now it is easy because some other team consistently over control. They are in fact loosing control by
to estimate the remaining two as 3 and 2 estimates? Don't start a competition to see who refusing to make a difficult decision. Pushing a
hectopixels. has the largest estimates, that is how my table got decision onto another person or group isn't
That was a silly exercise but it has a to be 14 feet wide. honest. An honest plan means you have made all
serious point. We estimate software development Product owner/customer, team members/ the difficult decisions you are responsible for
using units that seem familiar to us like hours, developers, and Scrum master/manager all work making.
days, and weeks, but do we really know how together to figure out what is feasible in the time Another change is the way estimates are
long that is? Every team will produce a different that is available. Product owners don't get every detailed; they aren't. You want a single estimate
amount of work in an hour. You can't multiply an feature, developers don't just work on interesting for each feature represented in the product
hour by the number of people and compute how things, and managers don't get to tell the team it backlog. Customers must weigh the different
much will get done. People just don't add up like isn't doing enough. There are cost and timing options to find the most important things to do
that on a team. At the start of our project we trade offs to be made and getting everyone next. You can't burden them with such issues as
don't know what our units of estimation are. We together to make them is best. dependencies. Put the cost of developing that
learn what our units mean only after we get our Honest plans are more than just truthful feature and that feature alone on every story.
first measurement of actual progress. estimations. They are about realizing that plans If building this feature lowers the cost of
Some Agile projects face the problem by have an expiration date. Scrum recommends a that feature then you have already designed some
using a fictitious unit like story point. It makes no month, Extreme Programming (XP) suggests one shared code. Separate technical decisions from
real difference what units we use so long as the week. Be honest about how long a plan can requirements decisions by estimating each feature
estimates are proportionate to each other. There remain useful and plan on creating a new plan independently and as if that is the only feature you
is nothing wrong with using units of time so long soon. will build. If developing this feature still lowers
as everyone knows they can't be measured by the When asked to prioritize a group of that feature's estimate then lower the estimate only
clock on the wall. features your customer may say they are all after this feature is working. Remember that you
Velocity will be an important parameter to needed this iteration or sprint. What you have is a are creating a shopping list for people without
technical backgrounds.

One dozen Agile words: Iterative planning, honest plans, project heartbeat, working software, team empowerment, and daily communication.
About the Author

Copyright 2009 Don Wells all rights reserved.

http://www.agile-process.org/honest.html 1/1
25/9/2017 A Project Heartbeat

A Project Heartbeat

If your Agile project doesn't have a is feedback. A shorter iteration gives you more
heartbeat declare it dead. A steady heartbeat has frequent feedback and more opportunities to
a fixed length iteration as short as you can make learn and steer your project. Scrum recommends
it. A strong heartbeat produces working software 30 day sprints while Extreme Programming (XP)
ready for deployment to production with recommends one week iterations.
completely finished iteration/sprint commitments. You want your team to have a sense of
A responsive heartbeat creates a new plan each iteration length to work at a steady pace, estimate
iteration based on feedback from the previous better, and be fully prepared for iteration end.
iteration and changing customer needs, not what You want your customer/product owner to see
was left unfinished. new functionality often so they feel optimistic
Steady your heartbeat by making your about progress and can learn about their problem
iteration length a constant then shorten the length and potential solution quickly. You want
to less than you think is possible. Push against managers/scrum masters to feel a sense of
resistance to short iterations forcing your team to urgency in removing obstacles to success so the
learn and adapt to Agile processes. Don't just team continues steadily throughout the iteration
accept that a one week iteration seems and not rush at the end.
impossible. Trust your people to figure it out and You want to set expectations that in a
fix existing broken procedures. Shorter iterations short while customers will receive a new version
actually increase the chances of being done on of the system with the features they identified as almost nothing. With a steady easy to predict
time not reduce it. most important. You want to reflect on how the pace we can make plans that are more likely to
Within an iteration make each day a process went and make improvements. You will come true.
heartbeat all its own. Start each day with a stand make new plans for the next heartbeat. You will Always deliver working software at the
up/scrum meeting. Integrate code at least once a finish as much working software as you can and end of each and every iteration. Conduct a
day if not every couple hours. With everyone make a simple measurement of progress. demonstration of new features every iteration.
integrating often you can frequently pull the latest A measurable, predictable, sustainable End every iteration with a retrospective on what
code from your repository so that you always pace helps you plan and meet your commitments. could be done better next time. Start every
work in the context of the latest versions of Developers are known to steal from the future by iteration with a planning meeting. Iterations must
everything. Work as if everyday has a deadline working many extra hours to stay on schedule start from scratch and not what was left over from
too. today. But we all know trying to catch up always last iteration. Every iteration should feel like a
The one essential ingredient that changes puts us farther behind because we can't continue fresh start, a blank canvas full of new
repetitive development into iterative development that pace. Eventually our pace slows down to opportunities for an empowered team.
One dozen Agile words: Iterative planning, honest plans, project heartbeat, working software, team empowerment, and daily communication.
About the Author

Copyright 2009 Don Wells all rights reserved.

http://www.agile-process.org/heartbeat.html 1/1
25/9/2017 Team Empowerment

Team Empowerment

Traditional teamwork has the project developers is a hard choice and must be done
manager controlling everything. The manager is wisely and kindly.
given responsibility and authority over all People develop emotional attachments to
decisions and plans. If you can only trust one their projects. Agile projects are even worse
person with power then this makes sense. But, if because we work together tightly. Some people
you have a team of good people it becomes will fear getting hurt if a project fails and try to
inefficient and inhibits working at your full sever their emotions or leave before they are hurt.
potential. Don't bottle neck decisions with a single It can seem like people are trying to make the
authority. Change from one person controlling project fail. I call these types of bad behavior
everything to empowering the entire team. "escape velocity." Managers might wonder why
Who is responsible, who has authority? team members would want to hurt the project and
Everyone. The most important thing on a project consider replacing them. That is the wrong point
is good leadership; the least important thing is of view; wonder instead why the project makes
who leads. Leadership and management are two people afraid they will be hurt, then fix the
very different things. Leadership is about seeing a project.
problem then getting people together to solve it. One management responsibility that
Any team member who knows enough to foresee doesn't change is removing obstacles to success.
a problem also knows enough to lead the What does change is that you don't get to decide
solution. It is your responsibility to do so. what is an obstacle and what must be accepted as will not make all of them. Your responsibility as
It may be counter intuitive, but a team that non-negotiable. Your team tells you everyday at an empowered team member is to be aware of
is calm and confident about their work is very the daily stand up/scrum meeting and you must discussions going on that you feel strongly about.
decisive without a single person as boss. There act to the best of your abilities. You are responsible for joining in, and
are plenty of jokes about committees being The manager also decides if the team contributing without prompting.
unable to produce a good design. Bad designs should be refocused during an iteration/sprint. The One thing that can expedite team
can happen to any team if the product vision isn't manager has the authority to schedule planning empowerment is to remove blame. Some of your
strong and well voiced. That is the responsibility meetings (or abnormal sprint termination) and team will hesitate to make important decisions if
of the customer/product owner. must do so wisely. Too many planning meetings they feel someone else will bully them over it later.
Being the customer on an Agile project can create chaos and nothing will get done, too In some companies being late with someone else
isn't easy. You will find yourself almost constantly few planning meetings doesn't provide the to blame is just as good as being on time.
in a leadership role. You must be actively involved customer opportunities to steer the project. Eliminate blame as acceptable by making it clear
in most discussions to make sure your vision is Scrum recommends no changes during the 30 day no one wants to hear it.
followed. You will often be put in the unenviable sprint. Extreme Programming (XP) recommends One of the biggest misunderstandings of
position of breaking hotly debated deadlocked short iterations of one week so an opportunity to team empowerment is that teams just become
discussions. You will decide when the team's change directions is never more than a few days empowered when you announce Agility has
code is ready for deployment. The most difficult away. You must listen to why a mid-iteration arrived. The team starts out following a set of
part will be setting priorities and making the hard change is needed and decide. rules designed to set expectations between team
decision of what will get done and what won't. Everyone needs to get used to distributed members. Most people don't like rules because
This is a far different role from signing the front leadership. The people most involved with a rules usually constrain. An Agile team sets rules to
page of a requirements specification. decision make it when they face it. There is some become free. Create simple rules focused on
If your customer is too valuable to spend evidence from the Lean Development people that defining the interfaces between team members. A
time with your software team then maybe you are putting off decisions till the latest responsible good example is the daily stand up/scrum
building the wrong software. Ask the customer moment when you know the most about the meeting. A rule to have it in the same place at the
what would be valuable and exciting enough to impact is a good idea. I prefer to simply say that if same time for no more than 15 minutes actually
make him want to be there with the team. you know enough to see a decision must be made frees up time for other things.
The role of developer/team member and believe you know most of the consequences Eventually you will feel the ebb and flood
includes programmers, architects, DBAs, testers, then you know enough to make it. If you find it of leadership. You learn to follow reluctant
all of us digital construction workers. Our wasn't a good decision later just estimate the cost leaders because you know they see something
responsibilities now include deciding how to get of going back to it and let the team negotiate with you overlooked. You get organized around
organized and what to do next. We will accept the customer. problems without prompting. You will understand
the responsibility of leading ourselves and looking Highly productive self organizing teams team empowerment enough to mold your process
for potential problems while mitigating risks. This are not easy they require discipline. Good to suit your project and company easily.
is different than just writing code as directed. leadership isn't doing what ever you want when If it seems like chaos could result you are
The manager/scrum master will have many ever you want. The team member with the least correct, unless you also change the way you
new responsibilities. The biggest change is just discipline has the most control by simply not communicate. With a single control point you only
watching the team interact and being there in the following the process. You must set and meet need a single completely informed person. Team
middle of it. If relationships are broken then the team expectations at all times. Other team members can go months without speaking to each
manager must repair them. If the customer isn't members must be able to trust you and know other so long as one person knows everything
leading with a consistent product vision the what to expect from you. and controls everything. Unfortunately even with
manager must act. An unsuitable customer can There will be decisions to make and they smaller projects this command and control model
lead a team in circles and get nothing done. A don't always get made well. Decisions being breaks down quickly. You must eliminate barriers
developer that breaks the process can slow the made by whoever gets there first can cause to communication for Agile to work. No one
entire project down. Replacing customers or significant amounts of disharmony. Accept that works alone anymore.
decisions will need to be made. Accept that you

One dozen Agile words: Iterative planning, honest plans, project heartbeat, working software, team empowerment, and daily communication.
About the Author

Copyright 2009 Don Wells all rights reserved.

http://www.agile-process.org/team.html 1/1
25/9/2017 Daily Communication

Daily Communication

The team sits together, hopefully in a large


of granularity and frequency. It is important to
open space that promotes continuous communicate within the proper granularity. Don't
communication between everyone everyday. By waste bandwidth by getting too detailed in front
everyone I mean developers, managers, business of the wrong audience.
people, and even customers. Everyone talks face If you find yourself explaining details at the
to face every single day. That is what daily higher level ask yourself why? If you feel the need
communication means and is essential to team to explain you may be trying to justify your
empowerment. actions, so don't. Honest plans accept honest
Many Agile processes have a stand mistakes, learn from the mistake, make a new
up/scrum meeting everyday. One meeting with the plan, then move on. Remove blame from your
entire team can eliminate much miscommunication project so that everyone speaks freely and
later. Setting a consistent time and place helpsopenly. You don't need an excuse for making a
make the meeting happen and adds to the feeling mistake you just need to learn from it.
of a project heartbeat. During the daily meeting One important communication channel
everyone answers at least three questions; what omitted from the flow chart are the walls that
did you do yesterday, what will you do today, and
surround your project space. Post large charts
what blocks your progress. Let this be an honestthat can be read from a distance to encourage
plan for what you will do today. change without bullying. Post designs as Agile
When you keep the meeting short you models on white boards or Agile documents. The interactively. Make a customer part of your
won't have a problem getting people to walls of your projects space can communicate project team.
participate. Scrum has rules about who can speakhonestly and neutrally if you use them well. On a traditional project we do our
at this meeting. The customer/product owner, Count how many people are on the analysis up front as a specified activity with an
developers/team members, and manager/scrum project, now communicate like a group that size. end date. The result is a project milestone called
master talks, everyone else is welcome to listenEven a project in a huge company can the requirements document. This document is
and take notes. People outside of the team like to
communicate like a small start up among approved by the customer as correct and
show up and drop stressful deadlines in these themselves. Communication efficiency drops off complete. Now you may start building. The
meetings. You may need Scrum's rule about who rapidly with increasing distance so get everyone problem with this is that we often encode our
can talk if management uses this meeting as a together. Being able to see meetings and requirements in a language no customer should be
convenient way to lecture to the entire team gatherings occur and eavesdrop as needed boosts expected to learn and understand. Signing off on
instead of a give and take communication communication. Hermits don’t share, communities a document written in a language you don't
as intended. are based on sharing and being near each other. understand is just as valuable as you expect.
There is more to owning software than Instead sit together and talk about what you want.
just paying for it. Intellectual property is only I often hear people criticize Agile
valuable if you understand it, can modify it, or processes because the expert's time is way too
reproduce it as needed. People are not valuable to be available. They often speak with
disposable, they are needed to continue owning anger and suggest customer representatives as a
the intellectual property you are investing in. viable alternative. My thoughts are always the
Allow everyone to talk to everyone else to avoid same; if the return on investment (ROI) is so low
loosing your competitive edge. Keeping people that you can't afford spending an expert's time
isolated doesn't just slow down your development you are solving the wrong problem.
process, it throws your intellectual property away. You will also be adapting your process to
"The customer didn't know what he your project in an iterative way. On a regular and
wanted" is a common excuse for project failure frequent basis you will talk about your project
and it is invalid. The customer knows exactly and corporate culture to figure out how the
what he wants; a solution to the problem at hand. process needs to change. These meetings are
If the project fails because the wrong software called retrospectives and are a very important
was built it isn't the customers who are at fault it is part of the iterative process. Schedule a
This flow chart shows feedback loops or the developers. Developers are responsible for
retrospective after each iteration or at least every
channels of communication recommended by asking the right questions until a clear picture of
other iteration. Ask team members what needs to
Extreme Programming (XP) you should have the problem and a good solution is found
be improved and what worked well. Also ask
many of them on any Agile project. These
what is extra process baggage that can be
communication channels are arranged in a spiral
eliminated.

One dozen Agile words: Iterative planning, honest plans, project heartbeat, working software, team empowerment, and daily communication.
About the Author
Copyright 2009 Don Wells all rights reserved.

http://www.agile-process.org/communicate.html 1/1
25/9/2017 Working Software

Working Software

Very important to Agile projects but often Working software is an Agile theme that
overlooked is getting working software done affects everything you do. You will set a project
regularly and frequently. The definition of working heartbeat, but unless you produce working
software may vary slightly between projects, but software each and every iteration your heart beat
not much. Working software is fully integrated, won't be meaningful. Honest plans are only
tested, and ready to be shipped to customers or possible if you have honest estimates based on
deployed into production. That doesn't mean you done meaning finished and working. Iterative
tried it a couple times and it ran without aborting. planning adapts to changes, but good changes
It means you created unit tests, QA tests, and only come from customers looking at, and trying
actually looked at output to prove it works. It isn't out a working incremental version of the system.
as difficult as you think. In fact some teams A big part of your project heartbeat is delivering
deploy new software into production every single working software into production regularly and
day. frequently.
When we were managing our projects by Take your iteration end seriously. If you
activity we needed a way to guard our progress. are using one week iterations it can be tempting to
The people who finished an activity like analysis just push unfinished work into the next iteration. If
might not participate in design or coding. So we you find yourself approaching iteration end with
safe guarded all progress by creating extensive several unfinished stories the right thing to do is
documentation of what was decided and what get your team together and decide which stories
how much is working right now. You can't
was done. We had people with authority sign the could be finished if you work together on them. consider the project half done if all you have is a
front page to verify our efforts were going in the Your project's velocity is a measure of how much
design document. This means you will need to
right direction. software you got working, not how much you
iteratively deliver working software and
An Agile project has all activities going on promise to have working next week.
demonstrate that it is fit for it's purpose. Anything
all the time as needed. We can't use documents When we produce working software in else isn't considered measurable, predictable
with signatures to guard our progress. Instead small increments we are no longer locked into a
progress.
Agile teams rely on automated tests and working minimum cost to get return on investment (ROI).
Working software ready for production
software to safe guard progress. We show We don't need to spend the entire budget (usually
release is easy when you have automated unit
working software to our customer/product owner with overruns) to get something back from our tests, automated acceptance/QA tests, and a one
often and accept changes to ensure our efforts project. We can stop when ever we think we button build that runs them in a reasonable time.
continue in the right direction. You can't empower have done enough or a higher priority projects Your customers don't always know the best way
your team to find its own solution using comes along. how to solve their problem, help them by
documents with signatures, you need the intense Measure your progress honestly. If
demonstrating working software frequently.
feedback that working software provides. software is what you intend to deliver than count

Agile-Process.org home | The Paradox of Process | About the Author


Copyright 2009 Don Wells all rights reserved.

http://www.agile-process.org/working.html 1/1
25/9/2017 The Paradox of Process

The Paradox of Process

An agile process creates plans as needed


and allows teams to self organize directly around a below shows the number of unit tests for the
problem. We must trust our process to keep our EarlyPay project at InStream Financial Services.
project on track, but there is a paradox It was a large system that didn't have unit tests
associated with any process: If you don't use your yet. We added tests when we added new features
process it can't help you; if your process doesn't and fixed bugs. After a year there were no bugs in
help, you won't use it. production anymore. The big pay off came after
I use a personal digital assistant (PDA) or two years when we had complete coverage and
handheld organizer as a metaphor. You want your could confidently redesign the system. We
PDA to alert you every time you have a meeting. simplified and removed about one third of the
But right out of the box that PDA won't alert you code while maintaining a perfect record of no
to anything. You must move all your appointments production bugs.
onto it. But even more than that your PDA comes Many of the rules and practices of Agile
The obvious consequence of the paradox
with a hidden process: You must constantly keep processes seem like a waste of time when you
of process is that when you begin a new process
it up to date. You must enter every appointment start them. It takes time and patience to get to a
it seems totally useless and a waste of time. You
with out fail. If you don't it will fail to remind you. point where they begin to help you in unexpected
need to have faith and really use the process until
A PDA is a tool that helps implement the ways.
it begins to return on your investment.
hidden process of writing down every Unit testing is a prime example. The graph
appointment in one place and then checking for
appointments regularly. You could use a pencil
and a paper calendar to implement that process
and get most of the benefit. It's that hidden
process that's important, not the implementation.
People have told me their software process is
Rational Rose(TM). Rose is a UML tool, not a
process. Installing an automated build tool instead
of a real continuous integration process is another
common mistake. Never confuse having a tool
with actually having a process.

Agile-Process.org home | Models are Paintings | XP guided tour | About the Author

Copyright 2004, 2009 Don Wells all rights reserved. Rational Rose is a trademark of the IBM Corporation.

http://www.agile-process.org/process.html 1/1
25/9/2017 Agile Models are Paintings

Agile Models Are Paintings, Not Photographs.

Create a model to answer specific


questions, keep the answer short and concise. If
you think others could learn from your model you
can keep the document, but make it Agile. Saving
a document is an implicit agreement to keep it up
to date or destroy it. Restrict documents to one
page and post them on a wall. Then you can
easily update them by finding all the old versions
and replacing them with the new edition. If you
Models are useful as tools of discovery. thoughts and subjective point of view. So be
decide to destroy it, just pull down all the
The process of creating a model is just as creative, use a drop shadow to indicate more
obsolete pages and throw them out.
important as the model itself, often more. When important objects, put a shinning star on newly
you are unsure about how to proceed you can created objects, try drawing little stacks to show
model to get your direction. When confronted collections. UML was created to document
with code that defies understanding modeling can complexity, not expose it. Instead of the typical
help. Models include flowcharts, class diagrams, class hierarchy diagram try an instance diagram to
interaction diagrams, UI mock ups, etc. There are find complexity. Don't let conventions stop you
many different model types well suited to learning from communicating your thoughts rather than
new things about your project. details.
Models can become very anti-agile if you Don't spend time getting everything just
let them. Don't think of models like a photograph, right. You certainly don't want to spend time
instead consider them like a painting. Above is a getting all the lines straight. When modeling ask
photograph of the night sky. It correctly notes the yourself a simple question: How much effort
position and size of all the stars. Above right is a should I put into this model if it will be thrown
Van Gogh painting of the night sky. The artist is away tomorrow? That is how you know when
communicating something important about the you are done modeling.
sky. Van Gogh is telling us his impression of what CRC cards can be used two different
a night sky means. This is exactly how you want ways. Originally a card would have class name, Depending on your project you may also
to approach modeling. responsibilities, and collaborations. The second need some larger documents for validation or
"If you understand your painting way is more Agile. Get your team together and standards compliance. Those are not Agile
beforehand, you might as well not paint it." use cards as instances instead of classes. Move documents but need to be created and archived
Salvador Dali could just as easily have been the cards around with your hands to show anyway. Don't use your Agile process as an
talking about Agile models. Create them to messages and interactions. Stack them to show argument to avoid creating them. Create them
understand. Printing huge models generated by a collections. Overlap them to show collaborations. just-in-time and as efficiently as possible.
tool from code is another way to view your code Designing this way uses the artistic right side of Having a model printed out with straight
but it isn't an Agile model. A painting of your your brain, the side that understands relationships lines and square corners in a specially labeled
code that highlights important objects and and movement. You will find that you don't need binder does not mean you have a good design, it
interactions for a specific operation or process to label more than a few cards to tell them apart. just means you have a well documented one. I
step is an Agile model. Sometimes the activity of modeling can be have found that a huge UML document is an
The best modeling tools are an old more important than the model. Agile CRC cards excellent way to hide a complex design. Agile
fashioned fountain pen and an artist's blank sketch are an expression of that. You model together as modeling can help discover areas of complexity
book with pages that pull out. These simple tools a team. At the end the model disappears but the and eliminate them. You can use tools that create
let each model be unique with a language of its understanding, insight, and team collaboration diagrams as an alternative to browsing source
own. Some things will be exaggerated, others remains. Designing this way is more dynamic and code, but not as an alternative to Agile modeling.
omitted. A model should express the modeler's object oriented than static versions.

Agile-Process.org home | Agile Process Proverbs | About the Author

Copyright 2009 Don Wells all rights reserved.

http://www.agile-process.org/model.html 1/1
25/9/2017 Agile Process Proverbs

Agile Process Proverbs

Here are some things to think about. I Documentation/Models Process


have summarized them into pithy sentences, Agile models are paintings, not photographs. If you don't use your process it can't help
added bullet points and called them proverbs to The creation of a document is an implicit you; if your process doesn't help, you won't use
make them sound important. Don't be fooled. agreement to keep it up to date or destroy it. it.
These are ideas, not rules. Ideas to help you think Without the use they are just cases. The one essential ingredient that turns
about making your current process, what ever it Ideas move faster than documents. repetitive development into iterative development
is, a more Agile process. is feedback.
Customers/Product Owners If less doesn't work try more, if more doesn't
Iterative Planning There is more to owning software than just work try less, if neither works stop doing it.
The best way to meet customer objectives is paying for it. If 10 people slow the project down by just
to explicitly schedule their completion. Negotiating is basic to being human, don't 10% each it will take twice as long.
Trying to catch up is the fastest way to get give it up that right before the project even begins. If it isn't fun you're doing something wrong.
further behind. A hammer without a good process is a sore
The changes you get late in a project are Managers/Scrum Masters thumb waiting to happen.
very valuable because you paid the most to get Challenge your team intellectually or they will Process is something you do, not something
them. challenge themselves in ways you wouldn't have you do to someone.
One third of your requirements will represent chosen. The person least likely to save time is the
two thirds of the project's value. Demanding estimates change seems like person in the biggest hurry.
Showing someone something they taking control, but you lose control by not making The least disciplined team member has the
can change is helpful, showing something they a decision. greatest control over your process.
can't change is spiteful. People don't scale, teams do.
Iterative development gives you a few "oh The only way to guarantee bad decisions is Simplicity
drat"s during development instead of one big to make all of them yourself. Simple is subjective so judge it subjectively
"AW SHIT" at the end. as testable, browsable, understandable, and
Developers/Team Members explainable.
Honest Plans Big changes cause big problems. The best way to guarantee it costs too much
An estimate not based on a measurement is Egoless programming doesn't work; expand is to add something you don't need.
a guess; an estimate based on a measurement is a your ego to include everyone's code. If it takes you too long to refactor than you
prediction. Don't guess, measure it. are not refactoring enough.
He who does the work sets the estimate. Don't theorize, try it. A simple solution always takes less time than
If software is what you want to deliver then Everything you did today can be done over a complex one.
measure progress by how much you have tomorrow in half an hour and be better. If you always try the simplest thing next you
working right now. Measure twice cut once saves wood, but will always work as simply as you can.
software isn't made of wood.
Team Empowerment The best way to get help is to offer help. Design
The most important thing on a project is Who ever finds a problem knows enough to
good leadership; the least important thing is who Testing design a solution.
leads. The first test is the hardest. Flexibility isn't building for every imaginable
If you can see a need for leadership you Your test suite is more valuable than your possibility; it's having as little to change as
know enough to lead. code. possible.
When you only have responsibility you will The harder the test is to create the greater A good design can be explained to someone
know worry, but when you also have authority your savings. else using four blank cards.
you will know opportunity. Where there is a will there is a way to test. A design which doesn't meet business needs
The organization of your team will be If you want a good suite of tests next year is bad, no matter how pretty.
reflected in the code. (Conway's Law) you must start collecting them today. UML was designed to document complexity,
Calm and relaxed plus confident yields not expose it.
decisive.
Count how many people are on the project, Finish your guided tour with Links and Books.
now communicate like a group that size.
Hermits don’t share, communities are based
on sharing.
Agile-Process.org home |Links and Books | About the Author

Copyright 2009 Don Wells all rights reserved.

http://www.agile-process.org/proverbs.html 1/1

Vous aimerez peut-être aussi