Adopt new technologies when they allow your company to gain, maintain, or increase some benefit. Put a different way, don’t utilize a new language, service, open source component, library, module, or other technology unless you have good reasons and have considered the impact on the whole company, not just on the technical teams.
Benefits vs Risks
The general idea is that your company should adopt new technologies that provide tangible advantages. Often, engineering teams convince themselves that exciting new technologies might possibly be advantageous. It is important that engineers and companies learn about and experiment with new technologies, but they should integrate them into their products only when the benefits outweigh the risks.
As a rule of thumb, the newer the technology, the more upside it may bring and the more risk it may pose. How much risk can your team/company take? A tiny company may need to embrace high risks to establish itself, but a large company can ease into technologies with feasibility studies/demos. When you have a lot to lose, consider your situation carefully.
Some rare teams will be fortunately positioned such that their technology choices are well bounded. Teams working on independent services (SOA components or microservices) might, for example, fall into this category. These teams can absorb risks more easily, as their choices can be independently tested and are less likely to affect other organizations. Lucky folks! Most teams are not so well isolated. As a leader, you bear more responsibility for accurately assessing the broader picture.
Assess Ahead of Time
Candidly consider the risks of adopting new technologies. Advocates will tend to stress potential improvements and skimp on the liabilities. Keep them honest. Be wary of rosy predictions. Be particularly wary of worst-case predictions that drastically underestimate the true worst case.
Ask good questions and get real answers.
- What advantages does the new technology bring? How much do you need those advantages?
- What are the known risks/costs? What, and how large, are the possible impacts?
- How familiar is your team with this technology?
- How established is it? How do other similar companies use it?
If possible, test the tech in a realistic way to determine if it lives up to the hype and does not come with unexpected glitches. Ideally, go as far as A/B testing to compare the new vs. the existing technologies. When this is not feasible, consider implementing test harnesses that stress both the proposed benefits and the feared limitations. It is rarely practical to test all edge cases, so you will always have some exposure. Consider a back-out plan in case of failure.
Make the Call
Larger companies generally have more staff and resources to better investigate the implications of new technologies, but also have greater risks. You don’t get to be a “larger company” if you don’t have customers relying upon the products! Technical companies of all sizes need to make smart calls on the technologies they utilize.
As an engineering leader, you must balance the necessity of innovation with its risks and rewards. Act rapidly, but systematically, to consider new options within the bigger picture. Determine the real costs and advantages, as if the future of your company depends upon it.