The differences in how small companies and large enterprises operate is staggering. Small companies usually make decisions quickly — not because they’re smarter (believe me, they’re not) but simply because their processes are simpler. There are fewer people and systems involved. In a small company, the number of interconnections among people and systems is relatively small, and readily managed.
Contrast that with a large enterprise where the number of people and systems is enormous. No one can fully understand all the interconnections. Any system change could have — and often does have — unintended consequences. Such complexity demands additional checks and balances across systems to avoid problems.
Many enterprises go too far. Obstruction of progress is the result.
Here’s what often occurs. Problems happen — e.g. lost or corrupted data, security breaches, system synchronization issues, failed projects, customer complaints — prompting the company to implement new controls. Each time there’s a problem, a new control is implemented. Of course, new controls require hiring new people and, in some cases, creating whole new departments to manage the new controls.
If a new department is created, it will seek to justify it’s existence by requiring even more controls. And so it goes. Projects end up spending excessive time on administrative overhead. Trying to introduce agile software development into such situations is futile.
Before adopting an agile development approach like Scrum, Kanban, Lean or XP, get the house in order.
- Eliminate excessive paperwork (including electronic forms).
- Combine redundant systems such as the use of two defect tracking systems or multiple overlapping databases.
- Stop using project phases and gates to block projects until phase conditions are met (overlap phases instead).
- Stop requiring meetings to review and approve all major decisions (do it electronically).
- Don’t require managers to approve all specifications (free up managers to solve problems and clear obstacles).
- Forget multitasking — assigning multiple projects to everyone giving the appearance of lots of activity — create a backlog instead.
- Avoid constant battles over project priorities by setting and managing strategic priorities from the top down.
- Tear down organizational structures with so many divisions and silos that nothing gets done without multiple approvals.
- Decommission elaborate project tracking systems where the information collected isn’t being used.
- Set a goal of no more than 15% administrative overhead on any project.
You get the idea. If the people, the systems or the workflows are not adding value, eliminate them. The company simply cannot be agile in the midst of all that overhead and redundancy.
Tip: Want to minimize future overhead? Institute a simple rule. If anyone wants to implement new rules, procedures or forms, they must identify offsetting productivity improvements. Simple and effective.