Eu não tinha noção da importância de contribuir para o Open-source até o momento em que o fiz. Estou vivendo uma experiência dessa há algum tempo, e não vejo muito incentivo para outros fazerem igual, pelo menos não no Brasil, por isso resolvi escrever esse artigo.
Pois bem. Tudo começou quando um amigo meu me convidou para fazer parte de um projeto que ele pretendia iniciar depois de descobrir a abertura dos dados de transporte público da cidade do Rio de Janeiro. Ele queria fazer algo open-source e completamente focado em ajudar as pessoas. Já havia algum tempo que eu tinha vontade de contribuir para algum projeto renomado, mas sempre me julguei incapaz de produzir alguma contribuição relevante. Então pensei: “por que não me dar essa chance?”. Foi assim que começou um projeto que hoje é bastante conhecido no Rio de Janeiro, o Rio Bus.
O grande lado bom de participar de algo desse tipo é que você sempre vai ser parte daquilo que você ajudou a realizar, é uma experiência extremamente enriquecedora. Conhecimento é algo que quanto mais se tem, melhor. E você só sabe que você possui determinado conhecimento quando você precisa colocá-lo em prática.
Até esse momento eu nunca tinha me posto à prova com algo que viria a se tornar uma coisa tão grande. Estava acostumando a desenvolver software com, no máximo, cerca de 5 a 10 usuários simultâneos, ou poucas centenas de acessos mensais. Quando esse número cresce, começam a aparecer junto vários problemas relacionados a performance para lidar com todas as requisições feitas pelos usuários, aí você se vê num momento em que precisa estudar suas possibilidades e sua ferramenta a fim de descobrir como pode fazê-la funcionar melhor com seu novo problema. Pode ser até que você perceba que as tecnologias que você está usando já não servem mais para o seu problema, daí você começa a buscar alternativas que te satisfaçam.
Hoje eu posso dizer com a mais precisa certeza que a maior bagagem que eu trouxe dessa experiência foi o conhecimento que eu adquiri ao lidar com os novos problemas que eu precisei resolver.
No início, tínhamos apenas uma pequena aplicação em PHP que só funcionava como proxy para uma fonte de dados e um aplicativo pra Android. Num dia crítico de acessos, a aplicação não aguentou a demanda, cerca de 2000 usuários acessando simultaneamente, e foi necessário que um de nós investisse o dia inteiro em monitorar o serviço para reiniciar toda vez que caísse. Por conta disso, migramos toda a aplicação para NodeJS e resolvemos esse problema. Aí começamos a perceber a necessidade de utilizar o histórico dos dados que usávamos para melhorar a qualidade da informação e para começar a mostrar algumas informações que os próprios usuários estavam sentindo falta e nos pedindo, por isso começamos a usar um banco de dados. Conforme a aplicação foi crescendo, a complexidade de mantê-la foi crescendo junto, até um momento em que começamos a perder um pouco do controle sobre o que acontecia, e por isso foi preciso voltar a estudar e descobrir a arquitetura de micro serviços, que reduziu significativamente essa complexidade e nos ajudou a tornar a ferramenta bem mais estável. Além disso também possibilitou que pudéssemos utilizar mais boas práticas de desenvolvimento como o TDD (desenvolvimento orientado a testes), entre outras.
Ao longo desses quase 3 anos (até o momento dessa publicação), pude ter a experiência de manter um serviço usado por um número de usuários que no início era nulo e foi crescendo gradativamente até chegar a cerca de 40 mil usuários mensais e mais de 30 contribuidores que ajudaram de várias formas, fosse código, informação ou doação. Hoje me sinto confiante pra lidar com problemas complexos de software, principalmente ligados a concorrência de acessos e otimização de performance de aplicações web, graças a esse projeto.
Fora a parte técnica, também decidimos, em certo momento, tentar construir uma startup em cima desse nosso trabalho (inicialmente pensando mais em conseguir uma fonte de receita para custear o serviço, mas esses detalhes ficam para um próximo artigo). Como o grupo que decidiu seguir esse caminho é extremamente técnico, estamos tendo um caminho bastante árduo para aprender a lidar com os problemas como empreendedores e solucionar outros problemas que nunca havíamos lidado antes.
Mesmo sem recursos, conseguimos recrutar algumas pessoas a mais para a equipe com a promessa de que seria uma experiência única de aprendizado e que isso daria mais peso aos seus currículos. Então, ao ter uma equipe, é preciso coordenar os trabalhos de todos. Essa, de longe, tem sido a parte mais difícil e mais divertida pra mim.
Depois de passar por isso tudo veio a parte que eu sempre ouvi ou li sobre mas nunca tinha testado, que é o aumento da sua importância no mercado. Quando você tem um projeto desse no seu portfólio, as empresas te vêem de outra forma, e as oportunidades que te aparecem são bem melhores. Já aconteceu de eu receber propostas de emprego internacionais, inclusive, e todas sempre muito desafiadoras. E o melhor é que hoje eu estou pronto para abraçá-las.
Por isso eu gostaria de deixar essa mensagem principalmente para você que tem vontade de contribuir com algum projeto, ou que quer crescer na vida, quer aprender mais ou até se ocupar com algo diferente. Contribua para projetos de código livre. Você só tem a ganhar com isso.