5 Maneiras de Aproveitar melhor os Tutoriais e Cursos



Quando iniciamos nosso processo de aprendizagem, é muito comum encontrarmos centenas de tutoriais com dicas, desde as mais simples até as mais avançadas, relacionadas com o que estamos começando a aprender, ou até sobre coisas que temos simplesmente curiosidade de saber como funcionam.
Bastam apenas algumas palavras na pesquisa do YouTube, como "Tutorial React", para recebermos uma enxurrada dos mais variados vídeos sobre o assunto e de dezenas de canais diferentes.

Nunca foi tão fácil aprender, correto? Mas...

E o que sobra depois de assistirmos a esses tutoriais? Nós ao menos realizamos o ensinado pelo tutor no vídeo? Sabemos como aproveitar aquelas dicas no dia a dia? Por que há tantos tutoriais diferentes sobre a mesma coisa (Todo list que o diga)?

É por isso que decidi escrever esse artigo e colocar aqui algumas dicas de como usar tutoriais para não só aumentar seu conhecimento (ou curiosidade) sobre um determinado assunto, mas também construir um portfólio sólido e melhorar bastante como profissional na sua área.

Me baseei para esse texto no vídeo do canal Traversy Media "5 Tips To Maximize & Move Beyond Tutorials", mas usei minha experiência para ressaltar cada um dos pontos. ;)

Dica 1# Continue o Tutorial

Use o código desenvolvido no tutorial e adicione coisas novas, modifique-o e experimente com ele.

Essa primeira dica é muito importante pois muitas vezes começamos um tutorial e nem sequer finalizamos ele, às vezes até finalizamos mas apenas fazendo Ctrl-C e Ctrl-V e depois largamos ele de lado. E isso é muito ruim. Os tutoriais estão ali para nos ensinar algo e não somente para que copiemos o código sem nos questionar nada sobre o que está sendo passado ali.

Aqui vou adicionar uma experiência minha: um dos apps que tenho publicado na Play Store, o Kazagastão, foi a evolução de um tutorial que estava fazendo quando estava estudando React Native. Na época, estava criando um clone para o YouTube, e o tutorial era bem simples e objetivo, basicamente escolhíamos um canal para receber os vídeos e adicionávamos um visual parecido ao App oficial. Daí eu fiz mudanças visuais, adicionei os logos, adicionei novas abas com informações sobre o Canal do KZG, redes sociais, etc. E lancei o App. Ou seja, além de aprender algo novo, ainda adicionei bastante ao meu portfólio e contribui com um canal que admiro muito.

Então, em resumo, não se prenda ao resultado final, use o que construiu ao longo do tutorial e o evolua para algo novo.


Dica 2# Crie algo novo

Use os Princípios que você aprendeu no tutorial para construir um projeto do zero.
Utilize coisas que você aprendeu em vários tutoriais para criar coisas novas.

Essa segunda dica está totalmente relacionada à primeira, mas aqui é importante sabermos utilizar o conhecimento adquirido ao longo dos diversos tutoriais que vimos para construir algo mais avançado.

Um exemplo que me vem à cabeça agora é construir um site ou um App que consuma alguma Api. Então, dessa forma, você conseguiria treinar seu conhecimento em desenvolvimento de interfaces construindo algo com React ou Angular e montar um servidor simples que se comunique com um servidor NodeJS ou até mesmo o Json-Server, que é muito útil para aprendermos como uma aplicação completa funciona.

Saber ou ao menos conhecer diferentes tecnologias abre muitas portas para nós desenvolvedores pois podemos enxergar diversas maneiras de solucionar um determinado problema, e isso é algo que agrega muito ao nosso currículo.

Dica 3# Pesquisas e Mais pesquisas

Não se prenda somente aos tutoriais, vá atrás da documentação, vá nos fóruns, nas comunidades e visite outros projetos.

Uma coisa importantíssima para aproveitar muito bem os tutoriais e diversos cursos que fazemos ao longo da nossa vida, é conhecer a documentação daquela biblioteca, framework, banco de dados, etc.
É muito comum vermos pessoas que se limitam somente ao curso ou a um tutorial sem se aprofundar na documentação do projeto, sem ir aos fóruns ou ter a curiosidade de verificar o código fonte de Apps que utilizam a linguagem de programação que você está aprendendo.

Muitas vezes o tutor não explica algo direito e se você não correr atrás de entender  como uma determinada função, por exemplo, funciona isso vai prejudicar muito seu aprendizado.

E, acredite, a documentação muitas vezes pode salvar sua vida e lhe ajudar a resolver um problema que você pode estar perdendo horas e horas quando a resposta estava logo ali na sua frente.

E, caso não consiga essa resposta na documentação, sempre teremos fóruns como o do StackOverflow para conseguir resolver uma bronca que apareceu para a gente mas que alguém já encontrou solução para ela em outro momento. É bem provável que apenas 10% dos problemas que você vai ter durante sua vida de programador vai ser algo totalmente inédito.

E, uma coisa importante é sabermos que nunca vamos saber de tudo, sentarmos em frente ao computador e resolvermos todos os problemas em segundos. Sempre, sempre, vamos precisar de ajuda e essas dicas vão ser muito valiosas mesmo quando for um programador "super mega power da NASA".

Dica 4# Utilize outras fontes de informação

Assista a conferências, vídeos no YouTube, Streams, leia artigos e ouça Podcast

