How to Build a Startup? CTO, Freelancers, Agency?
By: Daniel De Castro Ruivo ツ
Tags: MVP, Software, Startup, Developer, Cto

As a non-technical founder, you’ve had your lightbulb moment. The idea that resulted in the business-driven vision for your startup. There’s just one problem. You lack technical skills and have no idea how to build a startup,

It’s a problem every non-technical founder faces, myself included. Before creating Altar.io, I co-founded over seven startups. I’m not a developer, so I’ve tried many approaches and learnt the hard way.

In this article, I’ve taken my experience and created a list of the options you have to build a startup. They are:

Learn how to code

Find “The CTO”

CTO as a Service

Hire a team of freelance developers

Outsource with a software development company

Build a Startup by Learning to Code:

We shouldn’t waste too much time on this option because it is such a dangerous one. Many founders think seriously about this option, and some even try it. In my experiences, it’s a mistake.

There are endless reasons not to do it, the simplest one? You need to focus on the business vision, growth and strategy — on what moved you to start this journey.

To achieve your vision you’ll need to focus on creating core connections, think about your target market and how to penetrate it. That’s without taking into account dealing with all the hurdles that will come up along the way.

Don’t underestimate:

The difficulty of developing a good piece of software (you should put it in the hands of someone experienced). The focus and resilience you will need to carry out your plan on the road to success.

My advice is to be laser-focused on what you can do better from a business standpoint — not on learning to code.

Expert Tip: While learning to code isn’t going to help move your business forward; I recommend learning the basics of tech so you can follow the conversation with potential tech stakeholders.I’ve written a crash course on tech for non-tech founders that can help you get started.

Build a Startup with the “Soulmate CTO”

Many will tell you it’s the only option you have to build a startup, telling you “investors invest in teams” so “you must find a CTO.”

And while I agree that finding the right CTO for your startup is the most idyllic one, it’s not the only one –but more on that in a bit.

First, bear in mind that finding a CTO isn’t going to be easy. Take it from me — it took me over 30 months and 300 headaches before I found the right CTO for the job.

It can be very tempting to commit to the first, half-decent, candidate you meet with. After all, you want to build your MVP as soon as possible and reduce your time-to-market.

But remember, choosing your CTO is one of the most important decisions you will make for your startup — and it shouldn’t be taken lightly. There are several traits to look out for that will help you separate the wheat from the chaff.

Here’s a shortlist of the traits your CTO should embody:

1. Passion

Your dream CTO should have as much passion for your idea as you have, or at least come a close second.

Your CTO needs to be your right hand — think Jobs & Wozniak. If they don’t have a passion for your company; during the storms, you will be navigating the inevitable hurdles alone.

2. Expertise

You should find a CTO who is, at the very least, as good at his job as you are at yours. You should be equals, working in different disciplines, towards the same goal.

If they don’t possess the necessary technical expertise it can lead to technical debt — such as substandard code. You should find an unbiased technical advisor to review their portfolio.

3. Commitment

There is nothing worse than “getting married” to a CTO who’s not fully committed. You will end up living in the “mistress syndrome”. This occurs when your CTO has another full-time job and ends out treating you and your startup as a “side-gig”. You’ll commit to your company more than them — creating an imbalance in your relationship that is harmful.

4. Alignment

This point is highly relevant if you are bringing your CTO on board as your technical co-founder.

You will both be responsible for balancing the needs of the business, technology and even product; now and as your team grows. Therefore the overall paths you both envision for your startup have to coexist. By no means will you agree on everything 100% of the time, which is why it’s essential to have those lines of communication open.

5. Responsibility

For sure you agree that responsibility is a key role for success and you want to be successful.

There are many ways to test responsibility. My pragmatic and simple suggestion, in this case, is to ask for a simple deliverable. It should be something not too complicated, and you should give him a feasible time frame (again, if you are not sure on this ask an unbiased techie friend). It could be a piece of a technical challenge, but it could as well be a roadmap, budget estimate, etc.

