Categorias
Tech Tecnologia

Meu app viralizou e NÃO aguentou! Otimizando sem gastar mais

O sonho de todo mundo que tem um projeto de aplicativo é vê-lo viralizar e lotar de gente usando, não é? Pois o meu aplicativo viralizou… e não deu conta da quantidade de acessos.

Isso aconteceu com a Fliptru, meu projeto de plataforma de autopublicação de quadrinhos online.

Resolvi escrever esse post para compartilhar um pouco da experiência de ver a Fliptru explodindo de usuários e saindo do ar graças a um vídeo do Youtube.

Também vou aproveitar pra falar de como resolvi o problema de performance que já vinha afetando a plataforma há anos.

Contexto inicial

Quero começar dando um contexto sobre a história e a situação atual da Fliptru.

Sou a única pessoa que mantém esse projeto rodando, financeira e tecnicamente falando. Desenvolvi a plataforma e a mantenho no ar no meu tempo livre.

Sua primeira versão foi implementada em algumas semanas no primeiro semestre de 2019 e a coloquei no ar usando um serviço de hospedagem de $10 onde o banco de dados e o servidor já estavam inclusos.

Manter a plataforma era muito barato e simples neste começo. Pouca gente usando, poucas funcionalidades, baixo custo do serviço de hospedagem…

Então, ainda em 2019, recebi um aviso de que o serviço bom e barato que eu usava ia simplesmente deixar de existir. Me vi na posição de encontrar uma alternativa pra hospedar a Fliptru em poucos meses.

Contratei um amigo que trabalha com infraestrutura para fazer a migração da aplicação para a AWS.

Ele me deu algumas opções incríveis para a infra do projeto.

Opções com auto-escaling, load balancer e etc (guarde essa informação), mas eu não tinha grana o bastante pra pensar em algo tão avançado e TÃO caro.

Então, entre as opções de infraestrutura que ele me apresentou, escolhi a versão mais barata e menos robusta. Só uma máquina EC2 com Docker rodando e o banco de dados eu mesmo resolveria com um serviço de fora da AWS.

No primeiro ano usei um cupom de 100% OFF na AWS, então, nada de custos muito altos.

Nota: a infra do projeto tem mais detalhes e outros serviços que uso, mas não são relevantes para a história que vou contar, então vou deixá-los de lado.

Bem, depois que o cupom de um ano de AWS na faixa terminou, os custos para manter a plataforma no ar subiram de forma expressiva. O que já era previsto.

Enquanto isso o projeto ganhou relevância entre o nicho de quadrinistas independentes e hoje é referência na área graças a comunidade incrível que se formou em volta da Fliptru, o que me deixa super orgulhoso.

O crescimento orgânico

A nossa comunidade é super engajada e ajuda muito a Fliptru a se divulgar e, consequentemente, a crescer.

Nunca gastei um centavo com anúncios pagos nestes mais de quatro anos de projeto. Mesmo assim, crescemos em uma taxa média de mais de 100% ao ano.

Veja o crescimento usual em 28 dias entre um mês (junho/23) e outro (julho/23) no Google Analytics.

São cerca de 14% a mais de usuários de um mês para o outro.

Lembrando que o GA considera usuário como uma pessoa única que visitou a página no período.

Eu gosto muito de acompanhar esse crescimento pelo Google Analytics e ver quantas pessoas estão usando a Fliptru nestes períodos.

Até agosto de 2023 nós, lentamente, ultrapassamos as 20 mil pessoas lendo quadrinhos independentes na Fliptru. Ver isso acontecendo é incrível!

A lentidão da plataforma

Com o crescimento da comunidade, a partir do segundo pro terceiro ano de operação, as primeiras reclamações de lentidão da plataforma começaram a aparecer.

Em horários de pico a experiência de navegação ficava bem mais lenta do que o normal.

Sempre assumi que o problema era que o serviço de banco de dados que eu usava era péssimo.

Eu recebia alguns erros de timeout do banco de dados durante estes períodos… então parecia obvio que eles tinham um serviço instável (guarde mais essa informação).

Cheguei a testar o Datadog para tentar encontrar o gargalo, mas sem sucesso.

Então continuei assumindo que tinha que migrar o banco de dados para resolver esse problema.

Alguns meses atrás eu implementei o Memcached para usar cache pra mitigar esse problema, já que ele estava ficando cada vez pior.

Depois de aprender muito sobre performance e cache, eu pensei ter conseguido um resultado melhor na Fliptru.

Só que algumas requisições ainda demoravam muito durante horários de pico… parecia que eu ia ter que migrar mesmo o banco de dados, mas não tinha tempo e nem dinheiro pra isso por enquanto.

Até que…

O dia em que a Fliptru parou

Domingo, 20 de agosto de 2023.

Os primeiros alertas do Cronitor (serviço que uso para monitorar a Fliptru) começam a pipocar no meu email.

A plataforma está super lenta e saindo do ar o tempo todo.

Fiquei super frustrado mais uma vez com o serviço de banco de dados e ainda mais decidido que estava na hora de migrar para outro provedor, mas não dava pra ser agora.

Soltei um aviso pra comunidade de que, por “problemas em um serviço terceiro”, estávamos com instabilidade na plataforma durante aquele dia.

Eu esperava que seria mais um dos (raros) dias em que o serviço estava fora do ar.

Abri chamados no suporte do serviço de banco de dados e eles responderam que não havia nada de errado da parte deles.

Fiquei com ainda mais raiva deles e fui pesquisar quanto custava servir o banco na AWS e, imediatamente, desisti da ideia porque era financeiramente inviável.

Tinha que ser o serviço do banco de dados, porque eu estava recebendo centenas de erros de timeout deles.

“Amanhã vou tentar umas mudanças de emergência para diminuir a carga no banco.” – pensei ao ir pra cama naquela noite.

