Monday, July 23, 2012

Lead Developer to CTO at a Startup

I received a great question via LinkedIn:

I'm the founding engineer and working hard to launch my startup.  I seem to encounter a lot of people who want to attach a CTO label to me as I'm the only programmer on the founding team of three.  While I do fill that role at the moment, I'm a little hesitant to refer to myself as a CTO as we still haven't launched a product, acquired a single user, or turned or a penny in profit.  I also recognize that while I am the first technologist on the team, I will not by any means be the last and I'm hoping that subsequent hires will be people I consider brighter and more talented than myself.  This leads to a set of questions: 

  • What is the role of a CTO in the early stages of a company, and does that role change later on as both the company and that individual matures? 
  • What can I do to best equip myself to step up when the need to officially fill this role arises? 
  • How will I know when the need has arisen? 

I've previously addressed the role of a CTO in early-stages in my post Startup CTO or Developer.  It specifically answers the first questions about role and how it changes as the company matures.  For example it includes the following kinds of things that a CTO should be addressing, but that may not be part of the expectation, time allocation, etc. for a Lead Developer:

  • How much will it cost to build what we need to build?  How can I control costs but effectively get stuff developed?
  • How can we phase development to balance cost, features, risk, etc?
  • What options do we have?  How do we balance those options?  What makes the most sense for us?
  • Given likely market changes, how will we design and build so that the systems can respond to marketplace changes?
  • How do we need to structure the systems to get ahead and stay ahead of the competition?
  • What are the biggest areas of technical risk?  How can we address this risk?
  • What technology research is required?
  • What technologies will we use?  What existing systems will we leverage, what programming languages, software development methodologies, web application frameworks, revision control systems, etc.?
  • What other kinds of systems will we likely need?  Accounting?  Reporting?
  • What are the important security considerations?  How do we balance concerns vs. cost?
  • Where are the likely future integration points with other systems?
  • What areas of the application are likely sources of scalability issues?  What kinds of spikes in traffic could we have?  How will we address these without significant cost?
  • How are we going to manage the product roadmap?  Make sure we make short-term progress, but not at the expense of longer-term objectives?
  • What do we build in-house or outsource?  What parts might we do off-shore, on-shore, in-house?  What does the staff need to look like over time?  When will key hires come on?
  • What other kinds of capabilities such as graphic design, user interaction, product manager, QA will we need?  Who will do that?  Who’s responsible for what portions?
  • How will we find and interview developers? 
  • How do we motivate and manage developers?
  • What do we need to do to make sure we can survive technical due diligence by investors and partners?
  • What specific technical innovations might make sense?
  • What can we build that might be protectable?
  • What metrics are going to be the key startup metrics and how do we get those metrics without too much cost?
  • Where and how will we host the systems?  What’s our purchase, licensing, SaaS strategy?
  • What other CTOs can I ask about complex questions to see how they’ve addressed these issues?

If you are a Lead Developer now and want to grow into a CTO role, there's some good news and bad news.  The good news is that many of the founders that I talk to who are trying to find the lead developer want someone who can grow into the CTO role.  The bad news is that there are a couple of things working against you making the transition.

Startups tend to focus on immediate development needs, getting product out the door, and are often short-sighted.  Then the Founder/CEO and the investors wonder why the above questions are not being addressed.  They attribute it to lack of knowledge and skills rather than focus.  Result => "We need to bring in a CTO."

Startups either grow or die.  If the startup lasts into a few rounds of investment, the rounds get larger, and the team grows.  A skills gap will emerge.  The lead developer who's used to leading a team of 3 will have a much different job trying to lead 40.  In fact, it's likely the case that it's better to keep the lead developer leading a small team to get product out the door.  It's also the sad fact that there's often a desire to bring someone in who has a bigger reputation and likely experience with larger startups that have gone through M&A or IPO.  Again, both of these will lead to => "We need to bring in a CTO."

There are definitely cases where the lead developer grows into a CTO.  However, I will say that there are MANY cases where the initial lead developer does not turn out to be the CTO of the series C/D startup.