Simply put, if he commits and delivers good work: perfect. If he commits and doesn’t deliver: huge red flag.

6. Leadership Skills

Excellent leadership skills are vital in a good CTO. You need to find a CTO that can strategically build, grow and lead your technical team in line with your startup’s goals.

It’s their responsibility to inspire and motivate your technical team. You could hire the best technical team on the planet but, if your CTO can’t lead them, they will be ineffective.

It’s worth keeping in mind that great developers don’t always make great CTOs. There is a famous occurrence in IT teams where, through promotion, you lose a great developer and gain an awful boss.

Make sure you find a CTO with the soft skills needed to do the job.

7. Management Skills

As well as great leadership skills, you need to find a CTO who has great management skills. By this, I mean an ability to evaluate the timeframe and effort needed to build a product.

If you don’t find a CTO who is realistic on the timeframe you will end up with considerable deviations and deliverables as you build your product. This will affect not only your costs but also it’ll increase your time to market.

Ask your candidate to estimate the time it will take to build your product. This allows you to discover your potential partner’s ability to forecast time to build; as well as his ability to spot the critical points. These are the points in the web development cycle where it’s more likely to “hit an iceberg”. Talented CTOs and developers should, almost instinctively, identify these critical points.

Alongside this ask a software development company to do the same thing. Most agencies will offer this service in the form of a free quote or similar.

This small test will tell you if your CTO is able to spot the critical points and whether or not his time estimations are realistic.

CTO As a Service

Finding a CTO with these traits, in your budget, at the right time is extremely hard — especially for an early-stage startup. If you can’t find them you can also consider looking for a CTO as a service.

This will give you more time to find your dream CTO. Moreover, if you find the right candidate they can give you precious help on strategy, building a team, launching and getting investment.

Related: 4 Steps to Select The Right Technical Partner To Help You Build a Startup

Build a Startup With a Team of Developers

At first glance, it seems like a great second option: flexible and no commitment before having an experience.

I have lots of experience working with freelance developers. I like the flexibility of picking the “perfect” profile for each challenge. I keep an organized database of all the freelancers I’ve worked with including a detailed profile and history of works together.

Every time I have a project where I need to distribute work, I can pick the best one for each role. However, choosing freelancers is not always a sea of roses, be aware of these aspects when considering this option if you don’t have a lot of experience doing it.

1. Trust

How do you know you can trust freelance developers for big decisions? Choosing the best option in terms of programming language and architecture be done by someone with a great deal of experience.

Normally, your CTO or a software development company would advise you on this. When it comes to a freelance developer, you need to make sure they don’t try to sell you what they do for a living as your best option.

Take a PHP developer as an example. You bring them your product vision which, for argument’s sake, should be built in Node.js.

They will either:

Tell you honestly that you need a Node.js developer and put you in contact with another developer

They will be honest, but not have the experience to know that your product should not be built in PHP

They will lie and tell you that PHP is the best language because they want the job.

This will, again, require a non-biased tech advisor to help you make the decision. This could be an impartial developer or a software development company.

2. Management

Have you ever managed a team of developers? If you haven’t, be aware of what you are getting into. There are 10 Archetypes of Developers, each has its specific characteristics. But in general terms, developers are not easy to manage — especially when you are not experienced.

3. Communication & Availability

Just as with a CTO, you must be able to communicate with a freelance developer.

4. Dependency

The freelance developer you choose must follow the industry standard for organisation and documentation. If they don’t their code will be very difficult for other developers to work on as your team expands and changes. Whether it’s TDD (Test Driven Development), CI/CO (Continuous Integration/Continuous Deployment), you name it they have to follow it.

5. Scalability

You know you will need to scale sooner or later. This one relates to the previous point (dependency) but it is wider than that. When you chose to work with a developer, you choose to have one resource. If you need more resources you will have to through the process all over again.

