How to Design a Good Technical Strategy 👁️
And how your job changes as a technical leader.
Hey 👋 this is Luca! Welcome to a ✨ monthly free edition✨ of Refactoring.
Every week I write advice on how to become a better engineering leader, backed by my own experience, research and case studies.
You can learn more about Refactoring here.
To receive all the full articles and support Refactoring, consider subscribing 👇
A few months ago I wrote an article about the different role of tech leads and engineering managers. After that, several people wrote me to tell their experience, and asked for advice about their responsibilities and career path.
I find it very hard to give good advice about leadership roles in tech. The same role can be very different in different companies — and also in different teams within the same company.
In software, I feel we are still figuring out what the various skills and responsibilities really are, and we keep adjusting roles and tracks accordingly.
For instance, there is now a healthy conversation about separating management from individual contribution career paths. However, even within the IC track, you eventually grow into technical leadership roles, which mostly require a different set of skills.
🔨 Individual Contributor — 80% time focused on execution.
💼 Management — 80% time focused on managing people and processes.
👑 Technical Leadership — 80% time focused on leading people on technical topics.
As all careers start with pure IC, you can either transition into an Engineering Manager, or a Tech Lead (or Lead Developer, Principal Engineer, etc.).
While the move to management is now relatively well-documented, what is it that really separates pure ICs from Technical Leaders? 👇
Refactoring is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.
Your job as a technical leader
As a Tech Leader of various kinds, your duties can be divided in two big categories:
Working with your engineering team
Working with non-technical stakeholders
The first is more of an evolution of your execution skills — you get to make design decisions, guide development and review other engineers' work.
The second is a different beast — you will discuss and negotiate technical requirements, risks, and the overall technical direction of your team/product, with stakeholders coming from other functions.
In this context, your focus shifts from how things should be built to what should be built and why. That is, you move from technical execution to technical strategy.
But what is a technical strategy and how can you design one?
What is a technical strategy
The technical strategy of your company is the plan of how engineering enables the product and company respective strategies, and drives them forward.
In the best companies, this doesn't happen strictly top-down, but more as a conversation.
Product and engineering are mutually influenced — many of the most successful products of all times where in fact enabled by engineering breakthroughs.
📱 Famously, Steve Jobs was shown a prototype of a multi-touch screen and then decided they could build a phone with it.
🎧 Spotify decided to go all-in on mobile because it was the right choice business-wise and it was finally technically viable (encoding + buffering tech + mobile networks performance).
A good technical strategy is a superpower
Think at engineering as a mini-company within you company. As your mini-company, it requires a vision, a mission, and a plan to make it happen.
A technical strategy that is successful at this can do wonders to all aspects of your work:
🔋 Empower product and business — it enables new opportunities and creates competitive advantage over time.
💬 Establish clear communication — planning and negotiation become easier when they start from an agreed, high-level direction.
📣 Engage Engineers — it provides a clear purpose that rallies people and motivates them.
How to design a technical strategy?
Company Strategy — the logical plan you design to bring your company’s mission into being.
Functional Strategy — the logical plan for how a specific function (product, engineering, marketing, etc.) will drive its part of the company strategy.
Functional strategies are influenced by one another about what can be done. They all contribute to the overall company strategy, and eventually to the roadmap.
When it comes to Engineering, you can design your strategy by reflecting on three elements:
🏢 Your Company
📱 Your Product
👕 Your Team
🏢 Your Company
What can engineering do to support your company mission? What should you invest in to create a core asset for your company, generating a hard-to-copy, competitive advantage?
Zoom invested early in custom, state-of-the art streaming technology, which turned into a moat for their business.
Airbnb invested early in machine learning to support both guests' (search & discovery) and hosts' (smart pricing) experience.
📱 Your Product
How can engineering support your product strategy to deliver a superior experience that drives the company mission forward?
What kind of products can be enabled by a strong technical strategy?
Uber invested in a general purpose fulfillment platform, which down the line enabled the creation of multiple product lines, like Uber Eats and Uber Freight.
🎽 Your Team
Finally, the best strategy doesn't exist in isolation, it depends on your team and evolves with it.
How can you leverage your engineering team's strengths to create something that benefits your company long term?
Airbnb famously took a big bet on React Native in 2016, but ended up sunsetting it in 2018. In a long and articulate retrospective they acknowledged their issues where mostly operational — i.e. already having two native apps and a large team of native mobile developers.
Native developers were reluctant to 1) learn a new framework that completely changed the way they work, and 2) having to maintain a complex, hybrid approach between the old and the new.
React Native might have been a good choice in isolation, or to start with, but it failed because of Airbnb's team configuration and pre-existing assets.
📑 How to Overcome the Technical Strategy Spiral — this great article by Reforge explains how to shift your skills from execution to strategy, and how to create a technical strategy from scratch.
📑 The Trident Model of Career Development — Pat Kua argues the best model for Engineering career development is not the classic dual track, but a trident that separates Technical Leadership from pure Individual Contribution. Thoughtful and recommended.
📑 React Native at Airbnb — long post-mortem of the failed attempt, lasted 2 years, to introduce React Native into the mobile stack of Airbnb. This is the best piece you can read about what does it mean to deploy a strategic tech initiative into a large, modern company, with its challenges and opportunities.
⭐ Weekly Featured Jobs
Here are the remote engineering jobs featured this week! They are all from great companies and I personally review them one by one.
Pager — Senior Software Engineer — the best way to capture and share your digital life.
Journey — Founding Frontend Engineer — a storytelling tool designed for the internet age.
Zapier — VP Platforms & Labs — the easiest way to automate your work
Hubspot — Director of Engineering, Fintech — inbound marketing, sales and service software
Stripe — Staff Engineer, Product Experience — online payment processing for internet businesses
Browse many more open roles (or add your own) on the full board 👇
Hey, I am Luca 👋 thank you for reading this far!
Every week I read tens of articles and draw from my own experience to create a 10-minutes advice about some engineering leadership topic.
Subscribe below to receive a new essay every Thursday and put your own growth on autopilot!