O dia depois de ontem

Acordei cheio de ideias para melhorar a performance da aplicação e, pela manhã, fiquei sambando entre executar as tarefas do meu trabalho “9to5” e lidar com a plataforma caindo o tempo todo.

Até que, do nada, resolvi conferir o Google Analytics… e foi isso que eu vi.

Na verdade o que eu vi foi um número inacreditável no bloco “Usuários nos últimos 30 minutos“, eram cerca de 560 pessoas onde normalmente mostrava 50 e poucas.

Fui checar os detalhes de uso e vi que todo mundo estava lendo o quadrinho Sense Life.

Imediamente segui o meu “protocolo de viralização de quadrinho da Fliptru”.

  1. Acessar o Google
  2. Procurar pelo nome do quadrinho que tá viralizando
  3. Encontrar de onde vem o tráfego pra ele

Normalmente acho um post do Twitter apontando pra algum quadrinho que viralizou por lá.

Note que, por eu ter um protocolo de viralização, isso já aconteceu algumas vezes no passado, mas nunca com o tamanho que Sense Life estava tendo naquele momento.

Seguindo meu “protocolo” eu descobri que o canal AniRap tinha lançado um vídeo-clipe em animação com um rap do quadrinho Sense Life.

Nunca tinha ouvido falar desse canal antes, mas ele tem milhões de visualizações em cada vídeo que lança.

E lá estava, na descrição do vídeo o link oficial pro quadrinho Sense Life é o da Fliptru.

Mesmo com nosso link direto lá, provando que as pessoas não leem descrição de vídeo no Youtube, a maioria das pessoas estava achando Sense Life através da busca no Google.

Olha, Sense Life já é um quadrinho com muito mais engajamento na Fliptru do que a média da plataforma, mas depois desse vídeo a coisa virou uma loucura!

Agora eu tinha que dar um jeito de fazer a plataforma aguentar esse tráfego louco!

Tentando, sem sucesso, manter a Fliptru no ar

Adicionar o cache e remover algumas requisições extras até que ajudou a manter a plataforma no ar por mais tempo. Mas não foi o bastante para os horários de pico.

No d+1 (um dia depois do incidente) a Fliptru continuava caindo e sendo péssima de navegar.

Comecei a ficar desesperado… eram milhares de novas pessoas conhecendo meu projeto e essa não era a experiência que eu queria que eles tivessem no primeiro acesso.

Continuei subindo melhorias e alterações de emergência e soltando avisos pra comunidade do que tava acontecendo.

Mas nada realmente concertava o problema.

No d+4, terça-feira, dia 23, eu decidi abandonar o barco.

“É só isso. Não tem mais jeito. Acabou, boa sorte.”

Vanessa da Mata

“Uma hora o hype vai embora e a plataforma vai voltar ao normal.” – pensei.

Nada como deixar o inconsciente resolver o problema

Não me recordo para onde eu estava dirigindo, mas me lembro de qual era o trecho da estrada onde eu estava na hora em que a solução me veio, no meio de uma conversa com a minha esposa.

Depois de tentar “não pensar mais no problema”, lá estava ela… a causa disso tudo surgiu na minha cabeça como se fosse óbvia!

Não só a causa deste problema atual, mas de todo o problema histórico de lentidão da plataforma.

Durante as inúmeras horas procurando formas de otimizar todas as pontas do aplicativo, estudei as configurações do próprio banco de dados para saber se tinha como otimizar algo por lá.

Lá eu vi que 100 conexões era o máximo que o banco aguentava por vez.

E foi aí que eu percebi o que realmente estava causando tudo isso.

Desde os primeiros meses da Fliptru eu quis que os usuários tivessem informações sobre como os leitores estavam consumindo suas obras.

Pra isso eu criei endpoints que coletam dados de uso toda vez que um usuário lê uma página ou acessa detalhes de um quadrinho.

Bom, dezenas de milhares de pessoas estavam lendo Sense Life.

Ficou super claro que o banco era o gargalo sim, mas não por culpa do serviço terceiro que eu usava, mas sim por conta de um decisão de arqutiteura que eu fiz lá no começo da plataforma e nunca mais tive tempo de repensar.

Parecia tão óbvio agora… a falta que faz ter mais de uma cabeça pensando nas soluções, né?

Bom, saber a causa do problema é 50% da solução.

Agora é sentar na frente do computador e achar um jeito de coletar essas informações de uso sem abrir centenas de conexões com o banco de dados ao mesmo tempo.

Custo x benefício

Como eu comentei antes, a pessoa que fez a migração da infraestrutura da Fliptru tinha me oferecido uma arquitetura que seria auto-escalável e não enfrentaria esses problemas.

Eu devia ter escolhido essa solução mais robusta então?

Não. Nem pensar.

Se eu tivesse escolhido ser auto-escalável, a plataforma até não teria caído durante o viralização de Sense Life, mas eu provavelmente teria uma dívida gigantesca no meu cartão de crédito agora mesmo.

Estou falando de milhares de dólares…

Então, vou deixar a plataforma caindo sempre pra não ter que vender um rim?

Também não. Vou resolver de forma barata.

Resolvendo o problema com baixo-custo

Comecei a quebrar o problema em partes e pensar na solução para uma parte por vez.

Primeiro, vou usar uma operação “bulk” para gravar multiplos dados abrindo só uma conexão por vez.

Assim, milhares de usuários acessando ao mesmo tempo vão abrir uma única conexão com o banco de dados para persistir os dados de uso.

Mas como fazer isso?

Preciso acumular os dados em algum lugar temporátio para depois processá-los.

E se eu usasse o Memcached pra isso?

Estou usando esse serviço para “cachear” as coisas que são lidas, mas e se eu usasse ele para gravar dados temporários também?

