Software Craftsmanship

Go Back

Agile and XP Values

Posted by Tom Spencer on 2019-12-24

Agile

The Agile methodology exists to allow an iterative development process that is “Agile” in terms of the expected outcome of the work. For the majority of projects, be they one off projects from clients or ongoing work on core products of a company, the requirements frequently change dependent on what the stakeholders require and a rigid system doesn’t allow this. The large projects are broken down into user stories, which are typically quite small units of work, that can be completed by a single developer, with each one being individually costed to enable prioritisation.

feedback loops

Extreme Programming

Subset of agile programming with similar goals, but as the name suggests takes things to an extreme. Giant emphasis on the customer - with a representative of the customer being involved in every single step of the development cycle. They write the stories with help from developers, they negotiate which stories are to be completed in a certain cycle, they participate in the testing, they are available to talk to during development (as user stories are rarely completed), and they sign off on any compromises that need to be made wrt failing acceptance tests. All production code is pair programmed, any stories where the estimates are uncertain should have “spike” solutions created, where somebody will gain a better understanding of the work required through hacking a solution together