Being a CTO is great, but ...
Tags: beginners, webdev, career
Published: 2019-08-04 13:12:34

Earlier this week I wrote my first blog post, and, to be honest, I was so surprised to see how many people reacted to it here and on Twitter. I've no idea if the numbers are good or not and I don't really care. 
I just want to thank you all for reading and leaving replies which I'm sure will help me write my next blog posts.

In my last post I explained how I became CTO, but I didn't go through what I love with this job and what makes me think I maybe should have waited or tried something else before.

# Being a CTO

First of all, I want you to know that what I'm sharing here is my experience of the job and it's probably not what another CTO would think or tell you. What I think is cool or uncool about this job is my perception but, hey, isn't it the aim of all this ?

The company that I work for only has a few developers and half of them are outsourced. This was already the case when I arrived two years ago. So, I'm not the CTO of the next Uber, Twitter or whatever, and that's fine by me.

## The good parts of the job

Being a CTO is awesome in many aspects:

1. I love building things, and, being a CTO means you're taking decisions with the CEO to build the company the way you want it to go and it's soooo interesting !

2. I get to choose what tools we'll be using for the next few years. Of course, I don't choose on my own, but I have a big responsibility in the choice. What I like the most about that, is building the Proofs Of Concept and getting to explain the pros and cons of a solution.

3. I work with a small team of developers that all have their ideas on what we should do next, why we are doing things wrong, how they would do them better and being in the center of this is overwhelming in a good way.

4. I'm in charge of recruiting the team that will build our products. I'll put this item in both cool and uncool lists and explain why it's also uncool to me. Recruiting is fun ! You get to meet people that come from different backgrounds. When I'm recruiting a Junior dev who has just finished her/his course, I often speak about what I'm learning right now and see what they understand about the subject (and I don't expect them to know anything about it). I'll always give them hints on books I have read or websites I have visited and that helped me a lot. When I'm recruiting a more experienced dev, I often do the opposite and ask what they learned last and try to understand the stuff myself.

## The downfalls

Well, not everything is perfect (For myself of course) :-P

*For some of the next few items, I have to say, my CEO is a control freak. She needs to have a grasp on every single feature even though she doesn't always get the idea.*

1. Recruiting: Of course, you can't recruit everyone, so you have to say no to great people and I hate that. On a totally different aspect, it also consumes a lot of my time. The other hard part is having to battle with my CEO on why someone who hasn't got a freaking computer science degree should be hired rather than someone who has. God! It's hard !

2. Working with an outsourced team (considering my CEO): You got the idea. Just imagine a feature that was estimated to 10 days of work and finally takes 12 or 13 maybe. Then I need to explain once again, that writing code isn't an exact science. It's like making a cake. Ask me to follow the recipe that should take 15 minutes, I'll take me at least an hour. Ask my wife ? She'll have it finished in 10 minutes. Even though I know how to cook, my wife is much better at it than I am, it's a fact. In my opinion, coding is pretty much the same.

3. Planning: I hate planning for other people ! I already hate doing it for myself. That's one of the main reason I thought I wasn't made for project management. I love mentoring, I love explaining what I've built, but I freaking hate planning.

4. Well, I don't write as much code as I'd like too. This is one of the hardest aspects. I really love building stuff and I only get little time to do it. Most of the time I think: "Oh I'd love to build this feature!" and then "Man, I don't have time for this, let's hand it out to our outsourced team". So all I get to do is write on how I think the feature should be built.

# What if ?

What If had to start my career all over again today ?

Honestly, I don't think I'd go for the CTO stuff. Don't get me wrong, put aside the hard relation with my CEO, I like it a lot. But I, by far, prefer building stuff, and I really don't do enough of it today.

I've done a little freelancing this year and that's something I find awesome. You can change stacks all the time, you're forced (in the good way) to stay up to date with tech and you're pretty much free to choose your "boss". 

When I speak to young developers who have just finished school, the question I often ask them: "Why don't you try freelancing ?".

The answer is pretty much the one I would have given too: **"I don't feel legitimate enough"**.

So, I think, we, as a community, should help those young developers to feel more legitimate.

*Any idea on how we could do that ? Feel free to respond to this post, I'd be glad to discuss it with you all.*