Bora tentar, afinal, já estou pagando pelo serviço mesmo. E se não der certo, penso em outra solução.

Na prática eu fiz assim…

Memcached é um banco tipo chave-valor, então gravo uma chave de identificação específica com uma lista de dados relacionados ao uso dos leitores.

'read_data_0': [
    {
        'user_pk': 10234,
        'content_object_pk': 4321,
        ... 
    }
]

De tempos em tempos um script agendado persiste estes dados no banco de dados relacional usando uma operação bulk.

Claro que isso gera concorrência, já que enquanto um bloco de dados esta sendo processado ele tem que ficar bloqueado para novos dados.

Para lidar com isso, enquanto um bloco está sendo processado ele tem um “status” que não permite que mais dados sejam registrados nele e o endpoint que grava os dados de uso se vira para abrir um novo bloco ou encontrar um que ainda não começou a ser processado para acomodar os dados temporários.

'read_data_0': 'processing'
'read_data_1: [
    {
        'user_pk': 7263,
        'content_object_pk': 7273,
        ... 
    }
]

Deu muito certo.

Uma solução ultra-simples e que não adicionou NENHUM custo novo para a operação da plataforma.

E sabe o que mais?

Mesmo com o declínio do hype de Sense Life, continuamos com 400% mais usuários acessando nossa plataforma todo dia do que tínhamos no horário de pico antes.

Ainda assim, a Fliptru tá voando. Sem lentidão.

Otimização de baixo-custo feita com sucesso!

Conclusão

Bom, esse é o resultado final do caso da viraliação de Sense Life na Fliptru no Google Analytics.

Uau, cem mil pessoas usando minha aplicação… nunca imaginei isso acontecendo.

Agora que achei uma solução para otimizar a platsaforma, estou super feliz com tudo isso que aconteceu.

Aprendi muita coisa sobre caching e performance.

O estresse valeu a experiência e o resultado final.

Agora, bola pra frente e bora continuar levando a Fliptru além dos seus limites.

Obrigado por ler até aqui e até a próxima!

Categorias
Empreendedorismo

Meio milhão de páginas de quadrinhos lidas!

Um tempo atrás eu fiz um vídeo foi feito para comemorar um marco da plataforma de quadrinhos Fliptru: meio milhão de páginas de quadrinhos lidas!

Mas gostaria de falar um pouco mais sobre como foi a experiência de ter entendido o quão grande um projeto pessoal e tocado apenas por uma pessoa (eu, no caso) estava se tornando.

Ah, antes de continuar, este é o vídeo que fiz para comemorar o marco. Nele também conto um pouco de como foi o processo de criação da Fliptru.

Comemorando um ano e me dando conta dos números

Em março do ano passado a primeira HQ foi publicada na Fliptru. Completamos um ano de existência com números muito legais.

Pouco mais de um ano após esse lançamento tímido a Fliptru tem hoje 110 quadrinistas que publicaram 211 quadrinhos com 428 capítulos, dentro daqueles que são séries, somando um total de 6010 páginas!

Já são 427.294 visualizações de páginas de quadrinhos através da plataforma.

Fonte: Postagem no blog da Fliptru

Tive que fazer uma pesquisa de números para escrever esta publicação que citei acima, graças a isso comecei a acompanhar mais de perto o número de páginas de quadrinhos lidas através da Fliptru.

Faltava muito pouco para chegarmos ao meio milhão e isso me deixou impressionado.

Sabe, é normal termos um projeto que roda quase que “sozinho”, como é o caso da Fliptru, e aí passamos muito tempo ocupados em outras coisas (no meu caso o emprego e um projeto de HQ em mini-série) e quando voltamos a ver o negócio está muito maior do que você esperava.

E foi isso que aconteceu com a Fliptru!

Quando fui levantar os números para a postagem de um ano de Fliptru tomei um susto com a quantidade de autores, quadrinhos e interações que a comunidade vinha gerando.

Bem, voltando… eu comecei a acompanhar diariamente o número de páginas lidas.

Até que finalmente aconteceu!

Se eu não me engano era uma quarta-feira como qualquer outra. Eu acordei, fiz minha rotina matinal de reuniões no trabalho e café da manhã.

Quando sentei na varanda para dar aquela descansada, resolvi sacar o celular do bolso e ver os números da Fliptru.

Lá estava o 500k estampado na página “Sobre” do site.

Isso já faz umas duas semanas, mas só hoje consegui sentar para escrever sobre o marco aqui no blog.

E hoje?

Hoje, enquanto escrevo este post, a página “Sobre” da Fliptru diz isso:

E eu estou muito orgulhoso dessa comunidade de pessoas que amam fazer e ler quadrinhos e que se apoiam entre si!

Porque se tudo isso foi possível em tão pouco tempo, não é por causa do meu trabalho como criador/fundador da plataforma e sim porque uma comunidade de pessoas incríveis se agrupou em torno deste projeto e está fazendo com que ele se torne algo muito maior!

Bem, era isso que eu queria compartilhar hoje.

Continue lendo quadrinhos nacionais na Fliptru e divulgue sempre que possível para que toda a comunidade se beneficie!

Quem sou eu para falar sobre milhões de páginas de quadrinhos lidas na Fliptru?

Meu nome é Marcus Beck e meus objetivos são:

  • Entreter através das minhas histórias;
  • ajudar quadrinistas independentes a divulgar seus trabalhos através da plataforma Fliptru;
  • e ajudar pessoas a contarem histórias através da linguagem dos quadrinhos.

Publiquei minhas webcomics (quadrinhos online publicados na internet) por mais de dez anos e aprendi muitas lições sobre o que deve ou não ser feito para que as HQs sejam as melhores possíveis.

Quando eu comecei a criar meus quadrinhos eu gostaria muito que tivesse conteúdo sobre o assunto para que eu não tivesse que aprender tudo sozinho.

