Building Technical Leverage

November 4, 2012. Filed under software-engineeringarchitecture

Last year I had the opportunity to speak briefly with Kevin Scott, SVP of Engineering of LinkedIn, and he mentioned building technical leverage as one of his engineering organization's primary goals.

Many months later, the phrase still echoes inside my head.

Generally, you might say the aim of your development team is to build business value (whether that value is producing widgets or revolutionizing health care). You can grow a team's delivered business value over time by:

  • training: investing in the team's people,
  • process: investing in shaping behavior and communication,
  • technical leverage: investing in technology.

Examples of technical leverage abound.

At Yahoo! BOSS we offered structured search results as a service, which made it possible to build a search results page without first building your own search engine. At Digg, we deployed Hive to speed up writing queries against our HDFS cluster (as opposed to writing map-reduce by hand). If your coworker is arguing you should switch over to Erlang because writing in blub is a waste of time, their argument is built around building technical leverage.

At SocialCode, building technical leverage has been an explicitly stated goal of ours.

Rather than having projects whose only goal is introducing/creating new technology, we're ensuring each project has at least one potentially novel or innovative aspect. This has created a framework of low-cost experimentation with different approaches and designs, where successful ideas are incorporated into subsequent projects, and where less successful ideas don't cause entire projects to be thrown away.

It's a logical next step to pick out your best engineers and then create a dedicated infrastructure or tools team, who devote all their time to creating technical leverage, sending your company's overall productivity through the roof. That idea makes me anxious on the same grounds that I'm distrustful of drawing a line between software engineers and architects: it not only undermines the feedback loop between decision makers and the consequences of their decisions, but it also creates a class system where product focused teams are framed as inferior to the infrastructure teams.