eXtreme Programming Values
Often I heard about “new agile ways” used when making software product. Well, being a “fan” of XP I’d like only to show you that some common sense practices can incredibly help you making better software artifacts.
Extreme Programming, one of the most used (…and maybe badly abused?) discipline, has a really practical set of values it stands up on:
Let me quickly show you some practical aspect of each of them.
The big part of the problems that compromise a project are tied to a lack of communication. This lack is among developers, managers and - more importantly - customers. XP try to eliminate this lack by providing stand-up meeting, pair programming, task estimation, unit testing (yes, code too is “about communication”!).
Simplicity is not easy. Period. As a developer (or analyst, or what-else…) don’t forget the following mantra: Do the simplest thing that could possibly work.
It’s worth to notice that simplicity is strongly related to communication: if you do/implement simple artifacts, it’s easier to communicate on them with your partner. Communication reinforce the simplicity too: if you communicate clearly all stakeholders will gain a clear understanding of the problem, and then someone can propose a simple solution.
By its own nature feedback is useful only if it “comes back” quickly. In XP it works at different levels:
- unit tests ? feedback on object logic
- customer’s stories (see them as simplified use cases) ? understanding of the problem
- functional tests ? state of the whole system
Again we can see the links among the other values: more feedback ? easy communication ? system is simpler to understand (and so to test.)
Often developers don’t make change on the system not because it is “an hard thing to do” (after all they know the system they produced), but simply because it’s “better to not touch it”.
With a good test suite you can practically make any change and see what happens: your courage to change/improve/play-with things is supported…and is really valuable.
See how well the previous values support courage:
- communication opens the door for more valuable (and high risk) ways to make your code working, and generally this can bring you to high-reward opportunities.
- simple designed system can be easily changed/improved because with that you should be more courageous to afford such systems
Of course “good intentions” talks are not really useful if we don’t translate them into a practical set of habits. So I keep you a little promise to continue on this way talking (in the future…) about the principles of XP.
Anyway see how a simple set of values, spiced with good practice, can incredibly help you in designing and/or developing good solutions.