Por isso que criei meu canal do Youtube e também o meu blog, para ajudar quem está passando pela mesma situação que eu estive quando comecei.

Também sempre senti a necessidade de criar uma comunidade e uma plataforma onde quadrinistas nacionais pudessem publicar suas obras e entrar em contato com seus leitores.

Por isso em 2019 eu usei meus conhecimentos como desenvolvedor de software para criar e lançar a plataforma Fliptru.

Faço o possível para responder todas as perguntas, por isso fique a vontade para comentar com todas as suas duvidas. =)

Categorias
Tech

3 motivos para a falha de projetos de software

Trabalhando por muitos anos no desenvolvimento, já tive a oportunidade de participar de muitos projetos de software. Boa parte deles como membro de equipe, alguns como Scrum Master e outros como freelancer, fazendo todo o trabalho sozinho.

Isso me trouxe alguma experiência no quesito projeto de software.

Acompanhei projetos que deram muito certo e outros que nem tanto. Sobre estes sempre fica a pergunta: “por que este projeto falhou?”.

Cada projeto tem suas características específicas, mas para me aprofundar mais nos motivos gerais das falhas resolvi fazer uma rápida pesquisa para procurar artigos acadêmicos que falam sobre esse assunto.

Analisando alguns deles fica claro quais são os principais motivos listados.

  • objetivos não realistas ou não articulados
  • software que não atende às reais necessidades do negócio
  • requisitos de sistema, requisitos dos usuários e especificação de requisitos mal definidos
  • gestão de projeto deficiente
  • metodologias/práticas de desenvolvimento desleixadas
  • prazos e orçamentos do projeto
  • estimativas imprecisas dos recursos necessários
  • má comunicação entre clientes, desenvolvedores e usuários
  • uso de tecnologia imatura
  • pressões comerciais
  • satisfação do cliente
  • qualidade do produto
  • entre outros (lista completa neste artigo)

Como podemos perceber, são muitas as possíveis causas de um projeto de software ser malsucedido.

Essas pesquisas foram feitas com diversos projetos e estão em artigos espalhados por aí, mas eu quero focar naqueles motivos que já senti na pele, como um envolvido no projeto.

1. Requisitos de sistema mal definidos

Este é um caso muito mais comum do que se imagina. Acontece o tempo todo e já passei por diversos projetos com esse problema, por isso ele está no topo da minha lista.

Análise de requisitos é um processo complicado e demorado. É preciso da atenção de um profissional especialista e que vai conseguir levantar exatamente tudo que é preciso para que aquele projeto de software atenda às necessidades dos interessados.

Isso faz parte de projetos de softwares mais tradicionais e não necessariamente funciona do mesmo jeito em projetos ágeis, em empresas que necessitam de entregas mais constantes como as startups de tecnologia ou que possuem prazo e orçamento mais apertado como as fábricas de software menores.

Acontece que não ter um levantamento de requisitos tradicional não libera ninguém de levantar requisitos.

Talvez alguns gestores não entendam que o uso de métodos ágeis não é desculpa para que as descrições de tarefas sejam muito bem pensadas e completas.

“Gastar” tempo levantando requisitos bem definidos com os stakeholders (as partes interessadas no projeto) aumenta as chances de uma entrega mais assertiva e rápida do software.

2. Gestão de projeto deficiente

Eis um tópico extremamente genérico e que afeta muito os projetos de software. Uma má gestão pode significar diferentes problemas para a equipe, incluindo o tópico anterior.

Mesmo que as equipes ágeis sejam autogerenciáveis segundo a teoria, normalmente existe alguém que centraliza essa tarefa mais do que os outros membros. Além disso, em muitos casos, os executivos da empresa costumam não permitir tanta autonomia para que a equipe se gerencie.

A gestão de projetos deficiente acaba tendo um impacto muito grande na motivação da equipe, na falha de comunicação, na necessidade de retrabalho, na má administração dos recursos e dos prazos, etc.

Já presenciei alguns casos de má gestão e a responsabilidade pela falha do projeto costuma sobrar para os membros da equipe…

3. Qualidade do produto

Em alguns casos na minha experiência o produto tinha um potencial incrível, poderia trazer muito valor para os usuários… mas simplesmente não funcionou quando eles precisaram.

A qualidade do produto faz parte do valor agregado entregue em qualquer projeto.

É muito comum existir um membro da equipe focado nesse assunto. Uma pessoa para garantir a qualidade do software e mantê-lo sempre na sua melhor versão possível, sem erros e sem problemas de usabilidade.

Projetos de software que falham por falta de qualidade do produto não precisam de muita explicação, não é…

Eis um investimento que vale a pena, mas que muitas vezes é subestimado pelos responsáveis do projeto.

Entre outros…

Os motivos selecionados aqui são os que mais me chamaram a atenção por acontecerem em diversos projetos os quais eu participei. Por isso estão nesta lista em ordem de importância.

Na minha experiência pessoal eu não vejo um motivo específico para a falha de projetos de software e sim uma combinação de problemas que se acumulam e minam o projeto como um todo.

Em diversos dos casos que presenciei mais de um desses itens estavam combinados com outros também descritos na primeira lista retirada dos artigos pesquisados no início dessa publicação.

O que fazer?

Pessoalmente, acredito que uma das formas de evitar a falha de um projeto é ouvindo as pessoas envolvidas. Aproveitar a experiência de quem participa do desenvolvimento para tentar entender o que está acontecendo durante todo o processo.

Uma liderança mais aberta e que se importa com a opinião dos envolvidos tem maior chance de identificar um possível motivo de falha antes que o mesmo se torne irreversível para o projeto.

A chave é não esperar o projeto chegar em um nível crítico para então parar para analisar o que pode estar dando errado.

