Architectural Neglect
Story Stovepipes
Agile Architecture
Conceptual Integrity
BUFD, NUFD or RUFD?
Keep Options Open
Tools
An Agile Toolkit
Low-Ceremony Tools
Programming Languages
Modelling
Automation
Choice of Tools
Skills
Criticality of Knowledge
Cross-Functional Teams
Testing (Again)
Coding
Learning
Attitude
State of Mind
Empirical Mindset
Attention to Detail
Discipline
Positive Engagement
Organisational Culture (Reprise)
Outroduction
Considered Adoption and Adaptation
Legacy: Another Kind of Inheritance
Summary
Charles Darwin
There are many sides to agile development, but it is all too common to focus on only one or two, depending on personal interests, job role, background, etc. A manager may focus on organizational and process aspects to the exclusion of technical ones, whereas a developer may have a complementary view. Different developers may focus on different details to the exclusion of others: one developer may value emphasis on a loosely coupled architecture but be less concerned by testing, whereas another may view agility solely in terms of unit tests and task automation. Each perspective is valid, but missing the other perspectives means missing the whole picture.
This talk focuses on six sides of agility, which notionally form the faces of a cube, and how they trade off against one another in different situations. Practices, organisation, architecture, tools, skills and attitude: each of these has different consequences and different
applicability depending on the context. For example, if a skilled team of developers wishes to adopt a more agile approach in a legacy project without tests, they are better off in the short term avoiding TDD and unit test coverage, and instead focusing on other matters of practice, tooling and architecture. By contrast, an unskilled team on a new
project are often well served by adopting a TDD approach early and forming a clear understanding of the architecture they are working in and on.
Kevlin Henney is an independent consultant and trainer based in the UK. He specializes in programming languages and techniques, OO design, patterns, software architecture and agile development. Kevlin has been a columnist and contributor for various magazines, including Application Development Advisor, Java Report and JavaSpektrum, and is currently columnist for Reg Developer, the developer channel of The Register. He is also coauthor of two forthcoming volumes in the Pattern-Oriented Software Architecture series.