|
Development Process
......................................................................................................................................
The Planning Process
Our planning process allows the "customer" to define
the business value of desired features and uses cost estimates
provided by the programmers to choose what needs to be done and
what needs to be deferred. The effect of the planning process is
that it is easy to steer the project to success.
Small Releases
Our teams put a simple system into production early, and update
it frequently on a very short cycle.
Metaphor
Our teams use a common "system of names" and a common
system description that guides development and communication.
Simple Design
Our process builds the simplest programs meeting the current requirements.
There is not much building "for the future". Instead, the focus
is on providing business value. Of course it is necessary to ensure that
the client has a good system design. This is brought about through "refactoring",
discussed below.
Testing
Our teams focus on validation of the software at all times. Programmers develop software by writing tests first, then software that fulfills the requirements reflected in the tests. Customers provide acceptance tests that enable them to be certain that the features they need are provided.
Refactoring
Our teams improve the design of the system throughout the entire
development. This is done by keeping the software clean: without
duplication, with high communication; simple, yet complete.
Paired Programming
Our programmers write production code in pairs when possible. Paired
programming has been shown by many experiments to produce better software
at similar or lower cost than programmers working alone.
Collective Ownership
All the code belongs to all the programmers. This lets the team
go at full speed, because when something needs changing, it can
be changed without delay.
Continuous Integration
Automated processes integrate and build the software system multiple times
per day. This keeps all the programmers on the same page, and enables
very rapid progress. Perhaps surprisingly, integrating more frequently
tends to eliminate integration problems that plague teams who integrate
less often.
On-Site Customer
Projects are steered by a dedicated individual who is empowered
to determine requirements, set priorities, and answer questions
as the programmers have them. The effect of being there is that
communication improves, with less hard-copy documentation - often
one of the most expensive parts of a software project.
Coding Standard
For a team to work effectively in pairs, and to share ownership
of all the code, all the programmers need to write the code in the
same way, with rules that make sure the code communicates clearly.
|