Será que você deve terceirizar o desenvolvimento do seu software?
Até alguns anos atrás minha resposta teria sido não. Porém, depois de investir em aproximadamente 100 startups, ter trabalhado em algumas e fundado outras minha opinião mudou.
Fazer com que uma startup atinja o encaixe com o mercado (product market fit) é difícil. O fundador de uma startup precisa gerenciar todo tipo de coisa para a empresa simplesmente existir; incluindo pagar salários, gerir processos legais, fazer contato com o contador, lidar com burocracias do governo, financiar a empresa, etc, etc, etc. Tudo isso antes mesmo de começar a pensar no que mais importa: O produto!
Num mundo ideal, o fundador de uma startup iria apenas conversar com usuários e baseado no feedback dos mesmos decidir que funcionalidades o produto deve ou não ter. Essas funcionalidades iriam então se manifestar na próxima iteração do produto sem demandar nada mais do fundador.
Porém, no mundo real existem duas possíveis situações para uma startup: O time fundador inclui um co-fundador técnico que vive e sonha com engenharia ou não tem um. No primeiro caso, desenvolver o software na própria empresa faz perfeito sentido. Afinal, ninguém vai criar um software melhor para a empresa do que um dos donos da empresa que estão sacrificando o seu tempo e renda para construir os seus sonhos.
A maioria das startups não possuem um co-fundador técnico que tem a experiência para sozinho construir, manter, proteger contra ataques cibernéticos, colocar no ar e monitorar um produto enquanto que simultaneamente desenvolve novas funcionalidades na agilidade necessária para atingir o encaixe com o mercado antes de acabar o dinheiro.
Quando eu ainda estava iniciando no mundo de startups, eu costumava desdenhar das startups que não tinham um time capaz de desenvolver o produto seu ajuda externa. Eu não poderia estar mais errado. Nem toda startup de sucesso foi fundada por engenheiros no vale do silício. Na verdade, muitas empresas de sucesso começaram terceirizando o desenvolvimento dos seus produtos incluindo: Alibaba, Slack, Github, BaseCamp e muitas outras.
Vamos pensar sobre startups na perspectiva de um investidor. Estava conversando com Romero Rodrigues o fundador do primeiro unicórnio brasileiro e gestor do fundo Headline que investe em startups e ele pontuou algo importante: O trabalho do CEO de uma startup é reduzir risco. Digamos que você acabou de começar e conseguiu um aporte de uma aceleradora ou grupo anjo. Um ano se passou e você esta tentando levantar a sua próxima rodada de investimento. A maior pergunta que os seus novos investidores terão em mente vai ser: O time conseguiu fazer o que disseram que fariam com o aporte da rodada anterior? Se o objetivo era construir o produto, eles o construíram? Se sim, o risco da startup abaixou e investidores serão mais propensos a investir. Se não, o risco aumentou! Afinal, a confiança que antes existia na abilidade da equipe foi reduzida.
Minha resposta agora para a pergunta de se startups devem ou não terceirizar o desenvolvimento dos seus produtos é: Depende!
Se o time fundador tiver a expertise requerida para desenvolver internamente, com certeza o faça. Porém, se não ja tiverem a expertise em interna, desenvolver essa expertise pode ser um risco desnecessário a curto prazo e, nesses casos, terceirizar para uma empresa competente pode ser a solução correta.
Proponentes do "faça você mesmo" ou não o facça (como eu um dia ja fui) tendem a levantar alguns pontos supostamente negativos sobre contratar uma terceirizada:
A terceirizada e a startup tem objetivos divergentes
A terceirizada não se interessa no sucesso de meu produto apenas em ser paga
Pode ser o caso, que algumas terceirizadas sem visão de longo prazo ou freelancers pensam dessa forma (eu certamente ja conheci alguns). Porém, assim como em todo mercado existem empresas mediocres, normais e excelentes. Uma empresa excelente vai se interessar pelo sucesso de sua startup e talvez até traga alguns dos riscos para se ou aceitem fazer o serviço por um valor abaixo do que geralmente cobrariam para criar uma parceria de longo prazo e lucrativa para ambas as partes.
Mais que isso, um funcionário não necessariamente tem incentivos melhor alinhados que um terceirizado. Lembra do ditado "contratem rápido, demita ainda mais rápido"? A retenção de funcionários em uma startup é uma tarefa árdua e cada funcionário que sai leva consigo conhecimentos importantes da empresa.
Retenção de funcionários, particularmente engenheiros, é difícil. A probabilidade de um funcionário numa startup ainda estar com a empresa depois de 2 anos é de aproximadamente 50%. O gráfico acima mostra a probabilidade do funcionário pedir demissão no primeiro ano. Então para se construir a expertise necessária para desenvolver software internamente é necessário estar continuamente recrutando e treinando novos talentos. O que, novamente, distrai do foco no produto e feedback de usuários.
Terceirizados podem desenvolver software de baixa qualidade
Isso é verdade! Porém, qualquer um pode acabar desenvolvendo software de baixa qualidade. Até mesmo o seu co-fundador gênio que esta balanceando 10 diferentes tarefas pode acabar desenvolvendo código que terá que ser jogado fora no futuro.
Tenho dois pontos a fazer sobre esse assunto:
Primeiramente, não escolha uma empresa mediocre para desenvolver o seu software. Pesquise sobre a empresa que você está contratando. Quem são os fundadores? Eles ja trabalharam com startups? Quando você conversa com eles a conversa é inteligente e instigante ou apenas um papo de vendas? Converse com as referências deles. Seja diligente. Coloque o mesmo esforço que você colocaria ao contratar um funcionário em escolher a empresa certa para lhe auxiliar.
O segundo ponto é mais contencioso: A que ponto código ruim é ruim para uma startup? A maioria das startups com as quais trabalhei tinham alguma forma de código espaguete em algum canto. Não por conta dos engenheiros que escreveram o código serem ruins (muito pelo contrário) mas por conta de startups frequentemente mudarem de direção.
Em muitos casos, startups mudam tanto de direção que acabam com grande parte do produto anterior sendo descartado. Alguns anos atrás, trabalhei numa startup financiada pelo Founder's Fund do Peter Thiel. A gente costumava lançar uma (ou mais) nova funcionalidade por dia. Muitas das funcionalidades permaneciam apenas 1 ou 2 semanas antes de serem descartadas por não terem uma boa resposta do mercado. Isso é muito importante. Desenvolva rápido, escute feedback (e dados) dos usuário e itere. O famoso círculo do "build, measure, learn" de Eric Ries.
Barreiras de comunicação
Contratei uma empresa indiana para desenvolver meu software e nunca consigo falar com eles quando preciso
Novamente, seja diligente em escolher a empresa com a qual quer trabalhar. A conversa com eles foi engajante? Foi uma conversa focada no valor que trariam para a sua empresa ou em aspectos técnicos que muito provavelmente não serão importantes a longo prazo?
Seja o seu primeiro funcionário ou uma empresa terceirizada, aprenda tudo que conseguir sobre eles antes de tomar uma decisão. A melhor hora para demitir alguém é antes de contratar.
Alguns fundadores se preocupam que terceirizados podem ser mais difícil para comunicar ideias simplesmente por não serem partes das discussões internas da empresa ou não estarem integralmente disponíveis. Porém, isso pode ser resolvido escolhendo a empresa certa. Se alta disponibilidade é importante para você, escolha empresas com horários de funcionamento próximos do seu e deixe claro de antemão que espera ter um ponto de contato sempre disponível durante o seu relacionamento com eles.
Conclusão
Se sua equipe não possui a expertise necessária para desenvolver software internamente seriamente considere terceirizar o desenvolvimento do mesmo. Converse com os representantes das empresas que lhe interessam. Pesquise sobre a empresa e feche o contrato sabendo que se você escolheu a empresa certa você pode significantemente reduzir os riscos de sua startup.