Por isso as empresas que mais crescem e entregam tecnologias incríveis valorizam tanto os profissionais que colaboram para que isso aconteça. Mantendo sempre um ambiente com menos fricção para comunicação e mais atenção ao que está acontecendo durante as iterações de desenvolvimento.

Para você, quais são os maiores motivos para a falha em projetos de software? Deixe sua opinião sobre o assunto nos comentários.

Até a próxima!

Categorias
Carreira

Carreira Programador – Quer trabalhar em uma startup?

Hoje em dia é comum ver pessoas interessadas em trabalhar nas empresas de tecnologia, principalmente nas startups dessa área.

Existe um certo glamour em trabalhar em uma empresa que tem como proposta mudar o jeito que as coisas são, a tal da “empresa diruptiva”. O conceito de inovação costuma partir de dentro da própria, a partir de sua cultura. Isso atrai profissionais com essas mesmas características.

Uma das coisas que chama a atenção nessas empresas é a liberdade de trabalhar em um ambiente menos engessado e mais focado em resultados do quem em como está o preenchimento do sua folha de ponto. Isso sem falar na menor burocracia interna e nos possíveis pequenos agrados, como doces e bebidas a vontade, além de jogos e outras coisas divertidas.

Ao mesmo tempo que tudo isso é muito atrativo existe também o outro lado da coisa. Nem todas as empresas são tão bem “estruturadas” quanto Facebooks e Googles por aí. Estou falando literalmente de grana. Bufunfa mesmo. A maioria não vai ter como pagar equipes enormes e especializadas.

Por isso o profissional que busca uma carreira em tecnologia, principalmente nesse tipo de empresa, precisa ser completo. Precisa ser um profissional “T” ou T-shaped skills.

Essa expressão se refere ao profissional que tem conhecimento em diversas áreas de maneira geral e em uma de maneira aprofundada. Por isso a letra T.

Eu não trago essa expressão da maneira convencional como recrutadores costumam falar, onde o profissional tem um monte de skills fora da área de tecnologia para ser um T. A trago pensando mais no conceito de desenvolvedor Full Stack, aquele que consegue lidar com diversas partes do desenvolvimento de software e não é apenas especializado em uma parte dele.

As equipes das startups costumam ser extremamente enxutas e por isso é preciso que os profissionais sejam muito flexíveis e saibam lidar com diversas partes do processo de desenvolvimento de software.

Conhecer uma linguagem de programação é algo que nem precisa ser dito, certo? Mas vou abordar algumas dicas sobre o tipo de conhecimento que poderia lhe ajudar a conseguir iniciar uma carreira nesse mercado.

1. Desenvolvimento web

A popularização da web deixou muito mais fácil para empreendedores tornarem suas ideias realidade e criarem startups. Conhecer sobre desenvolvimento para web pode facilitar muito a vida profissional de um programador.

Entender como funciona o frontend e o backend de uma aplicação web é indiscutivelmente uma das maiores vantagens para que um profissional possa trabalhar em boa parte das startups que existem por aí.

Conheça bem HTML e CSS. Brinque com o Bootstrap, que facilita muito o desenvolvimento da estrutura de um webapp. Mas não se esqueça que quase nada funciona na internet sem JavaScript.

Conheça bem JavaScript e só depois vá atrás de conhecer alguns frameworks como Angular e React.

2. Controle de versão

Os sistemas de controle de versão servem para gerenciar as versões do código que está sendo editado por um desenvolvedor ou uma equipe de desenvolvedores.

No caso da equipe é que ele se torna ainda mais imprescindível, pois cada membro da equipe pode trabalhar no mesmo código que outro e bagunçar a coisa toda. Eu apago uma linha aqui e você a modifica ao mesmo tempo… loucura!

Tenha familiaridade com o GIT e isso já lhe dará uma grande vantagem sobre outros candidatos.

3. Linha de comando

Ah! O famoso terminal… a tela preta com letras brancas (na verdade as cores são totalmente configuráveis).

Sem entender como funcionam os comandos Unix (Linux e MacOS) fica muito difícil trabalhar com a maioria dos frameworks e linguagens de script que temos no mercado.

Isso falando apenas de maneira geral, existem muitas tarefas que são muito mais fáceis sendo feitas pelo terminal, inclusive o uso do GIT!

Ter um conhecimento básico dos comandos do terminal não é difícil, basta praticar um pouco e eles passam a ser naturais. A medida que você precisar conhecer mais comandos para executar diferentes tarefas o seu repertório aumenta sozinho.

Se você aprender a escrever um ou outro shell script então… aí a coisa começa a ficar boa!

4. Já ter feito alguma coisa…

Ok, isso parece estranho. Afinal estou falando em começo de carreira por aqui.

O que quero dizer com “já ter feito alguma coisa” é ter participado de algum projeto ou ter um projeto pessoal concluído. Talvez em um freelance ou algo assim.

A ideia dessa “dica” é que você já tenha passado pela experiência de completar um projeto. Que tenha feito mais do que apenas estudar sobre o assunto. Que você tenha feito algo do começo ao “fim”. Algo que tenha lhe dado experiência em iniciar e terminar alguma coisa.

Conta ter feito um sistema para lembrar da lista do supermercado ou seu próprio blog, desde que você tenha conseguido começar, desenvolver e “entregar” (deploy). Isso faz muita diferença em um profissional.

Essa declaração pode parecer confusa, mas eu já trabalhei em muitos lugares e conheci muita gente dessa área. Em vários profissionais em início de carreira eu senti falta dessa saída da zona de conforto e da tentativa de fazer algo de verdade além dos exercícios de cursos ou tutoriais encontrados na internet.

E tem muito mais…

Eu poderia ficar escrevendo muito mais sobre cada um dos itens acima e ainda mais sobre outras coisas que ajudariam um profissional em início de carreira a se preparar para o trabalho em startups. Mas a ideia aqui é dar um rumo. Não adianta tentar aprender tudo de uma vez só!

