Software Factory Best Practices
Amazon, Google, Facebook, and Netflix are just a few of the giants among the many organizations that have disrupted the application development and deployment paradigm. Despite them being from very different industries and using their applications and infrastructure for unique and abstract purposes, there are a few common themes that underlie almost all of these journeys.
Many of these organizations gradually built up to their own mix of these practices, which have now become common-place. While it took most of them close to a decade to fine-tune their approaches, knowing about them can give any organization looking to make a similar leap a clear head start.
A paradigm shift with devops methodology
One of the most common trends seen in many organizations that are now leading in software factory best practices was a shift from a traditional waterfall-based development methodology to one that is more dynamic.
Each organization has adopted this change to varying degrees, with some implementing a full-blown backlog based Agile practice. Nordstrom, a clothing and fashion retailer that had been around for over a century, realized in the late 2000s that it was gradually becoming irrelevant with most competitors catering to online markets.
Nordstrom’s development team took on a project which spanned more than two years to come up with an in-store clienteling app in 2011. Once the app was ready, the team realized that it was a few years late to the market, with competitors innovating in many ways.
This realization led the Nordstrom team to rethink their approach. Pioneered by its customer mobile app team, Nordstrom turned a new leaf in its development approach. Some of the changes it made included creating many small teams and focussing their efforts on a single backlog. This reduced bugs increased throughput and allowed it to release every month instead of twice a year.
The story has been the same with many of the other big names in the industry. Amazon’s agile approach has allowed them to perform deployments every few seconds, while Etsy, a clothing store, performs more than 50 deployments a day on their online application. These are all direct results of a switch to an agile approach.
Leverage the power of the cloud automation
Embracing the cloud may seem obvious to any organization looking to develop an application today. Still, almost a decade ago, it was a make or break decision for many companies like Amazon, Sony, and Netflix.
One of Amazon Retail’s most significant pain points was its’ infrastructure costs. The need to accommodate seasonal spikes in user activity and lead time required to scale up dedicated servers caused it to acquire almost 40% more infrastructure, which remained unutilized regularly.
Amazon Retail’s switch to AWS cloud gave it the freedom to scale up and down incrementally as and when required, not only saving on infrastructure costs but also reducing deployment time. Amazon’s agile teams were now able to deploy whenever and to whichever servers they wanted.
Netflix and Sony Pictures are both companies that transitioned almost entirely to online sales from physical media. Their current success is no secret, but both of these companies would not have made it if not for their timely switch to cloud technologies.
Sony Pictures since adopted an agile methodology and continuous delivery to reduce its deployment cycles from once every few months to every few minutes. Adobe, which used to sell packaged software, is another winner in the switch to cloud technologies. Leveraging the cloud has allowed them to increase sales by offering their software through many new sales models.
Small modular scaled agile framework teams are everything
Not all teams are made the same, and no one size fits all organizations. But, getting your teams sized correctly and having the right people in them will make all the difference.
The first and most important requirement is that each team comprises of at least a few members with expertise in full-stack and the scaled agile framework methodology in use. This can be achieved by acquiring resources like in the case of WalmartLabs or reorienting your existing teams.
Another important requirement is that functional silos are eliminated. Each team should be involved in all aspects of the lifecycle, from design to deployment, so that they are entirely responsible for the code they deploy. This will reduce handovers from team-to-team and, in turn, reduce lapses and lag.
Building the DevOps approach into the heart of each team is essential. DevOpsDays, open labs, lightning talks, and breakout sessions are just some of the events that can nurture such an approach. Many of these industry leaders have expanded their events beyond their own teams to spread awareness about the agile and DevOps approach.
Building a resilient culture on an organization-wide scale is essential to sustaining a successful Software Factory. Everyone, from the top management onward have to commit to eliminating a culture of blame and embrace sharing the responsibility of both success and failure. This will encourage teams to take risks and innovate, leading to leaps and bounds in progress.
Automation is an essential part of every successful development approach. Automating routine tasks like quality assurance, code check-ins, builds, and continuous integration can free up resources for innovation.
Many areas of testing, like integration testing, interface testing, regression testing, and performance testing, can be automated with AI-driven tools. This will not only reduce bugs in the short term but also help to eliminate technical debt, which could otherwise cause substantial financial damage and tarnished reputations.
Netflix’s success led to the creation of the Simian Army, which is a suite of automated tools created by Netflix and powered by the open-source community to stress test and monitor cloud infrastructure. The tools have since evolved into many branches, but the idea stands strong and is used by many teams.
Facebook is another stellar example of making the most of automation. It’s bi-weekly app updates across many platforms would not be possible otherwise.
Continually improve processes
Last but not least, processes are the lifelines that keep successful software factories running in shipshape. I’m not referring to the ones that add red-tape and keep any work from being done.
Having frameworks and guidelines set up for every aspect of the devops development cycle will ensure that every team member is aware of what needs to be done at each turn. An automated framework for collecting data and metrics can be the central source for decision making and early notice of impending issues.
The other important thing to remember is that all processes need to be continually improved. This will ensure that changes in business processes and the development approach are better monitored and controlled.
Having clearly defined processes will also ensure compliance where necessary. This is the experience of Fidelity Worldwide Investment, a finance giant that had to transform itself into a software factory to face modern challenges in the finance industry. Orienting their development approach to processes that enforced compliance standards saved them millions in potential damages.
These are just some of the software factory best practices that can help any organization to become an industry leader. While merely following them does not ensure success, it is vital to find a balance that works for your individual needs.