Over the past several posts I’ve talked about the technical roles you might need to fill in your startup along with some of the factors you need to take into consideration, but I’ve only briefly touched on answering the key question of whether you need a CTO.

Let me start by looking at the two easy cases.

You probably don’t need to hire a CTO if you have a very simple app for which you are not planning on adding new features and functionality. In this case you can hire a firm, on a project basis, to develop and roll-out the app.

At the other extreme, you do need to hire a CTO if your application is complex, has cutting edge technology, is an MVP with substantial plans for improvements and enhancements, requires a sophisticated hardware architecture to support it, will require a product evangelist and/or you have substantial investment capital.

That leaves us with the large, and more complex, middle ground. I’ll break this up too since the skill sets you need at the inception of product design and development are most likely going to be different than the skills you will need later on.

I think that when you are creating a product you need someone with an immense amount of technical experience, particularly in creating products and architecting for the future, a visionary, a great project manager and someone who has the credibility to scope and make the tough calls on features and functionality in the initial release – all wrapped up into one. This really means you’re looking for someone who has led product development at a startup before. And, you’re certainly looking for someone who has more experience than a developer. Technical decisions made at this stage of a startup can have tremendous cost and timeline implications, even years into the future. You want to give your concept the best chance of success at the same time you want to conserve what are most likely limited investment funds. You also want someone who can identify and bring on the right people, when they are needed, to fill the technical roles that I previously discussed. Therefore, I think that you need someone with previous experience at a startup to fill the CTO role during product conceptualization, development and rollout.

However, after an initial product has been developed, there are certainly scenarios where you may only need a developer and/or someone to monitor and administer your application and not need the services of a CTO. For example, you launched a great product with a solid infrastructure. Your organization is now into the sales and marketing phase and acquiring customers. Depending on the complexity of your product, you may not need a CTO for a period of time. Minor functionality additions or bug fixes can be handled by a developer. This can save you money, especially if the sales cycle turns out to be longer than expected. At some point you may need the services of a CTO again to handle growth and new functionality, but you may be able to save on this expense for a period of time. Several other options in this scenario are part-time or fractional CTOs that I will discuss in future posts.

To conclude this series of posts, there are multiple considerations to take into account on whether you need a CTO, and multiple technical roles that need to be filled in a tech startup. In some instances it is clear that you will need a CTO to start, others where you don’t need a CTO and then a big gray area where you may or may not, but also may for a time and then not. If you do need a CTO, make sure you look for one with the experience and expertise to get your product to market efficiently and effectively, especially in what is likely to be a resource constrained environment.

In follow-up posts I’ll talk about part-time and fractional CTOs.

In a previous post, I started talking about the technical roles an organization would need to fill as a prelude to discussing whether the organization needed an actual CTO.

The roles I previously discussed were:

• Technical Business Analyst
• Software Architect
• Infrastructure Architect
• UX/UI Designer
• Developer

In this post, I’ll talk about:

• Technical Project Manager
• QA Engineer
• System Administrator/Database Administrator/Network Administrator
• Technical Product Evangelist
• CTO

Let’s get started!

• Technical Project Manager

A software development project requires a balance between technical and project management skills. The TPM oversees and manages most aspects of the requirement analysis, specification development, coding/development, testing and implementation processes.

• QA Engineer

From https://www.sokanu.com/careers/software-quality-assurance-engineer/

Quality Assurance – A software quality assurance engineer is someone who monitors every phase of the software development process so as to ensure design quality, making sure that the software adheres to the standards set by the development company. Software quality assurance engineers make sure that new products work before they are released to the public.

• System Administrator/Database Administrator/Network Administrator

From Wikipedia

A system administrator, or sysadmin, is a person who is responsible for the upkeep, configuration, and reliable operation of computer systems; especially multi-user computers, such as servers.
A database administrator (DBA) maintains a database system, and is responsible for the integrity of the data and the efficiency and performance of the system.
A network administrator maintains network infrastructure such as switches and routers, and diagnoses problems with these or with the behavior of network-attached computers.

These are the people who keep the servers, databases and network running smoothly. They initially implement the Hardware Architect’s design, but thereafter they are responsible for keeping things running.

• Technical Product Evangelist

From Wikipedia – https://en.wikipedia.org/wiki/Technology_evangelist

“An evangelist promotes the use of a particular product or technology through talks, articles, blogging, user demonstrations, recorded demonstrations, or the creation of sample projects.”

Essentially, this person promotes the product and the technology used by the product, both inside and outside of the organization.

• CTO

Even if I’m talking about whether you need to hire a CTO, there are some CTO like roles or functions that someone needs to address in a startup. These would include the following:

o Estimate development time and costs. Developers and Project Managers have some of these skills, but for larger projects you may need someone with a fair amount of experience with this.

o Work with architects to include provisions for scalability and future functions. Knowing what the business objectives and growth plans are and planning for that growth in the initial design can prevent costly and time consuming efforts later on. Again, experience helps with this function.

o Determine features and functionality for MVP – 80% of the functionality for 20% of the time and cost. Once again, experience and seniority are needed to be able to identify what functionality is important, but you also need someone with the credibility to get the business people to agree to an initial reduced set of functionality.

In my next post I’ll cover whether you need to hire a CTO or just hire the a la carte skill sets to fulfill these roles.

One site that wasn’t outwardly impacted by the February 28, 2017 AWS us-east-1 S3 outage was Netflix.

The reason? While Netflix relies on AWS, it also plans for (e.g. expects, unlike most organizations), architects for and tests failure.

Netflix practices what it refers to as multi-region, active-active replication – replicating data between different AWS regions for a resilient architecture. Netflix recognizes that a complete Region outage is unlikely (until February 28th), but still possible.

A complete discussion on Netflix’s architectural approach can be found in their December 2, 2013 Blog post – Active-Active for Multi-Regional Resiliency.

But more importantly, Netflix tests failure – on their live, production environments!

Would you do that?

Netflix does!

In fact, they created a suite of testing tools, the Simian Army, that they routinely use to invoke and test failure and failover. They started with what they call Chaos Monkey which is a service running in AWS that randomly terminates EC2 instances within Auto Scaling Groups to test resiliency. However, their suite also includes Chaos Gorilla which takes out an entire Availability Zone and Chaos Kong which simulates the outage of a Region. Many of these tools were released into the wild on Github so you can test your own architecture and ability to deal with failure.

As we know, redundancy and resiliency come at a cost. Not only in the architecture, but with the cost of additional services. Adrian Cockcroft, former chief architect for high performance technical computing at Netflix estimated that Netflix’s active-active architecture added about 25% more in costs, with most of that extra cost being in the storage replication.

The bottom line is that it is technically possible to plan for, architect for and test the possibility of an AWS region failure. The Simian Army is more than willing to join in your fight.