What can you do to position yourself to make the transition?

Here's a dirty secret about most startups.  Unlike some larger, more mature organizations, most startups don't spend much time or effort helping grow their employees beyond the immediate needs of the startup.  Whatever the startup needs in the near-term is what the focus will be.  When they recruit you, they should tell you about what you will learn, but it will be focused on technologies and skills that they immediately need for the success of the business.

In the world of startups, it's critical that each person takes responsibility for managing their own career.

But that's most often not the case.  In How to Level Up in Your Career as a Startup Software Engineer, Pete Soderling points out something that's a bit of a dirty secret in the world of startups:

Many startup software engineers don’t take proactive steps to manage their careers.

Learning, Networking, Mentors

From the question, this person is clearly looking at the issue of how to grow into this role.  Likely one of the bigger challenges is simply not knowing what you don't know.  Towards this, I believe you need to seek out continuous learning opportunities.

If you are the senior most development leader, often there are organizations locally that you can get into where you can meet peers.  Here in Los Angeles, it's the LA CTO Forum - a private, invite only group of 250+.  The brain power of this group is amazing.  And it's quite common for people to get together outside of meetings to discuss issues they face and/or to seek a kind of mentoring relationship.  Finding an informal mentor or two would be a great way to be able to continue to focus on this and make sure you are caught unaware.

This group may be a bit unique, but in every geography there are lots of industry and technical organizations where you can seek out similar kinds of people.  You could even use LinkedIn.  I believe you will find lots of CTOs quite willing to help you as a mentor.

In addition to networking, I would suggest that formal learning is a great idea.  This can take the form of a local university, online courses, going through relevant books, etc.  The key here is to begin to avoid technology specific content and instead focus on management skills.  This is likely your bigger gap.

If you are seeking to ultimately be the CTO of a larger startup, it may make more sense to join an existing larger startup and learn from that CTO.  The size of the startup makes a huge difference in terms of the challenges the CTO faces. 

Make sure you are continuously looking at the business and customers.  Get in front of customers as often as you can.  Engage heavily on the business and product.

Allocate your time differently so that you focus on the issues that a CTO will be looking at:

  • strategy
  • communicating options and influence rest of leadership team
  • build/grow/direct/motivate team
  • financials/budgets

You'll note that a lot of the skills and focus of a CTO are around communication, business, management, team.  This is often a major factor in determining that transition.

I'd be curious what other advice people have.


Jordan said...

I was a Front-End Developer at a small web design agency that bootstrapped our own project management software, which lead to a startup-like atmosphere.

The previous Technical Director/CTO decided to semi-retire, so I was asked to take on most of his responsibilities. The skill I lacked was being able to motivate other people. I worked extremely hard to create a system that made it easy and obvious what everyone's role and tasks were, but I wasn't used to "cracking the whip", as the founder constantly asked me to do.

So my advice for an aspiring CTO would be to figure out how you can best motivate people. This depends on your own style as well as what works for each individual team member. Start paying attention to what works and what doesn't.

Tony Karrer said...

Jordan - thanks for the comment. My guess is that the "team skills" such as motivation are the most challenging.

Eddie Park said...

Great article. I think too many of us don't realize that the responsibility of career advancement is an individual responsibility. For me, I've found that transparency and honesty have helped a lot in learning the goings-on of the other side of the table, especially as a younger engineer.

Maybe the biggest misunderstanding is that the CTO is the end-game for all startup-developers, when the truth is that the compensation can come in other forms besides a C-Level title.

Nick Talent said...
This comment has been removed by a blog administrator.
Jeremy @ Headhuntable said...

I think its always good when CTO's know how to do coding themselves. It always helps when you have technical experience because then you know how long something should take to build and any obstacles a developer might run into so that you can plan accordingly.

Edward said...

I guess I would add the question, "Do you really want to be a CTO?" If you like coding and building products, perhaps becoming known as the best "lead developer" around would be the best thing you could do for your career. Being known as an incredible lead developer who can build good products quickly and has no interest in being a CTO establishes clear boundaries and ensures your services will always be in high demand.