Today, I’ve stumbled upon a 2017 interview with Nathan Blecharczyk, co-founder and CTO of Airbnb. In it, Blecharczyk discusses his background as an entrepreneur and how he became involved with Airbnb. He also talks about transitioning from writing code to managing engineering teams as the company grew.
In Airbnb’s first year and a half, Blecharczyk wrote every line of code himself. As Airbnb expanded, he shifted his focus to hiring a team, spending most of his time screening candidates and persuading outstanding ones to join. As CTO, he ran engineering and managed data science, data-driven marketing, and payments. Over time, he moved from hands-on technical work like coding to overseeing teams of software engineers handling most of it.
This interview reminded me of a conversation with a former colleague, Alex, from a while ago. He was a senior engineer offered the CTO role at a 5-year-old SaaS company with an established business model and a 20-person engineering team. We jokingly called it a startup, but it wasn’t really. Alex told me how different the CTO role was from his expectations. That’s what I want to discuss here.
For some reason, there’s an expectation that good engineers naturally make good CTOs. After all, it’s a technical position. If you’re a senior developer already making technical decisions, switching to a CTO role should be similar. Well, there is a big difference.
A CTO’s responsibilities are far broader than a senior engineer’s, tech lead’s, or team lead’s. As CTO, you’re accountable for everything technical in a business, which is a lot for tech companies. And nearly every serious company today relies heavily on tech. Let’s go through two of the key CTO duties.
Running an Engineering Team
Being a CTO means you likely won’t have time to write code. In a company’s early days, like when Nathan Blecharczyk coded for Airbnb, the CTO may be hands-on. But as the business grows, the need for rapid feature delivery and updates rises. So you’ll spend more time hiring, managing the team, boosting productivity, handling budgets, etc.
Each new hire — from recruiters and hiring managers to product managers, business analysts, senior engineers, QA engineers, and more — requires your careful selection and guidance. Plus, it would be best to periodically have one-on-one talks to ensure everyone is doing okay.
Establishing efficient processes and workflows is crucial, too. As CTO, you must strike the right balance of freedom and structure — the proper test writing requirements, deployment and release approaches, handling technical debt and documentation, etc. These shape the engineering culture, which is extremely important. You also need to help different teams like backend, frontend, design, analytics, QA, and management understand each other and collaborate smoothly.
These aren’t typical engineering duties. In fact, engineers often avoid them. Most tech problems, like in any business, are people problems. To succeed as CTO, you must quickly ramp up soft skills and get comfortable with uncertainty and unpredictability. Otherwise, you won’t accomplish much.
Defining Technical Strategy
As engineers, we like playing with new toys — these may be new approaches to coding, libraries, frameworks, languages, or ecosystems. However, this tendency doesn’t align well with the CTO’s role, which requires long-term thinking. You need to find the right balance between researching and trying new things while avoiding creating problems for the business.
Technologies come and go. Rust is now the modern tech darling, but functional programming and Node.js held that spot before. Ruby and Rails preceded Node, and PHP or something similar came before that. You must pick an established tech. Otherwise, it would be nearly impossible to find experienced engineers. But you also can’t cling to outdated tech for the very same reason.
There’s a wide variety of emerging technologies to continually evaluate as a CTO. In recent years, we’ve seen an explosion of AI development tools and AI products that businesses want to integrate — those are the areas a CTO needs to get familiar with. You must also continually try new low-code and no-code products to ensure your experienced engineers aren’t spending time on tasks better suited for less experienced team members. However, you have to be careful not to handicap yourself by relying too heavily on third-party tools that may disappear in a couple years. This evaluation process never ends for a CTO.
The Broad Expertise is Critical
Becoming a CTO requires constantly improving in many areas at once — not just technical skills. That’s why finding someone qualified for the role is so challenging. When I try to list everything a CTO must do, the responsibilities seem endless.
In short, a CTO needs to be able to answer any question from anyone on the team related to tech, from stakeholders or designers, to help them do their jobs. It’s a lot of responsibility and requires diverse background knowledge and experience. My friend Alex took three years after starting as CTO to feel he understood the gaps in his skills and what he needed to learn.
After almost 8 years as a CTO, I still have so much to learn — for example, I’m rethinking hiring processes and rebuilding our feature prioritization approach. Like engineering, being CTO means constantly improving across many areas simultaneously.
Originally published on Medium.com