During my engineering career, I made a choice to leave the Individual Contributor (IC) track and move into a technical leadership role. At the time, I felt that I had achieved knowledge and technical depth in a number of engineering disciplines and wanted to try leadership. Like a lot of people I made this choice for a variety of reasons I thought were obvious: to get more power, more prestige, more compensation, and more influence across my organization.
But as I and many others have discovered as we’ve moved into leadership, that’s not exactly how it goes.
ICs also have a lot of influence and power—at least at the companies I’ve worked at. The IC and technical leadership tracks tend to mirror each other all the way up. The IC track typically comprises engineers, senior engineers, staff engineers, senior staff engineers, principal engineers, and distinguished engineers. Meanwhile, engineering managers, senior managers, directors, VPs, and Chief Technology Officers (CTO) are usually on the technical leadership track. I’ve come to learn that both tracks have the same prestige and power—at times, I actually think that ICs have more power than those of us in leadership roles.
Since I am once again CTO of a large organization, keeping up with all that is going on and staying technical is quite a challenge. But, I think that it’s an imperative for great engineering leaders as this helps maintain technical decision-making abilities and helps build trust across the organization.
However, when you get to leadership, people issues will take up time. You have to do performance reviews, you have to do one-on-ones, you have to do staff meetings, and you have to take time to build intra-org and inter-org connections. You have to write blogs, emails and messages. You have to develop career ladders and build the craft of engineering. The truth is, you end up being less technical if you choose the leadership track—there’s no way around that reality.
That’s why the choice to move into leadership has to be intentional. You have to love managing people. You can’t wake up and think you’re going to be more technical in the leadership track than you were as an IC—there just isn’t enough time on the calendar to maintain the same level of technical depth and manage a large organization.
There are personnel dynamics to think about. For example, you have to think about people who were friends and peers before you went into leadership. As much as you try, the relationship is different. You might need to alter their careers, move their roles, or even manage them out. Being a leader means being able to do that in a way that’s professional, that respects their technical ability, and respects them as humans. Before I went into leadership, I thought about these scenarios—and I asked ICs who came to me for advice about moving to leadership about how they would handle these situations.
But this is what’s really on my mind as a technical leader: how do I gain the credibility of the really smart people on my team who are far more technical and detailed than I am, in order to lead them? I used to code on large complex projects. I configured networks in multiple countries around the globe. I’ve configured a lot of sophisticated and highly-technical systems. But, the teams I lead now don’t know my background or know my technical depth. If I maintain a certain level of technical credibility, my team will understand and respect me enough to want to follow the strategy, the vision, and the track I want to lead them toward.
I’ve made my choice. At the same time, I want to be as technical of a CTO as I can be, both to help make technical decisions and to be technically credible with my team. And, of course, I need to balance this desire with the time it takes to be a great leader of people. It’s not easy, but here are a few things that I’ve learned to do along the way to stay technical as an engineering leader.
1. Be a Voracious Reader
At any given time, I have a stack of books near my desk and many open browser tabs with blog posts that I want to read. If you don’t like to read, a CTO job is going to be a tough road. But if you don’t have time to read, there is a hack: listen to podcasts at 1.5-2x speed. Either way, you need to be able to consume data outside of meetings, and you have to learn to absorb information quickly. Have a question about how something works in the organization? Go read the code. Go read the documentation. I spend a lot of time reading on Github. I read commits, read through the documentation, look through test results, and see if we’re releasing things properly and at the right time. Not only are you learning what you need to learn, you’re going to see the coding and documentation patterns across the teams and be able to share your thoughts on the best practices. On top of that, you’re going to keep up to date with the best coding practices in your codebase.
An additional tip: Ask your peers for one or two things you should read every month. There is always something new to learn and a new source of information to discover.
2. Code As a Hobby
I hate to break this to you, but when you climb the CTO ladder you’re not going to be pushing new code to production very much, if ever. If your company is small enough, you might be extremely hands on. But trust me, a large company does not want the CTO consistently pushing new code to production. As a CTO, I can fix bugs and dive into repos, but the day I’m pushing to new code to production on a regular basis is probably not a good day for the company. As I said above, when you move up the leadership ranks, you need to take time for people issues and this does not allow you to be consistently in the code as much as you may want. But as a leader you need to know how to code and stay up-to-date on the dev tools.
At Shopify, we moved to cloud-based development environments with a tool we call Spin. What does that mean? In order to code and get into a Github repo, you bring up a terminal, and you type spin up shopify
. This provisions an instance in our cloud, checks out our largest repos, and sets up runtime permissions. With the appropriate Github tokens, we connect to the repos, and get your development instance up and running. This takes around 30 seconds. The very next command you type is spin code
, and it literally brings up VS Code (or your code editor of choice), drops you right into the repo, and you’re ready to code right away.
I go through that process regularly as a hobby. I also use our cloud-based environment to make myself aware of the tools our teams are using. I code on side projects that aren’t going to necessarily end up in a Shopify production repo. As a technical leader, you need to make coding part of your fun, part of how you gain understanding of the developer toolset, how you understand how the continuous integration (CI) tests are running, how your continuous deployment (CD) is running, and how you push to production. You need to understand the development environment your engineers are seeing because it gives you insight to their daily work and keeps you technical at the same time.
3. Participate in Hackathons
I participate in hackathons both internally at Shopify and outside the company. I recently participated in an event called Technovation, which is sponsored by Shopify in North America. It’s a program for girls and young women (ages eight to 18) who get together in teams and build apps that solve real-world problems. This year, I signed up to review code, and score the projects as a judge. The highest-scoring projects then move on to a series of global playoff rounds until finalists and regional winners are chosen. Technovation is a great program and I enjoy supporting girls and young women around the world interested in STEM education.
We do multi-day hackathons inside Shopify called Hack Days. I’m not often hands-on coding, but I join various projects and work with teams trying to figure out how we can build the best products and innovations for our merchants. I am also involved with reviewing the many dozens of projects, judging the top projects, and giving feedback to the teams across the organization. With Hack Days, we’re all in it together and being part of this program is another hack (pun intended) to staying technical and informed on future innovations.
4. Hire Well
It takes an enormous amount of time to run a team. If you have the wrong people in the wrong roles, then leadership takes even more time. As a leader, you will have to deal with personnel changes and leadership gaps in the organization. You may be tempted to quickly fill those gaps and you might want to take shortcuts because hiring takes time and effort. But, you need to take the time to hire well. When you have hired well and have good alignment with your team, then you will find that they focus on the right aims for their part of the organization.
Have I hired correctly every single time? No. But, I take the time to hire with intention. If you hire wrong, your new staffer may not be focused on the right technology, they might not focus on scaling properly, and may not understand the priorities of the business. If that happens, guess what you’re not doing? You’re not reading blogs or listening to podcasts. You’re not coding on the side or participating in hackathons. Instead, you’re doing performance reviews, and scheduling meetings with HR to make sure you’re giving the proper feedback. However, if they are aimed correctly, then you don’t need to take time to do that aiming—meaning that you can spend more time staying technical.
There is another benefit to hiring well and the goal of staying technical—good technical people can teach you things faster than you can read about them. When I hire, I look for people who are super technical. For example, Shopify is making a big bet on WebAssembly, a binary instruction format for stack-based virtual machines, so we’ve hired engineers who are versatile with that technology. We also have several Rails Core Team members and committers working at Shopify. When I need to learn more details about these technologies (and the hundreds of others that we use here), I can read a Slack channel, join a technical review, review a technical project brief, or just spend a few minutes with someone more technical than I am on the topic and learn the technical details quickly. Great technical members of your team enjoy speaking about their projects and sharing technical details.
5. Create a Team of Tech Advisors
I find having a team of tech advisors immensely useful. It’s another way I stay technical as a CTO—essentially limited crowdsourcing on technical topics. While hiring well and leveraging those people internally is useful, having a wider perspective on where technology is going is invaluable.
I have a private Slack channel with about 20 senior engineering leaders that are internal and external to Shopify. I use that channel to ask questions, be vulnerable about what I don’t know, and get industry-specific guidance. This is a place I can ask anything and try to come up to speed quickly on technology. In this Slack channel I might ask about a new technology that I’ve been hearing about from my teams, about an upcoming technology that appears hot in the industry, or sometimes some very specific questions on the use of a given technology at scale. The rules of engagement in this informal team are pretty simple—ask questions, be helpful, and share.
6. Clear Out Bugs and Backlog
As a technology leader, you also have to manage operational issues. Downtime, outages, bugs, and backlog will kill your best laid plans. All of these things will get you stuck in the tactical weeds of running incidents, going through remediation action items, and holding teams accountable to avoid a repeat of the same operational issue. As a CTO, I try to make sure the teams are grooming their backlogs on a regular (at least weekly) basis. I make sure I understand remediation action items from the latest incidents, and aggressively pursue resolutions to outstanding problems. I make sure I'm driving the teams in a way that allows them to both innovate and not get stuck with tech debt.
If you’re driving a technical team and you're getting ready to launch a product and you have no tech debt, then you can focus on innovation. But, it’s inevitable that as soon as you launch your product, new feature, or service that you’ll encounter operational issues. Then you need to think, “How do I balance operational issues with innovation?” If you ignore operational issues, they will start to sap more and more time. You’re no longer a technical leader—you’re becoming a tactical firefighter.
Getting ahead of bugs and remediation items in the backlog and then allocating time for teams to work on innovation and tech debt is absolutely critical in allowing you to focus on being a great technical leader.
Staying technical as a CTO is not an easy thing to do. Keep reading, spend some time coding and reviewing source code, take time to have fun in hackathons, hire well, and then build up your team of trusted advisors. If you use these tips, or if you have others, feel free to reach out to me on twitter at @leinwand. I’m always looking to learn (or to read) about any tips that you may share.
Allan Leinwand is Chief Technology Officer at Shopify leading the engineering and data teams. Allan was previously SVP of Engineering at Slack and CTO at ServiceNow. He co-founded and held senior leadership positions at multiple companies, has authored books, and ventured to the dark side as a venture capital investor for seven years. He’s passionate about helping Shopify be the best commerce platform for everyone!
Wherever you are, your next journey starts here! If building systems from the ground up to solve real-world problems interests you, our Engineering blog has stories about other challenges we have encountered. Intrigued? Visit our Engineering career page to find out about our open positions and learn about Digital by Design.