Agile, Software Craftsmanship and Extreme Programming

Written by: Tom Spencer

Jun 08, 20202 min read

Agile

The agile manifesto was formed in 2001. Agile was a response to a long history of waterfall methodology, planning, requirements and testing in a stagewise manner. This rarely worked as expected. Solutions were sometimes never delivered or not appropriate.

Key proponents of agile included:

  • Kent Beck who invented TDD
  • Martin Fowler (author of Refactoring: Improving the Design of Existing Code)
  • Ron Jeffries
  • Dave Thomas (author of Programming Ruby: The Pragmatic Programmer's Guide)
  • Robert C Martin (Uncle Bob)

The proponents of agile summarised 12 principles but the manifesto starts with four statements:

  • Individuals and actions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Software Craftsmanship Manifesto

  • Not only working software, but also well-crafted software
  • Not only responding to change, but also steadily adding value
  • Not only individuals and interactions, but also a community of professionals
  • Not only customer collaboration, but also productive partnerships

The Software Craftsmanship movement values customer collaboration but also wants this collaboration to move beyond the back and forth of customer collaboration which can move into cyclical interaction through an emphasis on expertise. Expertise needs to play a role in delivering quality. Agile software is about change while the craftsmanship manifesto is about giving more value to what the profession offers.

Extreme Programming

XP is similar to agile in that it is focused on development. It values Continuous Integration with collective codebase tests to check that the code works correctly. In TDD we write tests before writing production code and follow XP principles. One XP principle is to get feedback on code as both as possible. In XP we follow pair programming with a driver and navigator. Here the driver is the pilot thinking about the code while the navigator keeps an eye on the big picture and checks the code. The pilot and navigator swap roles every period in order to stay fresh. TDD is a form of feedback loop as is pair programming. Here the pair can tell you whether your code is good or not so good. The best feedback is from the customer so with XP programming we are able to tighten the feedback loop to get feedback at every part of the coding process.