Tudo isso mudou em março de 2020. Fui demitido do meu trabalho como gerente de desenvolvimento de negócios em uma startup líder de análise de dados e automação de marketing, devido à pandemia do Coronavirus.

Foi então que decidi embarcar em uma jornada para finalmente perseguir meus sonhos de me tornar um Desenvolvedor de Software.

Veja, eu me formei na University of California, Los Angeles em 2012 com um bacharelado em ciências políticas, com a garantia de que iria para a faculdade de direito e me tornaria advogado.

Desde então, trabalhei para uma série de startups em várias funções, incluindo Coordenador Técnico de Contas e Gerente de Desenvolvimento de Negócios. Eu até me envolvi no poderoso mundo das finanças, trabalhando como analista de banco de investimentos por alguns anos.

Mas nenhum desses empregos me atraiu, mesmo remotamente, e eu sabia que precisava de uma mudança para sempre.

Roteiro para se tornar um desenvolvedor de software

Comecei minha jornada de desenvolvimento de software usando dois sites: freeCodeCamp e O Projeto Odin. Com eles aprendi HTML, CSS, Git, Bash e Github.

Esta foi a minha primeira entrada real no mundo único da tecnologia, onde construí miniprojetos, como recriar a página inicial do Google. Eu usaria comandos Bash e, em seguida, enviaria minhas alterações Git para o GitHub. Foi fascinante ver algo tangível ganhar vida com apenas algumas linhas de código!

Como HTML e CSS são linguagens de marcação e estilos, tive que aprender uma verdadeira linguagem de programação. Após uma pesquisa completa online (principalmente Reddit), decidi por Java ou Python. Eu escolhi o último.

Comecei a ler dois livros introdutórios ao Python que realmente me entusiasmaram com essa bela linguagem. Eles eram Automatize as coisas chatas com Python por Al Sweigart e Curso intensivo de Python por Eric Matthes.

Esses dois autores são tão brilhantes quanto hilariantes, e eu adorei passar por cada capítulo, concluindo as atribuições necessárias.

Eu sabia o básico neste ponto, mas queria aprender como construir com esse novo conhecimento.

Então me inscrevi em um curso de especialização de cinco cursos no Coursera chamado Especialização em Python para todos pelo grande Charles Severance, também conhecido como Dr. Chuck. Isso é exatamente o que eu preciso para preencher a lacuna entre o Python iniciante e intermediário.

Essa especialização levou quase dois meses para ser concluída. Aprendi SQL, protocolos de Internet, JSON, XML e uma variedade de bibliotecas Python, incluindo Sopa linda e Urllib (usado para web scraping).

Dr. Chuck é uma lenda absoluta no mundo da tecnologia, e não é surpresa que seus cursos estejam entre os mais matriculados no Coursera.

Neste ponto, eu tinha conhecimento suficiente em HTML, CSS, SQL e Python para dizer com segurança que era um Desenvolvedor de Software Intermediário.

cover
É hora de criar um projeto significativo!

Como (e por que) construí meu projeto de automação de TI

Nesse ponto, porém, percebi que não havia criado nada significativo que chamasse a atenção de empregadores em potencial. Nada que eu pudesse postar no GitHub, que seria clonado centenas de vezes, bifurcado milhares de vezes. Em certo sentido, minha presença de código aberto era inexistente.

Eu vasculhei a internet, em busca de ideias para projetos em Python. Claro, eu poderia ter criado um web scraper ou outro bot chato do Twitter, mas queria construir algo diferente.

Enfiando a cabeça, pensei em meu trabalho anterior como gerente de desenvolvimento de negócios. Lá, fui encarregado do trabalho árduo e mundano de encontrar contas duplicadas em nosso CRM Salesforce (havia mais de um milhão de registros!).

Como gostaria de ter escrito um script simples para fazer meu computador fazer o trabalho em minutos, em vez de semanas.

Então me ocorreu – por que não construo um utilitário que percorre todos os arquivos do meu computador e procuro por duplicatas? A pessoa média provavelmente tem uma tonelada de arquivos em seu computador, muitos dos quais são criados várias vezes e completamente esquecidos.

As ideias começaram a surgir. Pensei em muitos casos de uso para setores como Finanças e Saúde que definitivamente poderiam utilizar algo assim para examinar seus registros em nenhum momento.