Outro ponto importante é que ninguém nunca está preparado o suficiente. O que vai fazer diferença no futuro é a sua própria experiência. Então não tenha medo de concorrer à vagas e entrar com tudo no mercado.

Deixe um comentário se você acha que faltou alguma coisa ou se tem dúvidas sobre o assunto.

Nos vemos na próxima!

 

Categorias
Empreendedorismo

Receber investimento faz de uma startup um sucesso?

As estranhezas da cultura startup

Faz um tempo que me interesso por startups. Gosto muito de acompanhar a evolução de empresas de tecnologia que estão dando os primeiros passos de uma longa jornada.

Misturando as definições de Steve Blank e Eric Ries:

Uma startup é um grupo de pessoas buscando um modelo de negócio repetível e escalável em um cenário de incertezas.

Dentro desse contexto, uma empresa como Uber não pode mais ser considerada startup há um bom tempo. Em alguns lugares do mundo ela opera em cenário de incerteza, mas seu modelo de negócio já se provou ser escalável, e muito! Mas mesmo assim continua a participar de rodadas de investimentos para manter sua expansão mundial.

E isso não acontece somente com startups, várias empresas precisam de investimento para expansão, sendo empréstimos com bancos ou abertura de capital.

A questão é que as pessoas do meio, da tal cultura startup, parecem cada vez mais idolatrar empresas que conseguem um investidor. Aquela nova startup que conseguiu R$ 1 milhão em uma rodada de investimento é a queridinha dos empreendedores.

Copiando e traduzindo uma citação de um texto que li um tempo atrás:

“Por que todos te parabenizam quando você levanta $1 milhão, mas não quando você ganha $1 milhão?”

Um investimento é importante sim, com ele você consegue fazer sua ideia sair do papel e ganhar vida. Com ele você consegue testar o mercado pra valer, para ver se a sua ideia realmente tem valor no mundo real. Mas e depois?

Bem, depois é hora de começar a faturar. Não adianta ficar achando que investidores irão simplesmente continuar a dar dinheiro para uma empresa que não fatura.

Afinal, um investidor só coloca seu dinheiro em algo para que ele renda mais no futuro, afinal, esse é o sentido da palavra investir. Ou seja, ele investe R$ 1 milhão para tirar R$ 5 milhões no futuro.

Você pode fazer aquele seu aplicativo ficar cada vez com mais funcionalidades, cada vez com uma aparência melhor, cada vez com a operação mais bem estruturada… mas você precisa provar se as pessoas vão mesmo pagar para usá-lo!

O objetivo de uma startup é que ela deixe de ser uma startup. Não em termos de cultura da empresa, mas no contexto dos “especialistas” que citei no começo desse texto.

Para que ela deixe de ser um grupo de pessoas trabalhando em um cenário de incertezas, ela precisa que seu modelo de negócios seja validado. Não validado com uma pesquisa de mercado, mas sim com os clientes querendo pagar para usar o que você criou.

Não depender mais de investimentos. Viver por conta própria. Essa sim é a verdadeira startup de sucesso.

Categorias
Empreendedorismo

Como não empreender

Quando deixei o emprego para empreender… e deu bem errado

Era final de 2014. Já havia um tempo que eu estava confortável em um bom emprego. Apesar de ter adquirido algumas dívidas nos últimos meses e o salário não ser lá essas coisas, eu conseguia dar conta das necessidades do mês. Vivendo mês a mês.

Foi então que surgiu uma oportunidade de mudar de empresa. Era um trabalho “melhor”, para ganhar mais e em uma multinacional.

A saída da antiga empresa me rendeu uma boa grana. Com ela resolvi boa parte dos problemas financeiros que havia adquirido e ainda consegui guardar um pouco na poupança.

Era a famosa época das vacas gordas. Conseguia dar presentes caros e jantar em lugares chiques.

Eu tinha um salário bom e dinheiro guardado. O sonho da classe média.

Até aí tudo ótimo, não é? Na verdade não.

O novo trabalho era uma tortura para mim. Não tinha nada do que eu gostava na minha profissão. Além disso, era cheio de burocracias burras e desnecessárias que só faziam cair, e muito, a produtividade. O ambiente parecia tirado de um galpão de operações da CIA, ou qualquer agência norte-americana, daqueles filmes dos anos oitenta.

Foram apenas quatro meses até que eu não aguentasse mais. Pedi demissão.

Com dinheiro na poupança e sem as dívidas era a hora de fazer algo por mim.

Eu poderia ter conhecido um lugar diferente, visitado a família, comprado algo legal, ou qualquer outra coisa de consumo rápido. Depois era só voltar a procurar um emprego e seguir a vida. Mas eu decidi fazer algo diferente.

Já fazia um bom tempo que eu estava namorando a ideia de empreender. Ter meu próprio negócio, minha própria empresa.

Há algum tempo eu acompanhava os vídeos dos “gurus” do empreendedorismo da época e estava louco para experimentar aquela sensação de liberdade que eles tanto falavam e passavam a seus seguidores.

Antes mesmo de sair da empresa que citei lá no começo deste texto, eu já tinha começado a desenvolver um software on-line para pequenos negócios. Esse seria meu primeiro produto.

Tinha certeza de que era uma ótima ideia e que poderia ser vendido como SaaS (Software as a Service) por uma mensalidade pequena, que os micro e pequenos empresários pudessem pagar. Bastaria eu manter as melhorias contínuas no sistema e todo o pequeno negócio ia querer usar minha ferramenta.

Como uma criança inocente mostrando seu rabisco em giz de cera para a sua mãe, eu mostrei meu produto para pessoas próximas e só recebi feedbacks positivos. “A ideia é boa”, “vai dar certo”.

