paint-brush
Minha jornada como desenvolvedor Solidityby@alcueca
2,476
2,476

Minha jornada como desenvolvedor Solidity

Comecei a programar contratos inteligentes há cinco anos, aos 38 anos, e deixei de ter nenhuma experiência profissional em programação para construir contratos inteligentes de última geração.
featured image - Minha jornada como desenvolvedor Solidity
Alberto Cuesta Cañada  HackerNoon profile picture

Comecei a programar contratos inteligentes há cinco anos, aos 38 anos, e deixei de ter nenhuma experiência profissional em programação para construir contratos inteligentes de última geração.


Muitos perguntaram como poderiam seguir um caminho semelhante. Embora não exista um recurso ou segredo específico para o sucesso, existe um padrão que você também pode usar.


Aqui está minha jornada.

O início

Em 2018, mudei-me recentemente com a minha mulher e o meu filho pequeno de Melbourne para Lisboa, para que pudéssemos estar todos mais próximos da família. Tive uma carreira decente como engenheiro de supercomputação e arquitecto de soluções para banca de investimento e pensei que Lisboa seria suficientemente grande para eu encontrar um emprego.


Rapidamente descobri que o mercado de trabalho em Lisboa não necessitava absolutamente de engenheiros de supercomputação e que a minha formação em arquitecto de soluções só me proporcionaria funções aborrecidas de gestor intermédio.


Eu estava interessado na tecnologia blockchain há muito tempo, mas nunca realmente entrei nisso. Então li um artigo sobre como era difícil contratar engenheiros de blockchain e vi uma oportunidade.

Escrevi ao autor para agradecê-lo pela inspiração para procurar emprego em blockchain. Começamos a conversar e, junto com um amigo dele, decidimos fundar a TechHQ, uma consultoria de blockchain com ideais elevados. Em nossa consultoria de três pessoas, eu seria o especialista em tecnologia.


Tive cerca de um mês para fazer a transição de arquiteto de soluções corporativas para a criação de projetos baseados em blockchain que poderíamos vender aos clientes.


Sem experiência anterior, eu seria o especialista em tecnologia.


Uma de minhas atribuições era escrever artigos técnicos sobre blockchain para atrair clientes, assim como o artigo que me levou a conhecer meus parceiros. Escrever esses artigos e tornar público o que aprendi seria fundamental em minha carreira.


Meu primeiro artigo seria sobre começando nesse trabalho e detalha meus primeiros passos no blockchain. Minha introdução ao Solidity foi completar o Tutorial de CryptoZombies .


Nossa primeira oportunidade de negócio surgiu alguns meses depois com um projeto de CimentoDAO . Tínhamos embarcado Bernardo, um jovem e talentoso hacker local , que em algum momento pediu ajuda com a matemática envolvida. Eu não sabia muito, mas poderia tentar fazer Fixidity trabalha para construir uma curva AMM personalizada usando logaritmos.

Essa tarefa demorou cerca de um mês, com Bernardo me ensinando solidez, javascript, git e trufa. Eu não sabia de nada, na verdade. Os resultados não foram nada excelentes – engenharia excessiva e ineficientes mesmo para os padrões de 2018. Na minha ignorância ,
Eu realmente acreditei que era de primeira linha .


Os resultados não foram nada excelentes – engenharia excessiva e ineficientes mesmo para os padrões de 2018


Tendo adquirido alguns recursos de codificação sólidos e apenas com Bernardo qualificado em desenvolvimento frontend, assumi os contratos inteligentes da CementDAO. Infelizmente, devido em parte à implementação ineficiente do Fixidity, nunca avançamos para o estágio mainnet.


À medida que procurávamos mais clientes, continuei a experimentar para poder escrever mais artigos, porque era assim que esperávamos conseguir clientes. Eventualmente, tive uma ideia interessante para um solução para cadeia de suprimentos . Embora esta ideia não tenha tido sucesso, levou-me a propor umacontrato de controle de acesso baseado em função isso foi realmente decente.


Bem quando a falência parecia iminente, esse mesmo código nos garantiu outro cliente: Bloco de Aliança nos contratou para codificar uma plataforma de emissão de blockchain com diversas funções autorizadas.


Apesar do péssimo desempenho nos contratos inteligentes, eles só precisavam de uma prova de conceito no Ganache, que entregamos. Aprendi lições importantes sobre arquitetura de contratos inteligentes, armazenamento em cadeia e integração de front-end.


Apesar do péssimo desempenho… aprendi lições importantes


Novamente não tivemos receita e estávamos com muito pouco dinheiro. Resolvi abrir mão do meu salário e comprar um terço da empresa para não irmos à falência. Não achei que tivéssemos grandes chances de sucesso como empresa, mas não importava, eu estava programando, estava aprendendo, estava me divertindo. Parecia um negócio barato obter uma ótima experiência em blockchain.


Enquanto procurávamos mais clientes. eu colaborei em contratos hq20 com uivlis , desenvolvendo e documentando vários padrões de solidez e casos de uso. Claro que eu escreveu muitos artigos sobre eles .


O ponto de viragem

