At first sight there might seem to be a gap between doing software architecture and what lean is emphasizing. Prima facie Software development seems to be a one person activity that after doing some UML-charts, hands over these artifacts to the developers that needs to implement the program. This at least seems to contradict the principle about eliminating waste (chapter 1 in "Poppendieck:Lean Software Development"). If this is indeed a waste we need to address this.


The idea behind LSA is to adopt the thoughts in Lean Software Development to the field of Software Architecture. I.e. that is to make software architecture follow the same principles as LSD. The rationale is that Software Architects often are more influential on the development process than "ordinary" developers and it might be argued that these tasks are part of what software architects actually do:

  • Eliminate waste.
  • Amplify learning.
  • Decide as late as possible.
  • Deliver as fast as possible.
  • Empower the team.
  • Build integrity in.
  • See the whole.

Proposed solutions

The first thing is to emphasize that software archicture should always be a process that is done by the whole team and not just one single individual (which is the way most people seems to see software architecture). If the team is involved the immidiate benefits are that it amplifies learning and empower the team. But it also reduces waste as the need for handover is lowered because the whole team is part of the process. Furthermore the teammembers might be the best source for detecting the bottlenecks in the application based upon empiriacal data and not just best practices.

Does this mean that the software architect-role is redundant ? No, because it is often beneficiary to have an individual that is in charge of the process and helps as a mentor for less-experienced teammembers.

Copyright Martin Falck-Hansen, 2005