Ok. Eu tinha um produto e uma grana guardada. Era hora de começar a empreender.

Então corri atrás dos primeiros usuários para testar a ferramenta de forma gratuita. Até consegui um ou outro. Eles se cadastraram no meu software e eu comecei a ficar empolgado.

Nesse mesmo período eu encontrei pela primeira vez os meus concorrentes.

Sim, eu não conhecia meus concorrentes ainda. Errei feio, errei rude.

Comecei a ficar desanimado com a ideia e meu primeiro produto já estava caindo no esquecimento. Tanto dos seus primeiros usuários, que logaram apenas uma vez no sistema e nunca mais voltaram, como de mim mesmo, que não via mais esperança de que meu MVP pudesse ter algum futuro.

Meu produto não tinha nenhum diferencial atrativo para os clientes. Ele não fazia nada que os outros já não fizessem. E o que fazia de igual, fazia pior.

Nesse meio tempo o dinheiro começou a ficar escasso. A poupança estava secando…

Nesse momento resolvi mudar a “empresa” para uma prestadora de serviços. Era hora de tentar vender minhas habilidades de desenvolvimento de sites e sistemas personalizados para os micro e pequenos negócios.

Meu novo plano parecia perfeito, vendia um site ou um sistema por um valor que o pequeno empreendedor pudesse pagar e cobrava uma mensalidade, também barata, para manter o serviço hospedado e funcionando.

Na verdade eu era um freelancer, mas a ideia ser um empreendedor fazia tudo parecer mais importante do que realmente era.

Apenas uma questão de aparência.

Eu continuava indo nas reuniões e eventos com meu terno surrado e sapato velho, para me sentir um empresário. Talvez se tivesse apenas admitido que era um freelancer, as coisas teriam sido muito mais fáceis.

Graças ao network que vinha construindo há um tempo, consegui fazer alguns contatos e cheguei a fazer um sistema e alguns sites.

Depois de um tempo focado em vender essa nova ideia “genial” de serviços por mensalidade, as coisas não chegaram nem perto de melhorar na minha vida financeira. As dívidas continuavam aumentando.

A matemática era muito simples: eu não sabia vender e muito menos precificar o meu trabalho do jeito certo.

Eu vendia um serviço que valia muito, mas cobrava pouco pelo mesmo, com medo de que os clientes não quisessem me contratar.

Para piorar, alguns clientes começaram a dar calote. Não importa se você tem um contrato com algumas pessoas, elas simplesmente não vão pagá-lo.

Nessa época eu comecei a ficar depressivo.

Eu passava todos os dias em casa, com pouco trabalho a fazer. Minha esperança de melhorar a vida estava se esvaindo cada vez mais. Eu só queria deitar na minha cama a tarde toda e dormir para esquecer o buraco em que eu tinha me colocado.

Então… a fonte secou de vez. Minha poupança estava vazia. Zerada.

Para comprar comida e pagar as contas de água e luz e o aluguel, comecei a usar todo o crédito que podia no banco. Até o dia em que essa fonte também secou. O banco agora queria que eu começasse a devolver tudo. Com juros, é claro… muitos juros.

Finalmente, muito mais tarde do que deveria, eu me dei conta de que a situação tinha atingido um nível que eu jamais imaginei que pudesse atingir.

“Eu falhei. Cheguei ao fundo do poço.”

Esse era o único pensamento que passava pela minha cabeça. A derrota estava completa.

Foi então que, com ajuda e conselhos de amigos, resolvi tomar uma atitude. Assumir as falhas cometidas, perceber que não tinha mais condições de continuar naquela jornada e procurar um trabalho com salário fixo. Era a solução mais rápida que poderia me ajudar a tapar os buracos financeiros aos quais eu havia me enfiado.

Era hora de encerrar a minha primeira jornada de empreendedor. Talvez não para sempre, mas até uma nova oportunidade. E quando ela vier, estarei mais pronto e com muito mais experiência.

Foram muitos os erros cometidos em menos de um ano após começar a empreender. Uma sequência de falhas. Uma mistura de despreparo com falta de planejamento e excesso de confiança.

Apesar de ter passado por uma fase terrível da minha vida, hoje eu percebo o quanto tudo o que aconteceu foi importante para mim. O quanto consegui aprender com esses erros e, principalmente, o quanto isso foi importante para que eu me conhecesse melhor como pessoa e como profissional.

“É bom celebrar o sucesso, mas é mais importante prestar atenção nas lições do fracasso.”

Onde foi que eu errei? Para tentar resumir toda essa história em algo produtivo, resolvi listar quais foram os erros que pude identificar nessa curta jornada de empreendedor.

Então, para encerrar, vamos para o jogo dos sete erros.

1. Excesso de autoconfiança, despreparo e falta de planejamento. Um desconhecimento total do mercado e dos concorrentes que atuavam nele.

2. Se apaixonar por uma ideia sem pensar no que ela traria de diferente para suprir a “dor” do cliente. A paixão cega.

3. Acreditar que poderia ter um negócio que atingiria o breakeven point em apenas alguns meses. Onde as contas da empresa (e minhas) seriam pagas pelo próprio faturamento da empresa.

4. Não fazer uma conta simples: por quanto tempo consigo sobreviver com esse dinheiro que tenho guardado?

5. Sentir-se derrotado, desanimar e não persistir logo nos primeiros nãos. Uma falha grave para qualquer um que está começando qualquer coisa.

6. Ser orgulhoso demais para entender que falhou. Se você não admite o erro, como pode tomar uma atitude para consertá-lo?

7. Seguir gurus da internet. Alguns podem ajudar muito, mas a maioria tem conteúdo muito superficial e de autoajuda, algo que não vai auxiliar em nada quando você estiver precisando de conselhos mais “práticos”.

