Ask HN: I don't enjoy being a CTO. Now what?

326 points by unhappycto ↗ HN
I recently joined a startup as their CTO and I'm hating it. They've been around a few years and have product market fit and now need technical leadership to grow the team and product.

It's my first senior management position, having been heavily code focused the last 12 years, with some small management as a senior/lead.

For my entire career I feel as though I've been working towards being the CTO and now I'm here I find it's not at all what I expected. It seems to be mostly about dealing with everyone's crap, trying to fight fires and constantly battling with the other managers and tech team to get things done. I haven't even written a line of code in months.

Over the past few years I've had a few gaps in my career where I have started my own business and been fully in charge of things. Those times were amazing although I never reached any level of sustainability. I thought perhaps being CTO in a startup would give me some of that same ownership, control and enjoyment but it just feels like another job. I actually feel a bit depressed by the whole thing which is a new sensation for me and my personality.

Am I expecting too much? Is it simply another job? What can I do to fix this or should I leave and get back to a coding job?

I'd love to hear from people with similar experiences!

PS. Sorry for the throwaway account but my main account has too much personal info for this topic!

227 comments

[ 2.7 ms ] story [ 105 ms ] thread
Can you re-architect the product from scratch? This should be doable if the raw building blocks (modules etc.) are properly designed and easily incorporated into a new design. If this is not the case, then all the more reason to rewrite the code!
OP not enjoying the CTO role doesn't mean he/she should waste company resources for their own amusement.

http://www.joelonsoftware.com/articles/fog0000000069.html

Read carefully: I said only rewrite if the code structure is bad. If the code structure is good, then re-architecting can amount to restructuring only the top-level parts.

It can give OP a better feel for how the code is designed, and give them more opportunity to change things in a more structured way in the long term by repeating the process (rather than just fighting fires every time).

Code structure provides very little business value.

Ten year old battle tested spaghetti is more valuable than any benefits a complete re-write would provide.

Over the years; I have found very few valid business reasons to re-write a code base that is still supporting the relevant business.

As a CTO, there is a good chance the poster would not be materially involved in such an effort.

From a business perspective; something that works is more important than something that is well architected.

Tell that to the Facebook team who recently rewrote their entire front end codebase using React.
I was also at FB when they hit File > New Project on their iOS app which IIRC drives more revenue than anything else at the company.
I wonder, did they really rewrite or refactor. Did they chuck out every single last line of code at once, or transitioned it slowly? Do they no legacy code left at all?
Did you really think being CTO means writing a lot of code? :D
This is one of life's conundrums. Work hard at getting really good at doing something you love doing, and then stop doing it. My advice would be to find someone or some people that are the adjacent jigsaw pieces to you - a set of skills you don't have, maybe it's the stuff that was missing previous times you ran your own businesses – and then start a business with these people where you can carry on doing the thing you love. For me, I had to do it with someone who had all the networking and new business skills that I so painfully lack.
I took up a job as CTO after being a lead developer and junior partner at a bunch of startups. OMG what a punishment.

I've now resolved to just go out on my own because it's too painful working for anyone else in this curious position of great responsibility but not enough power.