Muitas vezes temos o péssimo hábito de ficarmos presos dentro de um mundo de cursos e mais cursos, tutoriais e mais tutoriais ou também apenas em livros ou blogs e isso é muito ruim. Obter conhecimento a partir de apenas uma ou duas fontes de informação é péssimo e limita não só o seu aprendizado de uma determinada coisa mas também limita seu crescimento profissional.

Outra coisa é que não podemos apenas querer ler e assistir coisas técnicas, é importante também ouvir sobre experiências de pessoas que estão na área e que falam da carreira, novidades, etc. E também não apenas sobre programação, mas é importante saber sobre as coisas que acontecem ao nosso redor também. Isso tudo nos faz um profissional e pessoa mais completa.

Aqui eu vou citar alguns canais do YouTube, Brasileiros e Gringos, que costumo assistir com frequência e também alguns Podcasts muito bons também:

Canais Brasileiros: DevPleno, RocketSeat e BrazilJS.
Canais Gringos: Academind, Traversy Media e FreeCodeCamp.
Podcasts: DevNaEstrada e Hipsters.tech.

Aí você não somente se aprofundará sobre as tecnologias em si mas também verá palestras, novidades e conhecimento de carreira de profissionais que fazem muita diferença no mercado.

Dica 5# Interaja com outros Desenvolvedores

Essa última dica pode ser fácil para você que já trabalha na área e em uma empresa de TI, Startup, etc. Mas para quem está aprendendo ou trabalha como freelancer, isso é um pouco mais complicado e pode custar muito a nós desenvolvedores.

Então as dicas que dou são:

  • Junte-se a um grupo no Slack/Discord ou até mesmo no Telegram ou WhatsApp. Há muitos grupos abertos que estão cheios de pessoas prontas a lhe ajudar. Só não esqueça de pedir com educação. ;)
  • Vá a Meetups. Mesmo em cidade pequenas, há grupos como o GDG que produzem eventos abertos à comunidade. Em Faculdades e IFs espalhados pelo país também muito encontros e muitos deles gratuitos também. Minha dica é se cadastrar no site Meetup.com e procurar pelos próximos encontros mais perto de você. Eles são muito importantes para se construir um Networking e poder conversar com programadores mais experientes também.
  • Faça perguntas nos StackOverflow ou qualquer outro fórum de desenvolvimento. Isso é importante que se torne um hábito, não só perguntar, mas procurar responder também. Lembre-se que sempre e em todo lugar há pessoas começando a desenvolver e que tem dúvidas que, para você, talvez já sejam bem básicas e é muito legal ajudar, é até viciante muitas vezes.
  • Contribua para projetos OpenSource. No Github há diversos projetos de código aberto para contribuir e isso agrega muito ao seu currículo. É um Ganha-Ganha, pois você ajuda o projeto, aprende coisas novas e isso vai ser um "chamariz" para seu currículo, atraindo a atenção de recrutadores do mundo todo. 
  • Faça Pair Programming (programação em tempo real com outros desenvolvedores). Isso é legal quando você tiver outros amigos que programem também e estejam dispostos a estudar em conjunto resolvendo desafios ou construir coisas novas. Isso ajuda a lidar com ansiedade e com síndrome do impostor também.

Então é isso pessoal, espero ter ajudado com essas dicas rápidas e que devem servir para abrir a mente quando o assunto é conhecimento. 

Valeu! :D



Closures em Javascript


Nesse novo artigo, tratarei das Closures, também conhecidas como funções de "Fechamento", as quais têm a possibilidade de armazenar valores internos mesmo após terem sido executadas. O que dá, aos desenvolvedores, possibilidade imensas ao criar lógica para seu código.

O Javascript, assim como outras linguagens de programação, utiliza o chamado "Escopo Léxico". E do que se trata isso de nome tão complicado e difícil de lembrar? Bom, em resumo, significa que variáveis e funções que estejam fora de um determinado escopo, ou seja, fora de uma função ou de um loop, por exemplo, podem ser acessadas por esses.

Na prática é algo como isso:

Ou seja, a função increment tem acesso à variável num, pois ela se encontra fora do escopo da função. Dessa forma, ela consegue incrementar o valor informado, no exemplo o número 20, ao valor 10 da variável num, retornando o número 30 como resultado da adição.

Já o contrário não é possível. Você não conseguiria acessar a variável inc ou qualquer outra que estivesse sido declarada dentro da função increment, fora desta.

Outro exemplo:
Ao utilizar Closures em Javascript, é possível guardar o resultado de variáveis dentro de funções que podem ser manipuladas em seguida e trazidas para um novo contexto, sem perder o estado delas.

É um pouco complicado de entender mesmo, mas vou tentar utilizar um exemplo prático para ficar mais fácil.

No exemplo abaixo, podemos ver como utilizar Closures para criar um contador simples, onde cada vez que a função é chamada, ele aumenta o valor da variável contador em 1.
Um outro exemplo mais simples ou trivial seria:
Uma analogia utilizada para entender de forma mais simples as Closures é a analogia da mochila.
Quando se cria uma função, a mesma traz consigo as variáveis em seu escopo dentro de uma  "mochila", então quando você executa essa função, ela vai lidar com essas variáveis e tudo o que fizer dentro dela, vai ser mantido e atualizado junto. 

Pois as Closures são nada mais do que uma coleção de variáveis dentro de um escopo no momento em que a função é criada.