Long before we thought about agile software, programming teams were finding which patterns correlated to greater success. These patterns and practices have been proven over many decades at organizations writing some of industry’s most complex software. First catalogued as Extreme Programming (XP), these practices have also come to be referred to as Agile Engineering Practices, Scrum Developer Practices, or simply Agile Programming. XP goes into the most depth concerning how programmers can keep themselves and their code agile. The XP practices have been embraced as enablers for all of the popular agile practices and lean approaches, including Scrum, SAFe, and Lean Startup. The community of developers passionate about these practices lives on in the Software Craftsmanship movement.
The core agile software programming practices are the following:
- Test-first programming (or perhaps Test-Driven Development),
- Rigorous, regular refactoring,
- Continuous integration,
- Simple design,
- Pair programming,
- Sharing the codebase between all or most programmers,
- A single coding standard to which all programmers adhere,
- A common “war-room” style work area.
Such practices provide the team with a kind of Tai Chi flexibility: a new feature, enhancement, or bug can come at the team from any angle, at any time, without destroying the project, the system, or production rates.