The value of standards over standardization
Recently, a Chief Digital Officer asked us for advice about standardizing on a single web framework. He was concerned because the organization’s marketing team had recently decided to use React (a web framework developed by Facebook) while several of the business units had standardized around Angular (a web framework developed by Google).
Large enterprises often experience fragmentation in web tools between teams
So, how do enterprises end up with multiple frameworks?
With this web fragmentation enterprises experience a number of challenges:
Productivity. Developers learning a new framework will experience a period of diminished productivity as they move through the learning curve. Developers re-incur this dip in productivity every time they begin working with a different framework.
Dispersed Expertise. Having multiple frameworks causes expertise to be spread thin across the enterprise. Bottlenecks occur when an expert in a particular framework is unavailable to help unblock a developer problem, while other experts in other frameworks may have capacity that could be utilized if they used the same standard technologies.
Interchangeability. Multiple frameworks prevent developers from moving fluidly between teams based on demand, availability, or interest. Instead they get locked into teams based on their knowledge of a legacy framework. Furthermore, there is little interchangeability of common functionality between teams, such as a reusable component developed for one product that can be leveraged off-the-shelf by another product.
Maintainability. Multiple frameworks create a long tail of applications with aging technology that fewer and fewer developers know or want to maintain. For example, a state-of-the-art Backbone application from 2011 may be an infeasible chore to maintain in 2018.
While fragmentation causes issues at enterprise scale, there are also issues with rigid enforcement of standard web frameworks:
Innovation. Mandating a single framework slows innovation by ignoring useful features in newer frameworks. Teams may push back against innovative design when what delights customers is difficult to achieve with the standard framework. We have also seen teams locked into a standard solution’s way of solving a problem (e.g, an ASP.NET Web Form as the standard pattern for presenting and order page) which makes it hard to see new, innovative ways of improving user experience.
Mismatches. The standard framework may not be the right choice for all types of applications. Angular may be perfect for a dynamic data visualization but perhaps overkill for a static page with little interactive functionality. As a result, developers have to shoehorn functionality into a single framework’s way of solving a problem.
Recruiting. Great developers are excited about learning, and many are willing to take pay cuts to work with the latest technology. Enterprises are competing with startups that offer learning opportunities and the ability to retool with new skills; with standardization they risk driving away some of the highest performers who want to learn regularly.
Lock-in. Selecting a single framework puts enterprise at the mercy of that framework’s maintainers. We have experienced entire features being put on-hold indefinitely or critical bugfixes going unaddressed for months.
We believe large enterprises can reconcile these competing issues with a hybrid approach that combines the benefits of standardization with the flexibility of multiple frameworks:
(1) Select a go-forward framework for all new development and review this choice on a regular cycle. Allow alternative frameworks to be evaluated and used for newer, more innovative use cases. This allows organizations to reap the benefits of standardization in situations where framework choice has little technical impact (e.g., account signup forms) but retain some flexibility for applications that need specific capability not provided well in the standard framework (e.g., real time, dynamic data visualization).
(3) Embrace end-to-end automation. Most importantly, build automated tests into everything teams create or change. This is critical for maintainability, and it is especially important for developers who will need to fix critical issues many years in the future when the standard framework is now legacy. Furthermore, a robust automated test suite provides guardrails for developers by catching unintended regressions in real time.
This approach prioritizes standards over standardization. Enterprises should focus on quality through baseline standards — modularized components, rigorous automated test suites, automated packaging, DevOps, monitoring, etc. — rather than a web framework. The decision between Angular or React is less consequential than the commitment to baseline standards. This commitment will enable enterprises to migrate quickly and effectively when the next innovative web framework comes on the horizon.