6. Reliability

When managing freelancers in the past, I’ve experienced a 75% failure rate on delivery & deadlines when first working with a freelance developer. If they miss a deadline I will rarely work with them again.

One of the reasons for a one-work-stand (not repeated developers) is that they can’t make a proper time estimation. In my experience, they miss the deadline by ~ 200%. This doesn’t make them delinquents, it’s extremely hard to make an accurate time estimate for software development.

So the technique we’ve adopted, also for code quality assessment is: we start with a simple task assignment. For example to create a simple endpoint in our API. If it goes well we give them a more complex task, and then we evaluate if we keep them or not.

This is a time-consuming technique, that may not sound attractive as you want to get things done. I advise, however, you play it safe; I always do it and don’t regret it.

7. Work Quality

The same applies here as it does with a CTO. It’s vital to ask an exempt technical third-party to review the developer’s portfolio and assess the quality of previous work

8. Security & Confidentiality

In my experience, I never had a problem with security or information breach with a freelance. However, I chose to work with delicate matters only with people I already trusted. So if your startup has a patent being submitted, or any kind of secret sauce you should play safe through an NDA.

Build a Startup with a Software Development Company

If you decide to build a startup with a software development company the inherent risks are the same as outsourcing anything that is not a commodity. To that end, you must carefully pick the right partner, outsourcing your product’s execution is a critical business decision. There are many factors to consider to make sure you choose the right agency for the job :

1. Record and Experience

You must validate the quality of the software development company’s previous work. For an MVP it’s easy to validate their UX/UI design quality looking at their portfolio.

In terms of development quality, if you have a geek-friend, it’s also easy to evaluate the code quality via their git repository.

2. Technology & Infrastructure

You need to ensure you choose a software development company with experience in the right tech framework for your product. Be aware of generalists. If you hear:

“We’re not stuck to a technology … we can do all stacks and technologies … we can do everything”

It actually means:

“We’re not specialized in any technology”.

You want a team of specialists that have mastered one or two technologies/stacks. Not a team that gets distracted by the next shiny new framework while leaving the older one half learned.

3. Cost & Size Match

It’s important to find a software development company with a compatible pricing structure.

Don’t get me wrong, neither of us would mind Elon Musk as a tech partner, but onboarding him right now may be slightly challenging, budget-wise.

Conversely, if you pay peanuts you get monkeys. You need to outsource to a software development company with experience, professionalism and good quality. If you invest well at this stage you really will get what you pay for.

Don’t underestimate the importance of this. At Altar.io we’ve often had to rebuild a founder’s project from scratch. This happens because the client previously chose to outsource software development to the cheapest company they could find.

There’s no definitive answer to the question “how much should software development outsourcing cost?”, but you can use this price simulator as a useful reference.

4. Scalability & Flexibility

Look for a software development company that offers flexibility in terms of team size and allocated time. You don’t want to get into a waterfall contract that is not flexible. You should try to commit with small sprints and deliverables instead of getting into a contract of months and months.

Software is a living organism. As such, your software development needs will change throughout the process and you need to adapt and evolve with it. By committing to a smaller, project-based, working relationship there is no real pressure to sustain it long term. This allows your company to hire the agency “as and when” it’s necessary. This not only makes everything more flexible but also reduces costs.

5. Involvement

The software development company you outsource to has to be committed and involved. Otherwise, they’ll just fulfil your contract with eh minimum effort possible. Beware of the “Yes Man”. If an agency says yes to everything, it’s a huge red flag and screams sleazy salesman.

They should challenge your product vision and throw their expertise into the mix. This not only shows their expertise as a product builder; it demonstrates a desire to be involved with your product.

Related: 10+ Reasons Why Outsourcing Software Development Fails

6. Lean, Product-Centric Approach

A software development company with a Lean approach will usually propose cutting features from your initial list. In my experience, if I’m talking with a software development company that’s proposing to reduce the scope, it immediately shows me I can trust them.

