/ startup

What have three years as a startup CTO taught me?

I've now been a tech startup CTO for three years. I started with a small amount of experience and a larger amount of enthusiasm. The excessive enthusiasm has faded away but I've gained a lot of useful experience instead. In the beginning of our journey, being the CTO meant being the first developer in the company. As usually in startups, for the first couple of years it meant hackathon-like coding every day. However, as the amount of paying customers and features of our product has increased, a need for a broader perspective on technology has emerged. The first three years of our company has been a continuous learning process for me and the essence of it could be wrapped up with three buzzwords: personal growth, teamwork and technology.

LOL, I do this better on my own

I enjoy technical problem solving, but now in retrospect I've noticed, that I wore my developer glasses too much and for too long, and thus, I didn’t see the big picture for a long time. It was okay in the beginning as the main goal was to implement something testable as quickly as possible. During the second year of our company's lifetime I just could not keep up with the needed development speed and we needed more hands to get dirty. However, that revealed two new problems. Firstly, I didn't have any prior experience in leading a development team. Secondly, I was surprisingly jealous about my own work and often reluctant to delegate tasks to other people.

Nevertheless, learning to delegate has been essential for both my personal wellbeing and the operation of our company. I've been forced to admit it's not often the best choice to execute all tasks on my own. I've noticed that my energy is not endless and it's easy to burn myself out if I'm not careful. I've also learned that it's okay to ask for help. Often it's even desirable. I've learned the most by asking for help or buying consultation from more experienced professionals. My unnecessary arrogance has decreased (at least a bit). I have to admit – I'm happy about it. In addition to that, and even though it's contradictory to arrogance, I've also suffered from eagerness to please others. I've luckily enough learned to say NO and it has probably become the most important word in my professional vocabulary 😀

More people, more problems?

When I was developing the product alone I didn't want to use my time for infrastructure operations. That's why we started with a PaaS solution. It was perfect in the beginning but it became too black boxed later. Too much information about the deployment was only inside my own head.

As more people has joined the project it has been a necessity to increase the amount of waste (as defined in Lean terminology). Again, it's a good thing, though. Earlier, when I made a change in the code, I could remember what other parts were affected by the change. Now we are forced to write tests and use a more formal development process. It enables us to do our work better and we have the courage to commit changes without a fear of breaking anything.

We have outsourced some parts of the development work and our experience is mostly positive. The biggest problem has been me, again. You get what you order and I think that we (read: I) didn't use enough time to specify precisely what we wanted. In my opinion, the biggest advantage of outsourcing has been the ability to get deep specific knowledge on something we are working on. We cannot afford to hire experts on every possible specific subject yet. Our own employees are more like Jacks of all trades. But fortunately – particularly talented Jacks.

Kids need new toys regularly

The development speed of technology is naturally fast. However, internet is full of blog posts about different technologies so I won't go too deep into that. The most interesting things during these three years has been paradigm shifts. Javascript has evolved a lot as a language and it has affected our development work as both our front end and back end are mostly written in Javascript. We started with AngularJS in the front but now we've moved to more functional expression in our code and use more component-based structure with React and Redux. We've moved from simple PaaS-based deployment to container-based continuous integration and deployment. It's been downright delightful to work with containers. Hopefully the love remains.

TL;DR

As a summary, I hope that at least some upcoming or rookie startup CTO will learn something from my learnings:

  1. Your physical and mental resources are most likely not endless either, so try to be humble and ask for help.
  2. Teamwork to the rescue!
  3. And most importantly, have fun playing with technology.

P.S. The video below portrays pretty accurately how I feel almost every day 😂