Esses itens são apenas alguns dos centenas de aprendizados que tive durante esse curto espaço de tempo. Mas resumem bem o que não fazer quando se quer empreender.

Apesar de aprendermos muito mais com nossos próprios erros do que com os erros dos outros, acredito que essa minha experiência possa servir para que outras pessoas entendam um pouco mais sobre essa perigosa aventura chamada empreendedorismo.

Publicado originalmente no Medium.

Categorias
Crônicas Tecnologia

Lançamento do Diligeiro

Em novembro de 2015 recebi uma ligação de uma empresa na qual eu já havia feito entrevistas e testes meses antes. Nesta ligação marcamos uma reunião e na próxima semana lá estava eu ouvindo pela primeira vez sobre o Diligeiro.

O Diligeiro é um aplicativo para smartphone que serve para conectar advogados correspondentes com escritórios de advocacia ou advogados que precisam do serviço de diligência.

O meu desafio era criar o backend desse aplicativo, uma API. O seu grande diferencial é a geolocalização, mostrar aos correspondentes quais diligências estão mais próximas dele. Ou seja, seria minha primeira experiência desenvolvendo uma API e também a primeira experiência com Geolocalização. Estudei, experimentei e hoje posso dizer que aprendi muito.

Enquanto ainda desenvolvia todas essas coisas novas para mim, fui escalado para fazer também o frontend web do mesmo produto. Mais uma série de aprendizados, desenvolver um frontend web totalmente baseado em requisições de API. Mais estudos, experiências e aprendizados.

Nas últimas semanas o aplicativo para Android e a versão Web do Diligeiro foram lançados em formato Alpha e em seguida em formato Beta, para que os usuários pudessem começar a utilizá-lo e passarem seus feedbacks.

Nesta semana o aplicativo Android e o WebApp foram abertos ao público.

Foram seis meses de muito trabalho, muitos aprendizados e também muita diversão, graças à equipe incrível da TIA Tikal.

O trabalho continua, as melhorias e novas ideias para funcionalidades não param nunca, mas a fase inicial de desenvolvimento acabou. Agora é hora de deixar que os usuários decidam se todo o esforço valeu a pena. O aplicativo iOS continua em desenvolvimento.

Me sinto orgulhoso pelo resultado dessa primeira fase e agradecido a todos os envolvidos. A equipe do Diligeiro e a equipe do LegalNote, o produto irmão do Diligeiro que já está no mercado a mais tempo.

Categorias
Empreendedorismo

Clienter CRM

O projeto que está tomando maior parte do meu tempo atualmente é o Clienter, um SaaS de CRM feito para MEI, micro, pequenas e até médias empresas.

Tudo começou quando eu conheci o projeto Geração de Valor através de um amigo e em seguida me inscrevi no site meuSucesso.com, uma plataforma para pessoas que estão buscando empreender e inovar. Nesta plataforma o usuário possui network e conhecimento sobre empreendedorismo. Foi aí que a chama do empreendedor ressurgiu dentro de mim depois de anos apagada.

Em uma conversa com minha irmã sobre um negócio de amigos que participamos como colaboradoes surgiu a ideia de que eles precisavam de um CRM para segurar melhor os seus clientes, através do melhor relacionamento com os mesmos. Eu mesmo conhecia pouco sobre o que era um CRM, mas fui pesquisar para entender melhor.

Customer Relationship Management (CRM) é um termo em inglês que pode ser traduzido para a língua portuguesa como Gestão de Relacionamento com o Cliente (Gestão de Relação com o Cliente, em Portugal). Criada para definir toda uma classe de ferramentas que automatizam as funções de contato com o cliente, essas ferramentas compreendem sistemas informatizados e fundamentalmente uma mudança de atitude corporativa, que objetiva ajudar as companhias a criar e manter um bom relacionamento com seus clientes armazenando e inter-relacionando de forma inteligente, informações sobre suas atividades e interações com a empresa. (Wikipedia)

Foi então que me veio a ideia do Clienter, um sistema CRM de baixo custo para pequenos empresários como os meus amigos que citei no terceiro parágrafo.

Comecei a montar o modelo de negócio e pesquisar cada vez mais os CRMs do mercado. Descobri que as grandes empresas utilizam sistemas caríssimos e que jamais as empresas pequenas poderiam pagar por este “luxo”. E, para mim, a partir de agora, o mais importante é fazer com que estes empresários entendam que um CRM não é apenas um luxo e sim uma ferramente extremamente importante para o crescimento do negócio.

Status do projeto

Atualmente o desenvolvimento do Clienter está chegando na fase da homologação, onde alguns negócios de amigos meus utilizarão o sistema e passarão feedbacks sobre o que precisa ser melhorado. Muito em breve será lançada a versão beta que já poderá ser utilizada pelo público em geral.

O produto

Clienter terá funcionalidades comuns a alguns CRMs e outras totalmente inovadoras. Em princípio será possível ter listas de clientes, prospects e leads e manter um histórico de todo tipo de contato feito com os mesmos. Será possível enviar emails pelo próprio sistema para clientes, prospects e leads de acordo com produtos adquiridos ou com interesses em comum, entre diversas outras funcionalidades.

A usabilidade é extremamente simplificada e será tão fácil de usar o sistema quanto é para você mandar um email. A ideia é que o próprio usuário possa dar sua opinião para melhorar o produto o tempo inteiro.

E quando fica disponível?

Ainda não existe data confirmada, mas no site do Clienter tem um pequeno campo para inserir o email e todos que se cadastrarem por lá receberão novidades sobre o andamento do projeto e terão a oportunidade de ter early access, ou seja, um acesso exclusivo antes das outras pessoas.

Em breve falarei mais sobre o Clienter aqui no blog. Você também pode acompanhar pelo Google+ e pelo Facebook.