Decidi pular para o VS Code, criar um arquivo .py e nomeá-lo duplicate_files. Finalmente era hora de usar meu chapéu de Designer de Software e construir minha obra-prima.

Construindo o Utilitário de Arquivos Duplicados

Uma das partes mais difíceis no design do seu projeto é decidir quais bibliotecas você deseja usar.

  • Eu sabia que queria acessar os arquivos no meu computador, então adicionei a biblioteca do sistema operacional.
  • Eu sabia que queria encontrar o hash exclusivo de cada arquivo para diferenciá-los, então escolhi a biblioteca hashlib.
  • Eu sabia que queria que os usuários fornecessem seus próprios argumentos ao executar esse utilitário, então escolhi a biblioteca argparse.
  • E, claro, eu queria cronometrar o tempo total de processamento do utilitário, então adicionei a biblioteca de tempo.

Outra parte difícil sobre o design de seu projeto é decidir quais estruturas de dados funcionam melhor. Após algumas tentativas e erros, escolhi dois dicionários e uma lista (que aplicaria diretórios ignorados pelo usuário no Windows, macOS e Linux).

Foi extremamente importante para mim que isso realmente englobasse “Um programa simples, mas poderoso, que procura por arquivos hash duplicados exclusivos em seu computador Windows, Mac0S ou Linux”.

E é por isso que eu queria usar os blocos de construção básicos que Python tinha a oferecer – loops, condicionais e FUNÇÕES. Não usei nenhuma Programação Orientada a Objetos complexa que você possa ver em outros projetos. Este programa simplesmente tem três funções principais, é isso!

Concluí meu projeto adicionando um arquivo LEIA-ME e também incluí um arquivo .gitignore sempre que enviava minhas alterações para GitHub. Testei exaustivamente este programa por meio do VS Code Debugger (editando o arquivo launch.JSON), bem como em vários computadores que tinham todos os principais sistemas operacionais.

Na verdade, este programa foi executado em uma máquina Windows, onde o caminho fornecido continha um arquivo de 6 GB. O programa pareceu parar temporariamente quando alcançou aquele arquivo, então continuou e terminou em um tempo extremamente rápido.

Nesse exemplo, o caminho tinha 100.000 arquivos e terminou em cinco minutos. Meses atrás, fiquei surpreso com a forma como algo que escrevi em HTML e CSS básico era exibido em um site.

Depois de executar este programa atualmente, estou realmente fascinado com a velocidade e complexidade com que os computadores podem ser executados quando recebem apenas algumas linhas de código!

naval
Naval Ravikant, um dos meus ídolos

Conclusão

Tem sido incrivelmente difícil, mas gratificante, 8 meses (e contando) para aprender como se tornar um Desenvolvedor de Software.

Por um tempo, pensei em participar de um bootcamp. Até considerei um programa de mestrado em Ciência da Computação.

Mas com os excelentes materiais gratuitos e de código aberto disponíveis na Internet, eu me sentia confiante de que poderia aprender por conta própria.

Eu quero dar um grande grito para Quincy Larson por me motivar a iniciar minha jornada no freeCodeCamp. Também quero agradecer a Al Sweigart, Eric Matthes, Charles Severance e Guido van Rossum, que direta ou indiretamente ajudaram-me em minha jornada até agora.

Espero que esta postagem consiga duas coisas:

  1. Que eu motivo outras pessoas que não têm certeza sobre o que querem fazer em termos de carreira, ou simplesmente estão com medo, a sair e começar a programar!
  2. Que um empregador me dê uma chance, para que eu possa realizar um dos meus maiores sonhos de me tornar um Desenvolvedor de Software (ainda que autodidata).

Para concluir: um dos meus maiores ídolos, Naval Ravikant, um renomado programador de computador, investidor e filósofo moderno, tem uma citação que sempre ressoou em mim.

“Aprenda a vender. Aprenda a construir. Se você puder fazer as duas coisas, será imparável.”

Bem, construí uma carreira em vendas nas indústrias de finanças e tecnologia e agora aprendi a construir. EU SAREI INCOMPARÁVEL.

Você pode me encontrar no Twitter e LinkedIn