Was the money even good?
Key question is WHY did you take up this job in the first place? Do you really believe in the mission of this company or just the CTO title and a lucrative pay attracted you here. If you truly believe in the mission of the company, you're doing the right thing by taking all crap and making progress towards end goals. You are probably not coding because your time is better spent doing what you're doing now. Will you make more difference to the world if you went back to the coding role?
I have to agree. In my experience some of the best managers have been the ones who shielded their employees from bullshit, taking the brunt, making sure we can keep moving quickly towards completing the goals.
This is one of the main goals of a tech manager: "some of the best managers have been the ones who shielded their employees from bullshit". If a manager of a tech group isn't doing that, they're failing at their job, and likely have some form of attrition problems, quality issues, feeling of uncontrolled chaos, etc.
[Not the right community for discussion and you can't delete old hacker news posts so let me nip this in the bud.]
If you do nothing but write code all day every day, you're not providing leadership, not managing, and not helping to others to develop their skills.
Maybe this transition comes too soon but moving from coding in to management is a normal progression. It is another job , but in general it values the same qualities you should have as a coder: Understanding the dynamics of the situation and finding the best solution to get the job done. As CTO you should have the flexibility to find other people to help in the things you hate the most and focus on the fun parts.
> I haven't even written a line of code in months.

CTOs generally don't write code. But, in a typical startup designations don't matter so much. How different is your current role from the one you were offered during the negotiations?

> I thought perhaps being CTO in a startup would give me some of that same ownership, control and enjoyment but it just feels like another job.

Do you feel connected to the overall vision of the company? If you did, then you should look at the things you're unhappy with as bumps on a road worth traveling.

Since you do have the ownership (through your designation), you have power to change things that bother you. It's only when you start making visible impact, you will start truly belonging.

Finally, I would urge you to talk to other senior folks in the company openly about what's bothering you. Maybe you are missing another perspective that they will be happy to share with you.

You are absolutely correct, I need to talk with the other senior folks and this question here was my way of hearing some thoughts before going through that process.

> Do you feel connected to the overall vision of the company?

If I answer honestly, then no, not really. I think it's an interesting idea that will end up making a lot of money but no, the central 'theme' of the business doesn't touch any interests or passions of mine. The role came about via my network and I was much more interested in moving into the role of CTO than the product. Writing that out like this makes me realize that was a big mistake.

Sounds exactly like the CTOs job. I think too often the folks in SV abuse the CTO title when they really mean senior architect or engineer.

I'll offer advice but it comes from someone with no experience:

Take this opportunity and grow from it. So it's not the job you wanted or expected; you can still find a way to be successful. Really get to know the teams, figure out who has the emotional and intellectual capacity to deliver for you, and reward those folks. Good luck!

> I think too often the folks in SV abuse the CTO title

I believe part of it is overall title inflation, which makes it confusing for some people to understand what the actual role is and what you will be doing.

I would just leave unless there is some major financial incentive in your contract that you don't want to give up (hundreds of thousands or more).
That's life. The higher you go, the more crap you have to eat so those who deal with executing can execute without distractions. If you don't want to eat crap, you have to stay at a lower level (team lead/distinguished engineer/r&d labs)

On the other hand, being that high should indeed get you ownership and control, if you don't have it question your relationship with the CEO/rest of the company. You should own and be responsible for all the technical stuff, that is the upside of eating all the crap you can eat.

On a related note, if you are a good coder, you can and should schedule some time to do pair programming with the team to stay on top of things and actually write some code. But only as long as you are more of a help than a hindrance.

So.. about that non-eating crap low level job, any open position for me? :)
Exactly. As they say, crap travels downhill.
Depends on your skillset, but indeed we are hiring devs for our Madrid office. We are not ready for remote yet. We pride ourselves, among other things, in eating all the crap at the top.

Required Skills: C#.

Caveat: We want people that like learning new technologies, as we do use some other tech stacks other than .NET's. We will train you if you don't know it yet, as long as you are interested and capable.

Could you help me relocate? Inside EU. I don't know C# very well, but I worked with F# and also learned about some 110 other languages (https://klibert.pl/articles/programming_langs.html) and never considered stopping to learn new ones.