Eventualmente, a empresa ficou sem dinheiro novamente e todos tivemos que começar a procurar emprego. Então, me deparei com umproblema aberto no OpenZeppelin . Eles precisavam de algo como uma lista vinculada, e eu fiz isso primeiro para CementDAO, depois para contratos hq20 e até escrevi um artigo legal sobre isso .


Após discussões com aventura , minha contribuição foi integrada como EnumerableSet.sol em um dos lançamentos do OpenZeppelin. Eu consegui. Parte do meu código finalmente foi lançado. E com o OpenZeppelin nada menos.


Encorajado por este sucesso, enfrentei o desafio do OpenZeppelin de renovar os seus contratos de controlo de acesso. Eu tinha feito um trabalho de ponta no tópico da falha na aplicação da cadeia de suprimentos, aperfeiçoado com o AllianceBlock e novamenteescreveu um artigo completo sobre o assunto .


Eu sabia que poderia fazer isso. Isso acabou levando à publicação de AccessControl.sol no Versão 3.0 de contratos abertos de zeppelin, o que mais uma vez foi um grande marco em minha carreira.


Eu consegui. Parte do meu código finalmente foi lançado. E com o OpenZeppelin nada menos.


Eu ainda precisava de um emprego e me tornei instrutor de Blockchain da BeyondSkills. Eu teria que criar cursos online para ensinar programação de solidez. Como sempre, eu não estava realmente qualificado para o trabalho. Eu sabia codificar algumas coisas, mas tinha enormes lacunas no meu conhecimento. Até então, eu nem tinha contratado um contrato.


Tive que falar em vídeo e fazer tutoriais sobre desenvolvimento de solidez. Eu também tive que ser minucioso porque os cursos precisavam ser consistentes. O mesmo padrão dos artigos aqui aplicados; Eu estava aprendendo coisas e imediatamente ensinando-as, e isso me levou a aprender muito sobre desenvolvimento de solidez.


Infelizmente, a empresa fechou devido a desafios legais e esse conteúdo nunca foi divulgado. Talvez seja melhor assim.


Eu estava aprendendo coisas e imediatamente ensinando e isso me levou a aprender muito sobre desenvolvimento de solidez.


Durante a gravação desses cursos, fui abordado por Allan Niemerg para obter assistência com matemática de ponto fixo para um white paper que ele tinha . Ao contrário de muitas outras pessoas com uma ideia que me contataram na época, Allan tinha dinheiro de um fundo de capital de risco do qual nunca tinha ouvido falar, Paradigma , e eu o levei a sério.

Naquela época, eu já havia codificado o Fixidity, publicado vários artigos sobre matemática de ponto fixo e tentado ajudar tanto o OpenZeppelin quanto a equipe principal do Solidity, sem sucesso. Eu também sabia que AMMs com funções logarítmicas não eram triviais e conhecia um cara, Mikhail, que poderíamos contratar para fazê-los funcionar.

Fui o primeiro contratado na @yield. Convenci Allan a contratar Bruce dos meus tempos de TechHQ como engenheiro front-end, e nós três, com a ajuda de um jovem Geórgia , lançou com sucesso o Yield v1 na rede principal.


Eu aprendi muito - sobre mecanismos de dívida garantida , integração de protocolo , erros de arredondamento, licenças fora da cadeia , empréstimos instantâneos , e eficiência de gás , para nomear alguns. Como a maioria das minhas tentativas de fazer algo que nunca tinha feito antes, não foi um grande sucesso.


Uma das coisas que aprendemos é que, ao contrário do Uniswap, precisaríamos fazer alterações no protocolo em busca de adequação entre produto e mercado. Como nossos contratos eram em sua maioria imutáveis, logo começamos a trabalhar no Yield v2.

Avançando para hoje

O Yield Protocol v2 esteve ativo por cerca de dois anos e aprendi muito com ele, mas agora está fechando. Embora o nosso trabalho técnico tenha sido de primeira linha, as taxas fixas não se enquadram no mercado de produtos nas finanças descentralizadas no momento.


Na natureza novamente, estou escolhendo o caminho difícil novamente e, em vez de conseguir outra função de Engenheiro Líder/CTO, estou me posicionando como consultor para outras startups que podem se beneficiar das lições que aprendi. Não existem manuais sobre como fazer isso e sei que as lacunas no meu conhecimento são enormes, mas também o são as oportunidades de melhoria.


Agora você deve ver o padrão. Fico fora da minha zona de conforto, muitas vezes falhando, mas sempre ensinando aos outros o que aprendo. Este mesmo artigo pode ser visto como um exemplo.


Se tiver sorte, encontrarei algo que alguém deseja, como CementDAO, AllianceBlock, contratos para OpenZeppelin, cursos BeyondSkills e, finalmente, Yield. Se não consigo encontrar alguém com necessidade, sempre há algo para aprender e sobre o qual escrever, como todos os meus artigos.


Fico fora da minha zona de conforto, muitas vezes falhando, mas sempre ensinando aos outros o que aprendo.


O ciclo de tentativa, fracasso, aprendizado e ensino não é invenção minha, mas funciona. Muitas vezes me faz parecer um idiota, e talvez essa seja a parte mais difícil para alguns. Eu mesmo, visto meus fracassos com orgulho.


Obrigado por ler. Espero que isso lhe dê alguma inspiração. Boa sorte.