Agile Software Construction

It can come as a surprise, but keeping releases small can actually be a difficult challenge. This can be because organisations are used to larger releases and try to focus on these, customers expect fully functional releases and so want larger releases or because the practicalities of releasing software to an end user may make it difficult to do regularly.
On one recent project I led, we could not make many small releases to the actual end users, because they were working with an earlier version of the software in the "real" world. They were not particularly computer literate and would require training on any new features. There were over 250 users so doing this at very regular intervals was not an option. Instead, representatives from regional user groups throughout the UK were selected from regular release meetings. At each meeting, they were given the new release and the new features in the release were worked through. These sample users would then use the new release for a period of time to allow a range of users to provide representative feedback. This feedback would then be used to guide following releases. This allowed regular monthly releases to be created without interrupting the actual work being done by the majority of users.
So XP states that you should keep your designs as simple as possible, but still implement the functionality required. Well that's easy then! Well actually no, creating simple design...