Por mais atraente que seja a ideia de não ter um chefe e trabalhar de forma independente naquilo que ama, criar o seu próprio trabalho exige lidar com uma série de desafios: é preciso estar sempre disposto, saber o que está fazendo e encontrar organizações dispostas a pagar por seu tempo de serviço.
Davidson Souza, um desenvolvedor de 22 anos do interior de Minas Gerais, conseguiu preencher essas lacunas e hoje trabalha em tempo integral com Bitcoin por meio de um grant da Vinteum, uma organização criada por Lucas Ferreira (Lightning Labs) e André Neves (Zebedee) para financiar o desenvolvimento do Bitcoin no Brasil e toda América Latina.
Em conversa com o Portal do Bitcoin, ele conta que se formou em computação no final do ano passado e, na época, não sabia ao certo que rumo sua carreira seguiria.
Por incentivo de outros desenvolvedores brasileiros, ele participou do Summer of Bitcoin, um programa internacional de estágio focado em introduzir estudantes universitários ao desenvolvimento de softwares de código aberto de Bitcoin. Por lá ele percebeu que poderia dar o pontapé inicial na sua carreira unindo as paixões por programação e Bitcoin.
Nesta entrevista, Davidson conta mais detalhes sobre como é o dia a dia de um desenvolvedor de Bitcoin em tempo integral, dá dicas para outros devs que querem seguir o mesmo rumo e explica os projetos que está trabalhando atualmente.
Portal do Bitcoin: Como você conheceu o Bitcoin?
Davidson: Tive contato com o Bitcoin bem cedo. Infelizmente não comprei porque era criança. Eu cheguei a rodar o Bitcoin Core antes de 2013. Era bem novinho, tinha 12 ou 13 anos.
Gostava de Bitcoin mais pela ideia de hacker. Quando eu ganhei meu primeiro computador, foi mais ou menos na época que estava todo mundo falando de Silk Road, Bitcoin, criptomoedas, e eu fui ver melhor o que era. Cheguei a ganhar 1 BTC na época em que sites distribuíam de graça. Era só você resolver um captcha e pegar um, dois bitcoins para testar. Só que o computador que eu tinha não existe mais.
Embora eu já achasse muito legal, não pude contribuir muito no passado por causa da barreira da linguagem. Só fui ter confiança com o inglês há pouco tempo. Comecei a me envolver mais, principalmente na comunidade do Bitcoin do Brasil no Discord.
Comecei a participar mais de alguns projetos e seminários que organizamos aqui no Brasil, meio que um grupo de amigos bitcoiners.
Você já tentou recuperar esse bitcoin perdido?
Não. Por eu gostar dessas coisas de hacker, eu sei que você nunca deve deixar HDs parado, dar para outra pessoa, vender ou coisa do tipo, porque mesmo que você apague, dá para recuperar os dados. Aí eu tenho uma tradição de queimar HDs velhos, destruir eles fisicamente.
Depois disso, o que fez você voltar para o Bitcoin, dessa vez como desenvolvedor?
A parte de desenvolver e querer contribuir sim veio principalmente por incentivo do Lucas Ferreira e do Bruno Garcia. O Lucas me disse para entrar no Summit of Bitcoin. Lá conheci bastante gente legal e aprendi mais sobre desenvolvimento relacionado ao Bitcoin. Fiz uma amizade com os dois desenvolvedores que estão por trás do Utreexo, o Calvin Kim e o Tadge Dryja. Acabei ficando para trabalhar nessa área de Utreexo, que tenta reduzir o custo de se rodar full nodes. Desenvolvi um projeto nesse Summer, que foi implementar esse Utreexo em uma linguagem de programação específica, a Rust.
Quando terminei esse estágio, consegui continuar com meus projetos open source porque ganhei um grant da Vinteum, que é um dinheiro que você recebe para poder se manter e não precisar ir buscar um outro emprego.
Sem esse grant, você acha que conseguiria trabalhar só com Bitcoin?
100% do tempo igual eu fico não. Provavelmente, faria meio período, mas já seria bem mais limitado porque teria que buscar um emprego em outra empresa e dividir meu tempo. Então enquanto eu tiver meu grant aí e poder trabalhar só nisso, é muito bom.
E um grant dura por quanto tempo?
Nós temos por um ano. Pode ser que no final desse um ano tenha uma nova avaliação e você possa continuar com a grant.
Hoje no seu trabalho você foca em que parte do Bitcoin?
Comecei a trabalhar com as partes de Utreexo e a contribuir com outras Libs (bibliotecas), algumas são até dependentes do que eu faço. Agora também estou ajudando a revisar os projetos relacionados à BIP-324, que é uma nova versão para a camada de comunicação entre os nodes, que usa criptografia.
Não contribuo regularmente com o Core, exceto com a BIP-324. Estou trabalhando mais ultimamente na parte de cliente, em software que é utilizado pelas pessoas, principalmente para ajudar que o usuário mais leigo seja o mais soberano possível sem precisar rodar um full node com todos os blocos, porque isso é algo que distancia muitas pessoas.
Hoje os smartphones são mais usados que computadores, e não tem como você rodar um node no celular. Por isso, tenho focado ultimamente é em como posso fazer para que essas pessoas tenham soberania e não precisem depender de terceiros. Hoje em dia para usar criptomoedas você precisa se conectar com um servidor de alguém e esse alguém pode ferir a sua privacidade, mentir para você e causar problemas.
Como é a sua rotina de desenvolvedor de Bitcoin?
A vida de desenvolvedor open source é um pouco diferente de quando você está em uma empresa. Não tem chefe te falando o que você tem de fazer. Você tem que ir atrás das demandas. Começo o dia olhando alguns repositórios no Github. Checo também os testes automatizados que deixo rodando, para ver se alguma coisa quebrou e preciso consertar.
Em geral, não dá certo na primeira tentativa. Software é um pouco mais complicado. É comum achar problemas no que tenho que resolver. Às vezes fico com raiva daquilo, aí deixo de lado por tempo, e depois volto.
Faço também contribuições para outros repositórios. Semana passada, por exemplo, olhei um PR (pull request) que fiz para uma versão de Rust para a biblioteca de assinaturas digitais que a gente usa no Bitcoin. Mandei o meu código e outros desenvolvedores costumam deixar reviews, com sugestões do que eu poderia melhorar. Então olho as sugestões, mudo o que acho que faz sentido e publico a versão atualizada.
Você tem que escolher o que você vai fazer e ir atrás. Não tem um Trello onde você tem uma série de demandas para seguir. Você é o seu próprio chefe.
Qual é o passo a passo para você resolver um problema ou introduzir uma melhoria no código do Bitcoin?
Depende do que você está propondo. Por exemplo, imagina que tenho uma melhoria para o Bitcoin Core de algo relacionado à performance. Os passos que tenho que fazer são: fazer um fork do Bitcoin Core — que é quando eu crio o meu próprio repositório do Core com o mesmo código —, subir o código que fiz e criar uma pull request (PR), que é uma requisição para mandar um novo código para o Core.
Aí os reviewers, que é a galera que cuida da qualidade do código, vai olhar para aquilo e falar se tem uma coisa estranha aqui, ou que você pode melhorar ali. Se eles acharem que faz sentido, principalmente os maintainers do repositório acharem que faz sentido, eles vão fazer o merge, que é pegar o seu código e integrá-lo na base de código principal.
O tempo que demora para isso depende do quão trivial é a sua modificação. Se for só uma coisa muito pequena, tende ser um dia. Se for um projeto grande, como o silent payments ou o P2PV2, demora mais tempo, porque é preciso que mais pessoas revisem.
Além disso, a maior parte dos pull requests não exigem soft fork. Tem o protocolo Bitcoin e tem o código Bitcoin Core. O software em si precisa ser mantido, com modificações de performance, de qualidade de código. Às vezes tem um bug que precisa ser resolvido. Isso entra no Core, mas isso não mexe no que a gente chama de consenso. Quando é preciso mexer no consenso, aí entra na camada de hard fork e soft fork, que é mais complicada.
Você pode explicar os projetos Rusteexo e Floresta que você lançou recentemente?
Rustreexo é a implementação de Utreexo em Rust que fiz e já dá para usar. Já o Floresta vai um pouco além. Ele usa o Rustreexo, mas é um full node que que usa muito menos recursos do que o Core, conseguindo rodar com menos de um giga de armazenamento.
Para entender a LibFloresta, imagine que você tem uma wallet no celular. A ideia é que se você quiser substituir o servidor de um terceiro pelo seu próprio full node, você simplesmente puxa o LibFloresta na sua wallet e ela é capaz de se comunicar com o node Utreexo, que vai fazer o serviço que era feito pelo servidor. Nesse caso, a pessoa está rodando um full node meio que sem saber, porque a wallet já está fazendo tudo ali integrado.
Tem um problema específico do Bitcoin que você quer resolver?
Gosto muito da parte da soberania. Acho que é a razão de existir o Bitcoin. Gosto de fazer tudo que é possível para reduzir a confiança em terceiros. Também acho muito importante a parte da privacidade. Estou trabalhando na BIP-324, que ajuda bastante nisso.
Você acha seguro ser um desenvolvedor de Bitcoin? Recentemente alguns nomes conhecidos se distanciaram porque estavam sendo alvos de processos.
Ainda não, porque meu trabalho no Bitcoin está bem nichado. Tem um grupo de desenvolvedores mais próximos que estão testando o que eu faço, mas não virou algo tão grande no Bitcoin Core. É algo que precisa ser tomado em consideração, e não é só no meio do Bitcoin. Ser maintainer de open source é algo muito estressante. Você tem pressão constante e muita exposição para tomar decisão em momentos de discussão intensa.
Que dica você daria para um desenvolvedor que quer começar a trabalhar com o código do Bitcoin?
Colocar a mão na massa, olhar uns projetos que você gosta, alguma coisa que você usa. Um bom primeiro passo é ir no GitHub e interagir com o pessoal. Geralmente tem problemas que estão marcados como Good First Issue, que é algo simples de se desenvolver. Você pode pegar aquilo ali, brincar um pouco, aprender sobre a base e ver se você gosta desse tipo de carreira. Mas o legal mesmo é começar, meio que se divertir ali com o código que você gosta e realmente sujar as mãos, porque não tem um caminho fácil.
- Clique aqui e acompanhe o Portal do Bitcoin no Google Notícias