Introdução
Primeiro, algumas palavras sobre mim: sou um Data Scientist com mais de 2 anos de experiência comercial e 5 anos em codificação com Python. Trabalho principalmente com backend e IA. Nunca construí projetos inteiros por conta própria, mas em vez disso, geralmente me era atribuídas tarefas.
Mas depois de algum tempo, comecei a sentir que tinha conhecimento suficiente para tentar construir algo por conta própria. E então eu construí. Contrariamente às minhas expectativas, não foi extremamente difícil. Além disso, com meu cofundador, construímos em apenas 1 mês e já alcançamos algum lucro e mais de 1000 visitas sem qualquer anúncio pago.
Agora – por que você queria construir uma startup (se ainda não o faz)?
Não há um único curso ou projeto que me ensinou tanto. Quando você completa um curso, você aprende alguma habilidade particular. Mas quando você trabalha no produto como um todo, começa a entender o ciclo de desenvolvimento completo – desde o design até a construção e implantação. Aperfeiçoei minhas habilidades existentes, aprendi novas e comecei a entender como o frontend e o backend realmente interagem (e como você, como desenvolvedor Python, pode escrever APIs melhores que sejam mais fáceis de usar para seu colega de Frontend).
Outra razão é uma ótima adição ao seu currículo. Não apenas o tempo que você trabalhou em sua startup conta como experiência comercial de trabalho (contrário a projetos pessoais), mas também parece ótimo no portfólio (especialmente se for um site que pode ser visitado por algum RH).
Finalmente, a última e principal razão – dinheiro. Se sua startup for um SaaS (Software como Serviço), você pode tecnicamente pensar nela como uma fonte de renda passiva. E quando você construiu vários sites pequenos do SaaS, você ganha mais velocidade, profissionalismo e experiência – o que significa que leva muito pouco tempo para construir um novo produto que fará mais dinheiro.
Neste artigo, descreverei minha experiência na construção da minha startup e compartilharei algumas dicas e conselhos práticos.
Encontrando ideias
Você pode ter uma ideia do seu produto. Você pode não ter. Ou você pode ter centenas de ideias. A geração de novas ideias é um processo criativo, portanto não há um processo padronizado para gerar novas ideias.
Há, no entanto, tal processo para validar suas ideias:
- Verifique os mercados relacionados. Você quer construir um site para alugar livros? Verifique os tamanhos dos mercados de livros, serviços de aluguel, encontre a quantidade de livros vendidos no ano passado e assim por diante. Se você ver que alguns desses mercados estão em declínio nos últimos tempos, isso pode ser um problema. Os livros, por exemplo, estão ficando menos e menos populares com a aparição de e-books, aplicativos de livros e assim por diante.
- Verifique seus concorrentes. Se houver muitos concorrentes, você deve ter certeza de que sua solução é pelo menos 5x-10x vezes melhor. Se houver poucos concorrentes, ainda é um bom sinal – isso significa que você pode aprender com esses produtos, ver se eles são lucrativos, ver se há um ajuste de mercado. No entanto, se não houver concorrentes – a situação é complicada. Pode ser porque sua ideia é tão nova que ninguém pensou nela ainda. OU, pode ser que sua ideia seja o chamado “ideia de breu” – muitas pessoas tentaram construí-la, mas ninguém teve sucesso. Neste caso, você deve fugir dessa ideia o mais longe possível.
- Analise seus clientes e o problema que está resolvendo. Qual é seu público-alvo? Quanto eles estão dispostos a pagar? Quão frequentemente esse problema ocorre? Ele pode ser evitado?
E agora é o momento perfeito para apresentar minha startup – https://validator.yazero.io/. Ajudamos com o processo de validação usando IA, web scraping, várias APIs diferentes e feedback quantificável.
Outro conselho ao procurar ideias – tente usar sua “vantagem pessoal”. Você tem um diploma em algum campo específico como Física? Tente usar seu conhecimento daqui. Você tem um amigo em um escritório de advocacia? Tente perguntar a ele quais são os problemas que ele tem, como você pode ajudar/otimizar algum processo, e assim por diante.
E se você quiser saber mais sobre ideias – confira meu artigo anterior. É um guia para iniciar sua startup focado em pessoas técnicas.
Encontrando Co-Fundador
Você tem alguma parte da startup que você não quer fazer (como marketing, frontend, vendas)? A melhor solução é encontrar um cofundador – não apenas eles serão mais experientes nessa área, mas também estarão dispostos a trabalhar nela. Construir seu próprio produto deve ser interessante e divertido para você pessoalmente, então se houver uma parte que você não gosta, tente delegá-la.
Outra razão para encontrar um cofundador é a validação adicional. Eles sempre ajudarão a não se aprofundar demais em suas ideias que podem não ser tão boas, sempre fornecerão feedback para o produto e, finalmente, estão tão interessados em construir quanto você. Isso significa que você pode obter sua startup em execução 2x mais rápido e melhor, e às vezes até mais.
Por exemplo, se você não tiver experiência em frontend, aprender um novo framework pode ser realmente desanimador. Não apenas levará muito tempo, mas também consumirá seu recurso mais precioso – motivação. Mas então, se você delegar isso a seu cofundador que tem mais experiência, eles concluirão em pouco tempo, entregarão um resultado de alta qualidade e você poderá se concentrar em coisas que são interessantes para você.
Você pode encontrar seu primeiro cofundador em plataformas como YCombinator cofounder matching platform. Encontrei meu cofundador lá e estou muito feliz com essa decisão.
Além disso, algumas ferramentas de colaboração – em nosso fluxo de trabalho, usamos Todoist para atribuir tarefas e acompanhar o progresso, Github para versionamento e implantação automatizada e Figma para design e brainstorming de conceito.
Frontend
Finalmente, começamos com a parte técnica.
O principal conselho para o frontend (se você decidir implementá-lo por conta própria) é usar o framework que você conhece. Mesmo que esteja desatualizado ou todos os outros desenvolvedores o odeiem, se você conhecer, use. O que importa é obter sua solução para o usuário final. Se funcionar para eles, funcionará para você.
Há um problema comum entre os desenvolvedores de frontend iniciantes – eles sempre tentam seguir a última tendência, usar os “melhores” frameworks que algum youtuber popular recomenda e, no final, eles reaprendem tudo em cada novo projeto.
É muito melhor continuar usando o framework que você conhece e aperfeiçoar suas habilidades nele. Dessa forma, você saberá como corrigir seus bugs, desenvolverá mais rápido e terá alguns modelos para começar na próxima vez.
Se você for um entusiasta do Python, recomendo verificar meu Top-5 Bibliotecas Frontend em Python e Top-5 Bibliotecas Frontend em Python parte 2. Fiz uma análise abrangente das bibliotecas Python mais usadas para Frontend e comparei suas forças e fraquezas. Se você tiver alguma experiência em Python, usar essas bibliotecas será mais fácil para você, portanto você poderá concluir seu produto mais rápido.
Para implantação, existem duas maneiras:
- Usar algumas soluções existentes como Vercel, Netlify e AWS Amplify. Essa é a opção mais fácil, especialmente se você usar alguns frameworks populares como NextJS e React. A desvantagem, no entanto, é que a maioria dessas soluções não oferece implantação gratuita para uso comercial – por exemplo, no Vercel você teria que pagar US$ 20. O AWS Amplify tem um plano comercial gratuito, mas também tem um início a frio (se seu site não for visitado por usuários com frequência suficiente, levará ~4 segundos para carregar na próxima visita).
- Usar sua solução hospedada com provedores como Hetzner, AWS, Google Cloud, etc. Por um lado, geralmente não há camadas gratuitas. Por outro lado, a solução mais barata geralmente é muito barata. Por exemplo, na Hetzner você pode obter um servidor particular de 2 VCPU 4GB RAM por apenas 5€ (e isso geralmente é suficiente para qualquer hospedagem de Backend/Frontend com menos de 100 usuários simultâneos/sites não computacionalmente extensivos). Usar soluções hospedadas também dá a você muito mais controle e transparência sobre seu aplicativo. Outra vantagem da solução hospedada é que você aprende a configurar DNS, SSL, Docker e outras coisas, o que é um grande impulso para seu currículo e conjunto de habilidades.
Backend
Nesta parte, serei mais detalhado, pois trabalho principalmente na parte do backend em nossa startup.
Às vezes, surge uma pergunta – por que você precisa de backend? Por que não pode fazer tudo do lado do usuário?
A resposta é maior segurança, observabilidade, mais controle sobre seus pipelines, melhor registro em log e capacidade de usar maiores poderes computacionais. Se você estiver hospedando um grande modelo de ML, enviá-lo para o usuário e fazer os cálculos do seu lado geralmente é uma má ideia. Uma solução melhor seria seu servidor particular com GPUs e uma API para o Frontend usar.
As principais ferramentas que usei para o backend da minha startup são FastAPI com Pydantic, Gunicorn, Docker, Docker Compose e Nginx. Gosto do Docker porque fornece uma solução que sempre funciona, independentemente do sistema operacional, ambiente e assim por diante. Também é muito legal quando você tem vários componentes de seu aplicativo que devem ser executados simultaneamente – por exemplo, um banco de dados em paralelo com seu backend.
Uma coisa importante que você precisa em seu backend é monitoramento. Encontrei duas soluções separadas para esse objetivo – prometheus e FastAPI-analytics. Ambos lhe fornecem um painel legal que você pode usar para ver se sua API está lidando com os pedidos com sucesso, quais são os tempos de resposta, quais são os endpoints mais usados e assim por diante.
A vantagem de monitorar seu backend é saber se há um problema/bug em algum lugar, ou por exemplo, um indicador de que você precisa obter um servidor melhor com mais poder de RAM/CPU.
Geralmente implanto minhas soluções em VPS da Hetzner, pois é a opção mais barata.
Finalmente, há muitas pessoas que dizem que “Python é muito lento/pesado para ser usado em produção”, ou algo desse tipo. Isso não é verdadeiro em 99% das vezes.
Primeiro, se sua solicitação leva 5 milissegundos para ser processada em vez de 1 milissegundo, não há absolutamente nenhuma diferença para o usuário. Mas quando você conclui o desenvolvimento de sua solução em dias em vez de semanas, isso é uma grande vantagem.
Em segundo lugar, a maioria das bibliotecas está otimizada o suficiente/usa linguagens como Fortran/C/Rust por baixo dos panos, então no final você obtém a mesma velocidade.
Por fim, se você estiver construindo um aplicativo de IA e, especialmente, se estiver usando LLMs, suas gerações de resposta podem levar dezenas de segundos (o que não depende da linguagem de programação, mas do poder computacional/APIs/outras coisas). Então, se sua solicitação leva 20 segundos, faz diferença se algum cálculo do Python leva 0,1 segundos?
Resumo
Neste artigo, abordamos algumas das principais partes da construção de sua própria startup – por que você precisa dela, como encontrar aquela ideia perfeita, como construir o Frontend e o Backend e como colocá-los em produção.
Me diga se isso foi útil para você e se eu deveria escrever a segunda parte (sobre IA em produção, MLOps, Marketing, Publicação, Vendas, anúncios, modelos de preços e muitas outras coisas importantes).
Também posso entrar mais a fundo na produção do seu backend com exemplos e guias práticos. Então comente abaixo deste artigo, qualquer feedback é bem-vindo!
Obrigado por ler e feliz codificação!
Referências
- https://validator.yazero.io/
- https://yazero.io/
- https://ganhardinheirofacil.xyz/comecando-um-startup-guia-para-tecnicos/
- https://www.ycombinator.com/cofounder-matching
- https://python.plainenglish.io/top-5-python-frontend-libraries-for-data-science-91261a65e366
- https://medium.com/python-in-plain-english/top-5-python-frontend-libraries-for-data-science-part-2-4d07a48d2fde
- https://solara.dev/
- https://github.com/trallnag/prometheus-fastapi-instrumentator
- https://github.com/tom-draper/api-analytics