Re-conceptualisation of agile software development as a social learning system
Agile sometimes works, sometimes it doesn’t. What are the circumstances in which agile software development yields positive results?
It seems clear that it relates to the context in which Agile is applied, i.e. the kind of project or the organisational structure. So, if we divide the problem into two parts, the context on the one hand and the method (i.e. set of agile practices) on the other, how would we go about choosing the right set of practices for our software project? It requires an understanding of both sides, but more importantly the interplay of the two.
Many things have been said about Agile and why it seems “better” than other approaches. But an answer to the why often only considered the outcomes (i.e. project deliverables and measurable aspects to it). But how agile software development (ASD) achieves this isn’t well understood, researched and documented (i.e. the lack of conceptual clarity in ASD). However, if we are to chose an agile development method, understanding the how becomes crucial in order to know which actions and behaviours can positively contribute to the outcome.
So how does agile work? I create the hypothesis that agile is fundamentally about learning. More precisely about learning in a social system like a group of people (i.e. team) or an organisation as a whole (i.e. across and between departments). Agile fosters the flexibility of knowledge workers, in particular their ability to adapt and change intuitively, without explicit upfront planning and decision taking.
This adaptation leverages the tacit knowledge of people and builds on their understanding about the situation at hand. If we map this thought to actual method implementations (i.e. concrete practices in ASD), then my second hypothesis would be that the successful agile methods are the ones where learning is an explicit part of the method (i.e. agile retrospectives) or an emergent feature (i.e. planning poker as means to increase understanding) of a method component.
Wenger (1998) said that learning systems cannot be designed, only the structures that foster learning can be. For him learning is something “that happens”. So if we put ourselves into the shoes of an organisation that wants to adopt an agile approach to software development and assuming learning is a key ingredient to success, this raises a number of questions:
- Is there a set of key “learning” aspects to consider when evaluating different agile approaches or methods?
- Can agile practices be categorised according to their “level of learning” gained?
- Is it preferable to chose practices with a higher “level of learning”?
- What impact does the wider context, in particular the organisational structure and the project setup, have on the learning?
Learning, knowledge and social learning systems are very broad topics on their own. But I believe that looking at agile development practices through the lens of learning activities could help to better understand the methodological aspects to it.
Food for thought.
Wenger, E., 1999. Communities of practice : learning, meaning, and identity. Communities of practice : learning, meaning, and identity.