We’ve Been Approaching Things in the Wrong Way

April 3, 2012

Agile development is all about using multi-disciplinary teams to continuously deliver working software in the form of business features at the end of every sprint or iteration. This means prioritized features, not horizontal architectural layers. By that I mean that we don't build out all of the layers up front in one shot, speculating on what we might need to have in place to support future business features. We design and build what is required for the features that we are working on today.

Likewise, the merits of the empowerment model espoused by agile development have been known for some time in the business world, albeit largely ignored. Most organizations today strive for central control and compliance, whereas an effective empowerment-oriented management model assumes that those on the front line can not only call their own shots effectively, but are better able to respond more rapidly to changing competitive conditions.

The right management model requires that front-line teams have autonomy and critical information available to them to make effective decisions. There is a need to invert the organizational pyramid – or at least tip it on its side – so that business units who are focused on profitably serving and satisfying customers’ needs are being informed and supported by a leaner organization that is not imposing onerous reporting and control mechanisms on the rest of the organization.

If you compare and contrast our traditional approaches to software development and managing organizations, we’ve managed to get things backwards.

Our traditional way of working is to build horizontal layers of software and work in hierarchical, vertical organizations:

When we should be building vertical slices of functionality and working laterally as an organization: