How to become a qualified CTO and what professional qualifications are required before becoming a CTO, the outgoing CTO of SketchDeck talks about his experience in this position over the past four years.

It’s an exciting and wonderful experience, and working at a startup is very different from a traditional job: you don’t know if the company is going to be successful, you don’t know if it’s going to be a full-time job, and then you experience new and different roles as the company grows. By and large, you’ll often be doing jobs you’ve never done before. Before you can take full advantage of your power, new responsibilities will come your way.




Startups are like boats in the ocean. They have the flexibility to deal with unexpected events, but the decisions you make on day one have ripples that ripple out over time. What I know now is that the infrastructure, framework, and language you choose will be with you for a long time to come.

As your company grows, the pressure to build more features and subsystems increases, each of which further locks up your options. As you gain more motivation, the pressure increases, and it becomes impossible to stop and revise.

I’m very happy with our choices: Amazon Web Services, Elastic Beanstalk, Firebase, AngularJS, Coffeescript, Kafka, Simple Queue System, SocketStream, Docker, SemaphoreCI, MySQL. From the list, only AngularJS and MySQL have problems with scale. Our entire AngularJS code package is too big, takes a long time to download, and the application is a bit too slow. As the complexity of BI queries increases, MySQL (in RDS) crashes and restarts, which is difficult to fix.

It is well known that the life cycle of a technology is surprisingly short. CoffeeScript and AngularJS are obsolete components (we plan to migrate to TypeScript and the latest Angular). When we adopted these technologies, they were quite advanced, and thankfully my preference for cutting edge technology didn’t cause any serious problems. I’m a big fan of CoffeeScript because of its concise functional syntax, which has greatly improved my productivity over the years.




Based on the above, you need to understand that you need to accurately time your budget and develop a strategy for technology turnover. You have to accept long-term “technical debt” when you adopt any technology.

Also, the components and libraries you write will be here for a long time, whether you write well or not — so, for the sake of future maintainers, you’d better spend a little more time on them.

We tried to make small improvements in the areas of code we dealt with. Sometimes, given the (always imperfect) general state of the code base, it can be stressful, and I make constant small improvements.

Finally, a quick note about testing: I found it really hard to get our team to write test code. I wrote test cases for many parts of our system and configured the test server to run automatically every time a code was submitted. Still, I rarely see others adding tests. I always wanted testing to be a priority on the team, but it wasn’t. Here are my ideas for solving the problem:

  • Offering refresher courses on how to write tests;

  • Require that critical features include at least one test;

  • Optimize our test server to finish in 10 seconds instead of 10 minutes (oops!) , so that programmers can see the test results in time.

In addition to purely technical decisions, a CTO should also manage people. Most of the day’s work will be managing, leading, hiring and firing people. I have to learn this throughout. Of course, as the practice goes on, I will become more and more proficient in these processes.

While employees are a company’s most valuable asset, the hiring process can also be exhausting. You probably spend more time thinking about hiring and turning down more people than you do getting new ones. You may need to filter more strictly. It never occurred to me how hard it would be to find the perfect startup team member, or how much time and effort it would take to find them.




Figuring out when to hire is also tricky: do you hire for the position now or later? Which positions should you hire for first? These problems are especially acute after you’ve been invested, because you feel obligated to get the most out of your money. Fortunately, we got some helpful tips from Michael Siebel and YC:

  • Start hiring when you feel the need for a position is urgent (e.g., when you’re running behind on a contract) :

  • Recruitment is to meet the needs of business development, not put the cart before the horse (this is mainly applicable to the early stage of the company has not formed scale);

  • Don’t hire someone to do something you haven’t figured out yet (some good candidates can give the company new momentum, but it’s often the magic founder who allocates the company’s resources to new developments).

All told, if you’re not sure if you need to hire for a particular position, you may be making the decision too early. We tried to hire people to deliver growth that we didn’t plan for ourselves, and most of the time we failed.

Staff management has been relatively smooth — regular and open checks on what is and isn’t done have helped me maintain a good relationship with my staff.

Management has been relatively smooth — regular, open communication with staff has kept me on good terms with my colleagues.




I find that firing people is a tough nut to crack at work. You can find a lot of helpful advice elsewhere, and I’ll just briefly reiterate that your gut instinct makes a judgment call long before you make the rational decision to fire someone, but firing someone is a painful process.

Good regular communication helps both sides accept the worst. Finally, based on a personal development plan, some people really rise to the challenge and become effective team members; Everyone should have this opportunity to show themselves.

One of the joys of growing a company is seeing some great people excel in their fields. I would like to express my sincere respect and congratulations to my entire team.


The original article was published on March 21, 2018

Author: Abstract bacteria

This article is from the cloud community partner “Big Data Digest”. For relevant information, you can follow the wechat public account of “Big Data Digest”