It tells me that they are experienced and have a product vision. Moreover, it shows they are not “salesy”. Putting it bluntly, by reducing the scope they are reducing the budget (contradictory to their financial goals).

7. Time, Roadmap & Process

Building a startup product is a complex task. Is the software development company clear on the process? The agency you outsource software development with must have a solid structure and be transparent. Make sure you know what the process will entail before you sign on the dotted line.

8. Communication

If you decide to build a startup with a software development company fluent communication is vital. They need to understand your project requirements fully if they are going to successfully execute it.

If they misunderstand the scope it risks feature misinterpretation. Both of which will have a huge impact on your roadmap and budget.

Most product-centric software development companies solve this by taking a deep-dive into your product before writing a line of code. This usually includes user stories, UX prototypes and a clickable UI prototype.

When we talk about communication, its worth mentioning approachability. If they aren’t approachable, it will be extremely hard to keep lines of communication open — which is vital to a good working relationship.

9. Working Culture Compatability

It is important that you outsource your software development to an agency that speaks your “language.” I don’t necessarily mean this literally, although it is a big help. They must have a working culture that aligns with yours in terms of commitment, schedules and timekeeping.

10. Dependency

The software development company you outsource to must follow the industry standards for project organization and documentation. So what I highlighted regarding freelancers in point four also applies here. You must take extra care when dealing with an agency or face a “lock-in nightmare” — of which there are two kinds:

Legal Lock-In : If your IP is on the agencies side after the project is closed, you may not be able to take it to other parties in the future. Make sure, when signing the contract, that the IP is yours (which is not always possible) or the software development company will licence it to you eternally with no extra fees. Otherwise, you risk being locked-in with them and calling your lawyers to help you out of it.

: If your IP is on the agencies side after the project is closed, you may not be able to take it to other parties in the future. Make sure, when signing the contract, that the IP is yours (which is not always possible) or the software development company will licence it to you eternally with no extra fees. Otherwise, you risk being locked-in with them and calling your lawyers to help you out of it. Code Lock-In: If the software development agency doesn’t follow the industry standards in terms of code and architecture, future tech partners may not understand it — or it may simply be unusable. This may result in completely rebuilding your product or being locked-in with an agency. The best way to avoid this is covered in point one: Record & Experience.

Wrapping Up

Of the top 20 reasons startups fail, accumulatively, 53% of failures are team-related. Harvard Business Review also reports that 88% of Founders say that assembling your founding team should be given a high priority.

As we’ve mentioned, you can’t take this decision lightly.

Building a startup by learning how to code or managing a bunch of developers by yourself, is a risk, and I would avoid it. We agree the idyllic option is finding a soulmate-CTO from day one, and if you were lucky to have found him/her then, for sure, you should stick to your buddy.

Related: 7 Traits to Consider if You Want to Find the Perfect Co-Founder

I guess that’s not the case, otherwise, you wouldn’t be reading this article until the very end. Don’t worry, you are among the majority of non-tech entrepreneurs. It’s very unlikely that you’ll find this person in a seller’s market.

We are currently in reversed HR dynamics as it pertains to finding developers: the talent picks the company — not the other way round. This is due to more demand than supply. For example, last year for every five developer job postings, only one was filled.

On top of these metrics, the percentage of developers who are capable of the job is low. And out of those who are good, many have communication or commitment problems.

All this to say, if you are struggling to find a technical partner, it’s not because you are doing something wrong; it’s just the state of the landscape.

So if you haven’t found your soulmate-CTO yet, I strongly suggest you outsource your software development to a highly experienced team with a proven track record. Just make sure you check if it’s a viable option for your startup first, as not all business models will allow for it.

Many successful startups started by outsourcing software development while they searched for their in-house development team. Skype, Slack, Klou, Staff.com, GitHub, MySQL, Opera, JPay… Well, you get the idea.