Since the creation of the agile manifesto in 2001, agile practices like extreme programming (XP) and scrum have grown in popularity with startups, but haven’t done so well in large companies. Some argue that the reason for this is that agile methodologies were actually created for small teams in the same physical location, and therefore isn’t as relevant in the highly distributed product development teams that can be found in most large enterprises.
While agile does work best for small, collocated teams, I recently came across a book titled Scaling Software Agility: Best Practices for Large Enterprises, which argued that there are seven agile practices that can be successfully applied across organizations of any size. I thought of sharing all seven, but decided for the sake of brevity to discuss my top five :). They include:
- The Define/Build/Test Component Team: Instead of having the database team, the mid-tier team and the web/mobile team come together to deliver a feature, create a feature team made up of database, mid-tier and front-end engineers, as well as other team members (designers, product managers, e.t.c) needed to define, build, test, and deliver value to the customer. Amazon’s “two pizza” teams are a great example of this practice at scale.
- Smaller & More Frequent Releases: Move away from the “big bang” release that is done once a year to smaller and more frequent releases. This enables your product teams to respond faster to customer and competitive dynamics. Facebook is a good example of this practice, with its “move fast, break things” mantra.
- Concurrent Testing: All code should be tested code. Test cases should be written up before actual coding is done, and checked-in code should be subjected to a barrage of automated tests. Not sure about which big company is a good example here 🙂
- Continuous Integration: The product team is not allowed to say coding is done until the code is in a releasable state. This means that it can quickly and easily be deployed to a production-like environment, using a deployment pipeline that subjects it to a series of automated tests. Google seems to have been doing this for a while now.
- Regular Reflection and Adaptation: A company that isn’t learning is a company that is dying. Very regularly, product and business teams need to reflect on what’s working and what needs to be improved, and take steps to implement the needed changes. Our fearless CEO is definitely helping us lead this charge at Microsoft! 🙂
These five practices are mostly self evident, and aren’t really a silver bullet. Teams and companies (especially large ones) that adopt them will still face all kinds of challenges as they try to innovate and deliver value to their customers. Notwithstanding, embracing these agile practices will probably lead to faster product development cycles, with less waste (building stuff that no one wants), and empowered teams. Which company doesn’t want that?
Image by info.110consulting.com