(Mostly just testing if it's really that easy ;-))

Sent you an email.
> It seems to be mostly about dealing with everyone's crap, trying to fight fires and constantly battling with the other managers and tech team to get things done. I haven't even written a line of code in months.

Welcome to management! You're dealing with the crap so your people can do their job. If you get to code a few weeks a year then you're lucky.

If you really don't enjoy it, go find something else. There are a lot of highly technical jobs that should prove a real challenge.

Maybe its too big a company? "Around a few years" sounds like they have a sizeable staff. So a CTO position there would be very different from a CTO at a new startup. Pretty much like you describe it. A management position, heavy on the 'officer' and lighter on the 'technical'. Managing a team of technologists make you responsible for making the right decision. Too many folks think CTO means you 'get to' make technical decisions. No, you're actually responsible for making sure the right ones get made. Which means listening to your competent team, understanding what they tell you, and reconciling that with the business.
(comment deleted)
By and large, you are describing people management. It is quite about dealing with crap. I don't mean that as a complaint, merely a fact.

Good managers take crap so others don't have to.

Ideally, we get good enough to prevent the crap from happening in the first place. But it is most certainly the job. It's entirely understandable if you find it's not for you.

A CTO's role should be technical leadership. If a major part of your role is dealing with everyone's crap and putting out fires, I wouldn't necessarily consider that technical leadership.

I've been in a similar situation, and for me, the right solution was having the right people under me that I could trust to fight the fires.

You should be deciding how the fires are fought, but your team should fight them. At least some part of your day should be available for steering your team/organization/product.

(But code, not so much. :)

Correct me if I am wrong. But it sounds to me you are still struggling between a coding job and a full time management job. And to be fair, i think this is what you would be expecting for most of management position in lots of the companies.

You mentioned you have done some small management as senior/lead. Then think back, which part do you enjoy when you were there.

The challenge of leadership is that of leading people, not of writing code. Dealing with people can be messy, frustrating, and depressing, but it's what needs to be done.

As a CTO, I code about 30% of the time, but I expect that to go down as our company grows. Much of the time I deal with people who were offended that so-and-so shot down their new design, or they think their career is being harmed because they can't rewrite the entire product in Clojure, or senior management is freaking out because of one minor bug that hits an important customer.

If you can see a path to where you want your company and team to be in a few years, then stay and try to move down that path. It is very rewarding to see tangible progress in your product and your team. If you want to be coding all day, find another job.

> trying to fight fires

Your leadership should help people avoid that fire fighting.

> I haven't even written a line of code in months.

That's a good sign for a CTO.

I feel ya! So my experience is not exactly the same, but I really get where you're coming from... About a decade ago was the last time that I touched any code as part of my dayjob. I was a web developer for 6 years, and I've been either a project manager or product manager for almost 10 years...and funny enough, for the latter couple of years as a dev. I yearned to move to a position where I sat between the "tech" teams and the "business" teams. I thought this was a natural progression up. I was told that I had a knack for explaining complex and technical things in easy-to-digest way for non-techies. So I tried the non-dev route. Fast-forward some time, and I've changed companies a couple of times since then, and without looking almost a decade has passed. My current and last job has led me to the most disappointing moments of my professional career. I won't say depression but feels pretty close to it. In my case i think it feels like nowadays I'm not building anything. The feeling that I used to get as a developer was that I was building something. I totally get that building something means different things between someone who sits at a desk and churns out code vs. people who build essential things such as wells and irrigation systems for some struggling third world country...nevertheless, at the end of my days as a "coder" i still felt like I introduced something into this world; I had such a sense of accomplishment, even if my salary didn't express that. In the last decade, I'm lucky enough to have had something to take my mind off things: in essence, my family. If it wasn't for my wife and daughter to fill my days with joy (and yes the usual family ups-and-downs, but hey, its still a distraction!)...if it wasn't for my family, surely I would have slipped into a deep depression. What makes things tough - now - is that after almost a decade of not touching code, its that much harder to "go back into codding", at least as a dayjob. Ok, I'm stopping now because this is mere blathering (and i should just post on my own).

...Suffice it to state: YOU ARE NOT ALONE with the remorse you feel with direction of your professional career! The only tiny bit of advice I can provide to you: find a healthy mix of non-work-related distractions in your life AND jump around to different companies. The fact that you have such great experience is something some relevant company will find useful; you simply need to tell them your goals, and hope things align.

Good luck!

I'm surprised that no-one has suggested getting a VP Eng alongside you.

http://avc.com/2011/10/vp-engineering-vs-cto/

I can't up vote this enough, this absolutely true.

This is the same arrangement I have at my company (me the CTO), I can focus on the code, architecture, devops and the VP Eng. can help build the team, work out personal troubles with the developers. Obviously there needs to be a good relation between the two for this to work.

Indeed, or even just an Engineering Manager to deal with the day to day management activities.
Honestly, it's not far off from a typical CTO role. Being CTO is about connecting the technology side of the company with the vision and business goals of the company, and making sure the two match. There are great ways to structure the technology and build out the product that don't contribute to the business goals or even the vision of the startup (and can even be opposed to it), and there are sometimes less-than-ideal ways of building the technology of a company that get it where it needs to be when it needs to be there.

The CTO's job is about half technology and half business when it's a small startup. As the startup grows, you can't possibly make every technology decision, and so your job is more about getting the right people in place who can make the best technology decisions on your behalf as long as you keep them appraised of what the business needs are driving each of their decisions. And because getting those people in place and managing those people is almost all on the business side, your role becomes more about active business management while maintaining an in-depth awareness of the technology so that you can step in and correct course as necessary.

These are all just generalizations of course, as every startup is different. I imagine if you're the CTO of a startup that caters to software developers and code, you probably get to continue devoting some portion of your time to coding. Even in other startups, I've seen a lot of CTO's (myself included) get to actually do some code occasionally, but it's more like once every 1 to 3 months, which sounds about in line with what you're doing.

I think the CTO role you desire does exist, but it's in a specific, somewhat narrow stage for a startup. It sounds like you desire to be a co-founding CTO of a very early-stage (possibly idea-stage) startup. I think your desired traits for the responsibilities of a CTO can also continue to exist years into a startup's operations if the startup remains bootstrapped and self-funded.

From my experience (both with bootstrapped and venture funded startups), when a startup takes venture funding and forms a board, the CTO role becomes more about managing expectations, facilitating understanding of the technology to the depth needed to those who need to understand it to make the proper business decisions, and more importantly, contributing to and making the business decisions that require the knowledge of the technology that only you bring to the leadership and management team. The smae change in responsibilities happens to bootstrapped startups that become big enough, but the change is more organic and occurs over a longer period of time (which actually makes sense when you consider that venture funding is intended to make non-organic growth occur over a faster timeframe).

More cynically, I guess this management of expectations and facilitation of communication could be described as "dealing with everyone's crap," but really, it's probably what the startup needs. If you truly think it's not what the startup needs, then speak up! You are the CTO after all, and that's now part of your job to make sure the company is making progress. But recognize that the business side of a startup is as important (often more important depending on what the startup does, how it's funded, what it's milestones are, etc.) as the technology side, so make sure you understand the importance and motivations of what everyone else is trying to accomplish in the company before dismissing their actions wholesale.

> For my entire career I feel as though I've been working towards being the CTO and now I'm here I find it's not at all what I expected. It seems to be mostly about dealing with everyone's crap, trying to fight fires and constantly battling with the other managers and tech team to get things done. I haven't even written a line of code in months.

Please tell me you are trolling.

What I'm about to say may be considered harsh, but I promise I don't mean it to be.

Quit. Just leave. Go back to coding. It's obvious you don't enjoy management, there's no shame in admitting that. Rather than inflict your misery on the rest of the team, get back to your wheelhouse where you can be happy, your team can be happy, and ultimately your company (current or future) can be happy.

I have worked in a job where the CTO (my boss) was in your exact position (in fact, if it weren't for your style of writing - English was very obviously his third or fourth language - I would almost bet money that you were him, your stories are that eerily similar) and it was a miserable experience. $CTO was an otherwise brilliant coder who was on his first cto-gig outside of 'team leader'. Outside of work, he was a great guy - warm, personable, funny. At work, he resented not being able to code in many different ways, often with the team bearing the brunt of his misery. He'd often make decisions for others to implement, then second (or third) guess himself days or weeks later, insist we throw out all the work, and start again. He'd often be irritable, make rash decisions, have temper flare-ups, ask for feedback then get upset when he got it, etc. It was a bad scene for all involved, but the dude was a walking personification of the Peter Principle. He would have been infinitely happier remaining a coder, and his team (myself included) would have been infinitely happier with a CTO comfortable in a leadership position.

Here's the problem with that reasoning. As OP implies she has enjoyed leading/managing within her own companies. Before my company was acquired it was thrilling to perform these duties even though it was more grueling. So it's not necessarily a matter of not being cut out for that kind of work.
I read it more as the OP had their own company where they were in charge of making decisions AND executing them, and there's no real indication of managing employees. I suspect they enjoyed the execution. If they don't enjoy dealing with people's crap and putting out fires, senior management of any reasonably large group is probably not for them - and that's absolutely okay.
You know, maybe it makes me sound bad but I do enjoy leadership on a smaller scale and where I am ultimately in control. I know one-man bands don't get very far (usually) and some people management is expected even in your own business. I guess my point here is that yes, you're right I have enjoyed leadership previously and thought the step up would be similar but it's not.
Right, I wonder if this person ever understood what the job of CTO is. Yes it's "dealing with everyone's crap", it's a management position. Yes you haven't written code in months, it is a management position.
Thank you for this, it's the way my mind has been leaning but it's good to hear. I realize my original post makes it sound like I had no idea what being a senior manager might involve which is just not true. I understand a lot of fire fighting and dealing with problems is par for the course I just didn't know if I'd enjoy doing that or not. How are you supposed to know until you try? :)

I also felt like I'd have way more control than I currently do. Perhaps that is a problem with me and if I simply took control and treated it like my own business I could change things enough to suit me more. But is that a good decision for the business? I'm not so sure. What's the point in changing things so much that the business suffers?

Anyway, your points about your previous boss really resonate with me right now. I'm finding myself increasingly frustrated and dreading meetings because I feel that frustration is coming across to the rest of the team.

The fire-fighting thing sticks out to me a bit, in part because it's caused me pain in the past and in part because you keep mentioning it. I might venture a guess that one of the underlying issues that's really getting to you is not the lack of actually writing code, per se, but that you have always had environments where you can get lost in deep focus or flow, and now your brain is being actively rewired to support continual rapid context switching. This is uncomfortable and unfamiliar and your brain is rebelling against this new environment.

I've never had a CTO title, but I've been in many similar positions.

In case you decide to stick it out for a while, I would suggest several easily implemented opportunities immediately:

(1) Establish an #engineering-support channel in Slack and a Triage calendar in Google Calendar. Put your team members on a rotating schedule to triage any engineering fires that the business has.

The Calendar should pipe into the Slack channel at 9 am every day. For a few weeks, send an "@channel please remember $engineer is your point of contact for today." By then the rest of the business should get the idea. Instruct your team that you trust them to decide which issues need to be addressed immediately and which ones need to go into the queue, but if they have any questions they can escalate to you. Also explain you understand that context switches are expensive, and you are totally okay if this causes a productivity hit on their given triage day.

It doesn't mean you won't be interrupted with real fires, but it does keep the less urgent ones from creating a context switch for you. Include yourself in the schedule, and you can send the message to your team "we're all in this together" instead of "hey I'm too good for this nonsense."

(2) The Business guys will respect your calendar, and if they don't, you have leverage to call them out on it because The Calendar is sacred in the business world. Block out 2 or 3 hour chunks throughout your week to work on hard problems. You drive a lot more value this way than with the fire fighting, anyway.

(3) The Calendar also works for time with your family. Daughter's Ballerina Recital? Block out 4pm-8pm on your calendar as soon as your hear about it—"Blocked—At Home"—and again, leverage if somebody wants to interrupt you with a fire.

(4) Train everyone on how to add each others' calendar to their own calendar view; this seems obvious to engineering, but less engineering-minded people may not know they can do that.

Before you quit, you should consider using your willingness to quit as leverage to try to improve the situation. This is not an easy thing to do, but if it succeeds it can pay enormous dividends down the line, and you have little to lose by trying it first. Contact me privately if you'd like more info or coaching on this. (My qualifications: I've been CTO of two semi-dysfunctional startups.)
A manager should set the course, provide the means and assist in navigating the rough patches, but they shouldn't be at the helm shouting instructions at the people climbing the sails. A manager who tries to take control typically leads to frustration for everyone involved.
As CTO of a mid-sized insurance company, I spend less than an hour per week writing code. My job is to lead the architecture and infrastructure teams in meeting company objectives. It is not my job to personally deliver solutions.

CTO is all about leadership. If this doesn't work for you then I suggest your "what next?" is a return to Lead Architect or Lead Developer roles at another company.