The agile approach to software development has difficulty succeeding in big companies. This seems odd and almost counter intuitive but is simple to explain.
Big companies establish lots of policies and procedures. They are constantly in search of the cookie-cutter approach to solving problems and building things. Big companies are focused on performance and scalability. Just get it done — reliably and repeatably. Scale it up so lots of money pours in.
Ideally, they want to make the work output simple, routine and predictable. As they come closer to this ideal, they make fewer mistakes and keep customers happier. After all, everyone loves predictable and reliable!
Unfortunately, agile development is not simple, routine or predictable. This results in a fundamental inconsistency between what companies strive to be and what they need to do to be agile.
No one is doing anything wrong or trying to sabotage agility. They are doing what they have been trained to do and that training is killing teams trying to be agile.
The solution? We’re supposed to be agile, right? There is no procedure for solving this problem.
The approach and the ultimate solution are situational.
There needs to be compromise — give and take. The big company needs to offer some breathing room, some flexibility. Give a little and let the agile team show what it can do.
The agile team needs to accept a little more discipline and structure that it would like. Adapt a little and show the big company what you can deliver.
Be agile. Make it work. Got any ideas? Leave a comment.