Technology choices that matter

Take charge of the 2018 technology agenda for your company

Lars Vinter
McKinsey Digital Insights
4 min readFeb 12, 2018

--

By Satty Bhens and Lars Vinter

As a digital business leader you are faced with a number of technology design choices. Some of these relate to the technologies you use and how you put them to use and others relate more to the ways of working when it comes to technology fueled product development. We believe that there are 9 important choices where you need to get involved with a perspective.

These questions are not simply “technology questions” — the technology decisions you make could greatly impact your business, e.g., your ability to quickly iterate over products, how you are able to organize teams and the pace at which you can scale — or even to what extent you can ultimately build the product your customers desire. If you are tech savvy yourself or have a strong CTO, you will have a better intuitive feel for which questions matter and what the best answers to these are. As such, it goes without saying that it is best to gain a fundamental understanding of core technology concepts and trade-offs in order to effectively drive a technology enabled business in 2018.

These questions are not simply “technology questions” — the technology decisions you make could greatly impact your business

While you build such a level of technology understanding, you may benefit from this list of our learnings from building digital businesses in recent years.

Embrace modern technologies

As a leader you should ensure that the team is familiar with, and uses, modern technologies. Technology has come an incredible long way in the most recent years. Not using latest technologies immediately puts you on a slower-moving and more error-prone path. Specifically, we suggest to:

  1. Default to JavaScript frameworks to start with
    Encourage the teams to use modern languages and frameworks (where it makes sense) to benefit from faster time-to-market, greater code reuse and tap into greater talent pools who tend to prefer working with these.
  2. Selectively use non-JS languages (e.g., C or Erlang) where beneficial
    Deviate from JS-based frameworks (e.g. React/Node), where there are actual specific arguments to do so — e.g. such as requirements to computation accuracy or concurrency.
  3. Use key/value stores in addition to relational databases
    Allow and encourage the use of document models to enforce a more flexible data definition more closely linked to the needs of the application. Do not forcefit a top-down fixed data structure defined upfront, but ensure that your technology also allows for agility in the data definitions.

Use the latest coding concepts and patterns

Similarly to leveraging new technologies, it is important to understand and make use of recent paradigms and technology concepts. Specifically:

  1. Enforce loosely coupled architecture
    Ensure genuine end-to-end accountability within each team for speed and scalability. Drive real micro-services/server-less, team managed data and publish/subscribe-events. (But do consider this more carefully and watch out for some of the typical challenges and concerns).
  2. Integrate open source libraries and 3rd party services, avoid systems and packages
    Allow the product teams to choose their preferred component to solve the problem at hand — avoid top-down architecture specifications and systems integration.
  3. Embrace infrastructure as code — owned and managed by each product team
    Leverage cloud services fully to use commoditized technology components (e.g., full server-less deployments, automated scaling, backup, orchestration, deployment, pipeline management and so on). Avoid having system administrators, infrastructure specialists and so on.

Follow latest engineering practices

Finally, make sure that you establish a culture and way-of-working that celebrates high-paced, high-quality engineering. A couple of concepts should be household basics:

  1. Enforce continuous delivery
    Put strong emphasis on building and maintaining a strong pipeline allowing end-to-end testing, unit testing, security testing, compliancy testing and live quality metrics.
  2. Conduct pull requests for peer reviews and test automation and embrace refactoring time
    Build a culture with focus on team learning and high quality engineering through encouraging learning and discussions on coding standards and quality.
  3. Standards over standardisation
    Suggest standards to allow greater degree of reuse, knowledge sharing and talent capacity management, but allow individuals to pursue own passions and experimentation with new technologies. For more on this, see The value of standards over standardization.

This is obviously a simplified perspective on technology. We have likely forgotten a few important aspects (tell us if you think we have) and we are definitely simplifying the optionality and argumentation on a number of these. The actual technology considerations that will matter mostly to you will to a large extent also depend on your business context and product: What is your time horizon? What is the value of having a genuine agile development approach with rapid customer feedback cycles? Where are you in the product lifecycle? To what extent can you ignore/leverage legacy technology environments? What is the availability/scarcity of specific talent you need?

These, and others, are important questions to take into account when reflecting on the 9 points above. Each of these points, and the ones that we likely have forgotten, could easily warrant their own blog posts. Getting technology right from the start is important and it is not necessarily easy, even for tech savvy individuals. But if you start with the points above, you are most likely at least a good step in the right direction.

--

--

Lars Vinter
McKinsey Digital Insights

Passionate about the digital revolution. Partner in McK. Opinions my own.