Fala pessoal, tudo bom com vocês? Pokemão de volta aqui com mais um tema para iniciantes em desenvolvimento. Se você ainda não leu os outros artigos. Dá uma olhada lá que tem muito conteúdo legal para você que está começando ou quer entender mais sobre o mundo de desenvolvimento.
O tema de hoje é uma pergunta que também recebo muito nas minhas lives. “Pokemão, estou começando a desenvolver, que projetos é legal eu fazer?”. Obviamente as pessoas vem falar, ah, vi por ai que é legal fazer uma to do list, um clone da interface da empresa tal… Não faça só isso... todo mundo faz... você tem que ser diferente… Quer saber a real? A galera que recruta já tá de paciência esgotada com esses negócios de clone, qualquer curso de uma semana ensina isso e você nada mais faz do que copiar e colar código que você viu em algum lugar e que no fundo você não entende nada do que está fazendo ali. E uma porrada de gente faz a mesma coisa… Como você vai se diferenciar fazendo o mesmo que todas as pessoas?
Vou elucidar vocês com o primeiro projeto que eu realmente finalizei durante meus estudos de desenvolvimento. Era entre 1999 e 2000, a internet discada imperava no ambiente brasileiro (de quem tinha internet né, lembro que demorei alguns anos para ter, pois, onde eu morava - um conjunto da marinha em Brasília só tínhamos ramal e portanto só pude ter internet quando mudou para linha telefônica "real"). Eu tinha um PC até ok para a época, era um Pentium II 166. As pessoas estavam conhecendo ainda o que era mp3 e lembro que demorava um dia para baixar um mp3 kkkk e o pessoal de hoje reclama que demora pra baixar videos rsrs. Dentre os tocadores de mp3 o que imperava com certeza era o winamp, porém, além do meu PC não rodar o winamp decentemente, eu não curtia a interface e não gostava do jeito que o winamp fazia o aleatório entre as músicas. Não tínhamos whatsapp, nem facebook, nem orkut na verdade, no Brasil quase ninguém tinha ouvido falar em Google, o que mandava aqui era o cadê e o bate-papo da UOL. Imagina como era fácil achar conteúdo de programação nessa época, risos, exatamente, não tinha quase nada. E eu gostava de usar o que seria o slack de hoje em dia, o mIRC!
Para quem não sabe o IRC é basicamente um protocolo de comunicação cliente-servidor para desenvolvimento de bate-papo. Por exemplo, o chat da twitch é desenvolvido em cima de um servidor IRC e eu usei meus conhecimentos daquela época para desenvolver o bot da minha live, mas, isso é papo para outro artigo. A questão é que para acessar uma rede IRC em geral a gente usava um client desktop chamado de mIRC. Esse em cima desse cliente a gente podia customizar ou desenvolver funcionalidades usando a linguagem de programação IRC script (com certeza a galera mais velha de internet lembra disso). Como eu passava a maior parte do meu tempo no IRC, nada mais justo que aprender essa linguagem. Lembro que dentro do mIRC tinha uns arquivos helpers .hlp que abrem no windows helper viewer e esses arquivos tinham os conhecimentos sagrados de como desenvolver scripts para o cliente IRC. E num desses estudos eu aprendi como criar GUIs (interfaces visuais para o IRC tipo aquelas janelas show do Delphi), aprendi a manipular arquivos no IRC (ler arquivos nas pastas, listar e acessá-los) e também descobri que era possível tocar mp3 dentro do client.
Bem, vocês lembram o que falei no meu primeiro artigo aqui?: a gente pegava o problema, aprendia as ferramentas e depois resolvia. E foi isso que fiz: eu sabia que gostaria de ter um tocador de mp3 mais leve e mais útil que o winamp. Peguei o que aprendi no IRC e fui criar o The Poke’s Player. Eu lembro que fiquei muito feliz quando consegui terminar o projeto. Não porque um cliente ia usar e tinha pago para ter algo que nunca está do jeito que quer. Mas sim porque o cliente daquele projeto era eu. Aquilo iria resolver um problema que eu tinha, um problema real que eu queria resolver. E isso me ensinou muito mais sobre o que eu conseguia resolver com programação, me fez ter muito mais vontade de estudar o que precisava para resolver o problema e fez o projeto ter uma qualidade decente, já que eu iria usar aquilo diariamente. Eu sabia exatamente o que eu queria, o que esperar do projeto e o que ele iria entregar para mim, afinal, o problema era meu, literalmente.
Me diz quantas pessoas você conhece que o primeiro projeto foi resolver um problema pessoal? E quantas você conhece que foi fazer um to do list ou clonar uma interface? Qual projeto despendeu mais criatividade? Qual projeto tem mais propósito? Não estou falando que aprender a fazer to do lists ou clonar interfaces é algo ruim, às vezes, é algo bem didático para você ver um resultado imediato, porém, hoje em dia todo mundo faz isso, todo mundo aprende assim. Qual diferencial você vai ter com outras pessoas que fazem a mesma coisa?
Então, a primeira dica de projeto que tenho para você hoje é: resolva algum problema que você tem, seja o seu primeiro cliente. Todo mundo tem pelo menos um problema, e a grande parte desses problemas podem ser resolvidos utilizando programação. Você usa vários apps no seu celular e no seu computador que foram criados da mesma maneira. Alguém tinha um problema e decidiu resolver esse problema, incrivelmente a grande maioria das empresas que você vai aplicar geralmente também nasceram da mesma maneira: para resolver o problema que alguém teve anteriormente.
Cria sei lá: um sistema que manda e-mail pra te acordar, um bot no telegram para mandar foto de bom dia no grupo da família, um sistema para te avisar quando acontecer uma nova treta dev no twitter (ops, ai não vai funcionar, pois, as tretas são sempre as mesmas...)
Aí você fala… “Ah Pokemão, mas eu não tenho nenhum problema…”, primeiramente você não é uma pessoa humana então kkkkkk. Mas tá, se você cismou que não tem problemas, você gosta de alguma coisa então. Faça algum projeto que envolva o que você gosta. Quando eu era menor eu gostava de pokémon (que inusitado né?). Então, criava bots de batalha pokémon no IRC. Fiz um site sobre esse sistema de batalhas. Criei uma pokédex. E outras coisas que envolviam o que eu gostava. Coloca essa cabeça pra viajar! Você vai ajeitar algo legal!
Se ainda assim você vier falar que não gosta de nada “PQP einnnn vamos rever esses conceitos aí” faz o seguinte. Sabe aquela pessoa amiga que descobriu que você está estudando para ser dev e pediu para você consertar a impressora? Ela mesmo, ela tem uma idéia revolucionária que vai fazer todo mundo ficar rico e só está precisando de você para iniciar uma sociedade inacreditável de desenvolvimento. Ou uma dica melhor: entre em algum grupo do facebook de desenvolvimento, espere um post sobre essas ideias maravilhosas e pede pra pessoa contar a ideia rs! Ouça ou leia essa ideia aleatória e tenta codar o que der disso. Com certeza vai ser uma experiência bem aleatória, porém, pode te dar muitas skills em soluções random kkkk. Grandes devs que conheço começaram em agências ou consultorias e basicamente o trampo era desenvolver as coisas mais aleatórias do mundo, repetitivamente e também mandar e-mail marketing :), e-mail marketing não pode faltar.
Agora, se o que você precisa é entender um pouco como funciona o trabalho em equipe dentro do github. Contribua para projetos open source. Todo mundo lembra (inclusive eu) que existem projetos para contribuição durante a hacktoberfest (evento anual para estimular a contribuição ao open source) para ganhar camiseta. Porém, esquecemos tudo que envolve a contribuição para esses projetos. Desde os conceitos mais simples como fork, git clone, git push, git pull. Até os mais maravilhosos conflitos de merge (oh coisa linda). Além do conceito de backlog, priorização, bug reporting e outros com as issues. Revisão de código com os pull requests e muito mais. E ensinamentos não técnicos como a divisão do time, o vai e vem de devs contribuindo (o que simula contratação e desligamento em times), entre outros conceitos que você pode aprender.
Sei que você vai falar “Ah Pokemão, mas não sou bom tecnicamente para contribuir com esses projetos…”, tudo bem, eu entendo. Mas, sabia que você pode contribuir com outras coisas sem ser código propriamente dito? Pode ajudar na tradução, pode ajudar na documentação, pode ajudar criando comentários, comentando nas issues, dando ideias de novas funcionalidades e muitas outras maneiras.
Tem alguns repos e artigos legais com alguns projetos que são de fácil entrada para a contribuição:
https://github.com/backend-br/opensource-br
https://dev.to/womakerscode/hacktoberfest-conheca-os-projetos-open-source-da-womakerscode-2doj
https://jtemporal.com/projetos-brasileiros-para-fazer-pull-requests-nesse-hacktoberfest-2021/
https://ok.org.br/noticia/hacktoberfest-2021-na-okbr-contribua-com-projetos-brasileiros-de-inovacao-civica/
Ou só procure no google por “open source repositórios hacktoberfest” (o hacktoberfest é só pra facilitar achar :) )
Ou contribua para algum projeto que você use durante seus estudos de código.
Bem, por acho que hoje é isso. Desejo que esse artigo tenha ajudado você em alguma coisa, se ajudou deixa seu comentário ai, taca o coração e o unicórnio, salva, manda pra vó e tudo mais. Se eu puder melhorar em alguma coisa avisa ai.
Um grande abraço para você e vamos fortalecer a bolha dev!
Rodrigo “Pokemaobr” Cardoso
Caso você queira me ajudar a continuar criando conteúdo para devs, me ajude no apoia.se, assista minhas lives na twitch e me siga no twitter.