Uma dúvida que muita gente tem, principalmente quem está iniciando na área é: Tem um mar de coisas, por onde caralhos eu começo?
Caso você esteja passando exatamente por isso, relaxa. É mais que normal e todo mundo já passou e as vezes passa até hoje.
Mas afinal, qual a solução?
Se você leu o Ato 4 (Vida universitária e Sistemas de Informação), você viu que um dos pontos positivos de se fazer uma faculdade é exatamente esse, ter contato com diversas matérias diferentes.
Lá eu pude ter contato com diferentes linguagens, diferentes áreas (front, back e infra) e pude ver o que mais me atraia.
Mas, talvez não se matricular em uma faculdade só pra ter esse tipo de insight não seja a melhor maneira de testar o que você realmente quer trabalhar.
Pensando nisso, fiz uma lista de tópicos e dicas que eu daria pra alguém que está começando.
Autoconhecimento
Pois é jovem, antes de mais nada, se você quiser seguir em frente nos seus estudos, independente de qual área seja, é preciso se conhecer.
Já fiz uma crítica sobre o modelo tradicional de ensino por aqui, mas vou voltar a falar sobre isso, e você vai logo entender o motivo.
Na escola, somos treinados para passar em provas. Fazemos provas desde que nos entendemos por gente até terminar a faculdade.
E ao contrário do que se espera, a maioria dos estudantes estuda para passar na prova, pra tirar nota, pra se formar.
E devido a esse pequeno fato, as vezes pegamos uma forma de estudo que deu certo uma vez e seguimos com ela, sem se quer se preocupar com a qualidade do que estamos fazendo.
Ainda pra piorar, como em toda profissão, do ensino fundamental até a faculdade, temos professores péssimos, que não se importam em tentarem atingir todos os tipos de estudantes da sala.
Tipos de estudantes? Como assim?
Tipos de Estudantes
Você já parou pra pensar qual é a forma com que você mais aprende? Tenta lembrar de alguma matéria ou tema que você aprendeu em algum momento da sua vida e consegue lembrar até hoje. Tenta lembrar da metodologia que foi utilizada para passar esse conhecimento pra você.
Vou listar abaixo os 3 tipos de pessoas, tenta ver se te ajuda:
Visual
O aluno visual é aquele que consegue memorizar e aprender muito mais fácil quando há representações visuais, ou seja, imagens, desenhos, gráficos, coisas coloridas, formas diferentes, mapas mentais. Enfim, qualquer tipo de imagem que consegue prover uma explicação visual do conceito teórico que está sendo passado a ele.
Auditivo
O aluno auditivo é aquele que consegue aprender apenas ouvindo. Quando está prestando atenção no que o locutor está dizendo, apenas ouvindo ele cria uma estrutura mental onde tudo aquilo faz sentido pra ele. Geralmente na sala de aula é aquela pessoal que nem abre o caderno, fica só prestando atenção no que o professor está dizendo e ainda assim aprende muito.
Cinestésico
O aluno cinestésico é o cara do "mãos na massa". Ele só vai conseguir aprender MESMO se colocar em prática, se ver aquilo funcionando de alguma forma, seja criando algo ou fazendo um exercício onde ele possa aplicar todo aquele conceito.
Mas, como você já deveria saber, a vida sempre vai ser muito mais cinza do que preto ou branco. Logo, podemos ter um pouco os traços de duas dessas características, ou das 3, como mostra esse diagrama de Venn sobre os tipos de alunos:
O razão de possuir esse conhecimento é simplesmente a maneira que vai fazer você aprender de fato.
Eu por exemplo, sou uma combinação de visual e cinestésico, saca só:
E além disso, eu SEMPRE prático o que eu to estudando, porque se eu não o fizer, de nada adiantou ter estudado.
Descobrindo o seu formato de conteúdo
Além de descobrir qual a forma que você aprende, você precisa descobrir qual é o formato de mídia que mais te ensina, algumas delas são:
- Livros
- Artigos técnicos e documentação
- Cursos em vídeo
- Podcast/audio books
- Sala de aula
Eu particularmente não sou fã de livros técnicos. Já tentei alguns, mas acho meio chato. Documentação eu gosto de ler, porque ela tenta te ensinar uma coisa da maneira mais clara e direta ao ponto.
Mas, de todas elas, sem dúvida, meu meio preferido de estudar é assistindo video aula.
Além de vários cursos comprados na Udemy, tenho assinatura no Alura há 3 anos já e pro meu estilo de aprendizado é o que mais se encaixa.
Outra que eu gosto bastante é Podcast. Apesar de não ser visual, eu gosto de ouvir ideias e debate sobre os temas e depois procurar mais sobre. Sempre me traz bons insights do que estudar ou começar a dar uma olhada.
Mais pra frente farei um apanhado das mídias que eu consumo.
Resumindo…
Descubra qual é a sua forma de aprendizado e isso ajudará você a ver progressão o quanto antes.
Qual área devo seguir?
"O mercado de trabalho em programação" - Blog da Alura
Dentro da área de TI existem várias possíveis áreas. Nos atos anteriores eu comentei sobre eu gostar de conhecer um pouco de tudo.
Sim, não gosto de ficar preso a apenas uma coisa. Apesar de ter minha preferência pelo Front, já tive contato com o back-end por exemplo e gosto bastante.
No meu caso, a faculdade me trouxe essas experiências, mas nada vai impedir você de gerar a sua própria experiência. É para isso que existe o Freecode Camp.
FreeCodeCamp
Freecodecamp: Curso Online, gratuíto e com certificado
O freecodecamp é um comunidade internacional que busca prover conhecimento técnico e profissional para pessoas da área de desenvolvimento.
Eles possuem uma plataforma que segue uma trilha de estudos e exercícios que passa por todas áreas, do básico da lógica e algoritmos, ao básico do front-end, básico de back-end, intermediário e avançado.
Como se trata de uma comunidade internacional e mundial (tem gente de todo canto do globo), tudo é inglês.
Se você ainda não sabe, eu sugiro que comece a estudar em paralelo aos estudos de programação, pois, na área de tecnologia, a linguagem universal é o Inglês!
Além dessa plataforma de treinamento deles, ainda tem os artigos no Medium, que contém conteúdo que vai desde o básico até o avançado.
FreeCodeCamp: Blog
Mencionei eles por causa de um post que gosto muito, que é o Developer Road Map.
Basicamente, uma galera muito experiente criou um mapa das coisas que nós, desenvolvedores, devemos aprender, ou seja, a trilha!
A roadmap to becoming a web developer in 2017
No artigo acima há 3 trilhas: Front-end, Back-end e DevOps. Além de ter uma lista de coisas que todo desenvolvedor precisa saber.
Então assim, tenta manter a seguinte lógica:
- O que eu quero aprender? Esse tal de Python parece legal;
- Procurar vídeo aula de Python no YouTube;
- Tentar escrever um programa;
- Ver o que você sentiu.
Infelizmente, a gente só descobre o que gosta tentando.
Supondo que você não gostou de Python, tenta Ruby, e vê o que acha da linguagem. Já pensou como são feitos os sites? Tenta ver umas aulas de HTML no YouTube, cria umas páginas próprias.
Enfim, aqui a dica é a mesma de leitura: Escolhe qualquer uma que parecer interessante. Não gostou? Troca! Até encontrar uma que você realmente goste.
Eu passei pelo C, C++, Java, C#, PHP, aí conheci JavaScript e decidi que era ali que queria me especializar. Mas apesar de gostar de JavaScript, eu ainda tenho bastante interesse em aprender Go, Kotlin, Closure e quem sabe futuramente, me aventurar no mundo DevOps, só pra ver qualé.
Por hora, a minha escolha no JavaScript foi excelente, pois, eu consigo desenvolver aplicações Back-end com o NodeJS e front-end usando HTML/CSS/JS puro ou algum framework que usa JavaScript como base (React ❤).
Escolha. Tente. Falhe. Tente de nove. Arrisque. Acerte!
⚠️ Atenção ⚠️
Recentemente as meninas do podcast PodProgramar fizerem um compilado das 10 linguagens para se aprender a programar em 2018. Nele, elas dão dicas de linguagens para programadores mais experientes e pra quem está começando. Sugiro fortemente que tire um momento do seu dia para ouvir!
Linguagens para aprender em 2018 - PodProgramar
O SEGREDO!
Agora que você já sabe mais ou menos como o que estudar, vou te dar a dica mais valiosa de todas. Vou revelar o segredo de conseguir se tornar um desenvolvedor melhor a cada dia que passa….
PREPARADO?
…
…
….
……..
PRÁTICA DELIBERADA!!!!
Nossa Raul… sério? tava esperando
É então… geralmente a gente sempre espera um caminho mais curto, um macete, um truque, mas não jeito comparanheirx, como diria aquele velho ditado clichê: "A prática leva a perfeição".
Mas pra melhorar um pouco essa dica, vou te contar como eu aprendi a praticar e a metodologia que eu uso até os dias de hoje.
Eu sempre gostei de automatizar TUDO, sério, TUDO. Se eu faço uma coisa duas vezes seguida, já fico pensando como eu posso ter menos trabalho fazendo isso.
Isso implica que qualquer problema que eu tenha, eu queira fazer alguma coisa pra melhorar.
Ta, me dá um exemplo aí então…
Então segura…
Ano passado eu comecei a assistir Mr. Robot (assista, sério, vale a pena). TODO episódio que eu baixava, eu tinha que ir atrás da legenda.
A cada novo episódio baixado, eu entrava no site do TV-Subs e ia lá procurar minhas legendas. Até que eu falei:
PERAI! Eu sou um fodendo desenvolvedor… eu consigo bolar um script para procurar essas legendas pra mim!!!11
Comecei a procurar então sobre duas coisas:
- Como fazer web scraping usando Node, já que minha main language é JavaScript;
- Como fazer um programa de linha de comando (CLI);
Olhei a estrutura do site em questão, descobri quais os serviços que ele consulta (segurança pra que rs) e vualá:
Sub-tv repositório
Eis que nasce o meu filho!
Esses dias eu recebi uma issue falando que ele tinha parado de funcionar. Peguei pra olhar o código que eu mesmo escrevi há meses atrás e pensei:
Não é possível que eu escrevi isso… eu sou muito burro…
No fim, descobri que o site havia mudado a URL do serviço. Fiz as alterações e ela voltou a funcionar.
Mas a questão é, olhar meu código de alguns meses atrás me fez ver o quão importante é programar todos os dias (ou quase todos os dias), sempre fazendo coisas, refatorando seu código, melhorando a si mesmo.
Ahhh Raul… mas eu não sei muita coisa, pra esse projeto você usou vários conceitos…
Beleza… vou te dar outro exemplo, e esse é tão simples que eu até esqueci de publicar no meu Github.
Na empresa onde eu trabalho eu tenho horário bem flexível. Então eu posso chegar "a hora que eu quiser". As vezes chego 8 e pouco, as vezes 9 e pouco, as vezes 10. O que manda é que eu tenho cumprir 8 horas de trabalho no dia. Fora isso, eu tenho meu almoço que pode ser de 0 a 30 minutos na média.
Então toda vez eu tinha que fazer uma continha:
Horário de entrada: XAlmoço: YCarga horária: 8X + (8 + Y) = Horário que eu tenho que sair
Matemática básica (com tempos, né).
Já cansei de usar o MomentJS pra trabalhar com hora, então pensei: Por que eu não escrevo um pacote node só pra falar a hora que eu entrei, fazer uns cálculos e pegar a hora que eu tenho que sair?
Work Time CLI helper
E apesar de não ter README, não estar no Github, eu pratiquei, eu resolvi um problema que eu tinha:
Então, se eu pudesse te dar um conselho, um só, eu diria, pratique… pratique muito… resolva todos os seus problemas (possíveis de serem resolvidos, claro) com programação.
Não interessa se seu código é feio, ou se ele poderia ser melhor, apenas faça!
Github, ó, meu querido Github
Ainda na onda de prática deliberada, você PRECISA mostrar pro mundo suas coisas.
Eu sei, da vergonha as vezes… você sabe que fez o seu melhor e que parece que não é o bastante, mas é preciso o mínimo de exposição.
A proposta do Github, além de ser uma plataforma de versionamento de código, é ser uma rede social. Você consegue seguir pessoas, ver o que elas estão codando, ver como elas organizam seus projetos, como funciona um projeto grande, pois hoje, projetos gigantescos como o React, BabelJS, Visual Studio Code, Vue, DotNet,
TypeScript, Go Lang, dentre muitos outros estão com o código seu aberto, pra você se sentir a vontade de olhar, baixar, ver como funciona.
Mostre seu código pro mundo. Ele pode ser ser útil, nem que seja pra alguém ver como é sua lógica, como é sua escrita de código, sua organização.
Como ele é público, procure não fazer de qualquer jeito. Coloque apresentações legais, tente documentar o máximo seus projetos, dê nomes legais pros projetos, tenha consistência. Pode ser que alguém procure seu nome no google e caia justamente no seu perfil do Github.
Ainda não se convenceu da importância disso? Vou te contar uma história (adiantando dos Atos futuros).
Meu primeiro emprego de Freela veio depois de vários projetos expostos nas comunidades do Facebook e depois de 2 anos, onde eu só fiquei codando por diversão.
Quando eu fiz a entrevista pra trabalhar na Holanda, a primeira coisa que o Recrutador fez na minha frente foi abrir meu Github e olhar os meus projetos pinados.
Ele me fez uma série de perguntas sobre alguns, me pediu pra explicar como implementei outros, já aproveitou pra fazer questões sobre codificar em JavaScript usando ES6+ e dar compatibilidade com browsers antigos.
Enfim, mais importante que meu site, sem dúvida nenhuma foi tudo o que eu tinha feito de código e deixado aberto pra quem quiser ver!
Não caia na besteira de esconder suas criações, a menos que seja comercial e tenha contratos e etc.! Você não vai se arrepender! =)
Comunidade
Outro ponto que me ajudou muito a evoluir foi interagir com vocês (a comunidade).
Em 2016 eu conheci por um acaso um dos programas do Training Center (CT) mais maravilhosos de todos, o MENTORIA.
Infelizmente ele está congelado por hora, mas basicamente é um programa da comunidade de desenvolvimento que tentava unir pessoas com mais conhecido para ser mentoras de pessoas que estavam começando agora ou que queriam aprender coisas específicas.
Conheci pessoas maravilhosas (Valeu Wésley Queiroz) que puderam me ajudar, esclarecer dúvidas, enfim, dar pelo menos uma direção no caminho.
Além do mais, o CT possui um canal do Slack muito movimentado, que o pessoal vive compartilhando artigos, trocando ideias de soluções para problemas, e isso pelo simples prazer de ajudar.
Faça parte de comunidades, é extremamente importante. Você consegue sim ser um desenvolvedor lobo solitário, mas a gente sabe que às vezes o caminho é muito mais fácil de ser trilhado quando temos ajuda de pessoas que estão dispostas ajudar.
Mas quero deixar claro, participe de maneira saudável. Não seja mais um cara tóxico no meio dos que já tem. Uma boa comunidade é uma comunidade unida, onde as pessoas se ajudam e não humilham as outras.
Eu entendo que às vezes alguém faz uma pergunta que com uma Googlada ela poderia ter a resposta, mas vamos pensar comigo: O que você vai ganhar indo lá e ridicularizar ela? Satisfação? Sério que você se satisfaz com isso? Se você não tem nada a acrescentar, finja que nem viu e vai pro próximo post da timeline! =D
"Não seja um(a) babaca na comunidade" - Willian Oliveira
Dicas de Conteúdo
Por fim, quero deixar aqui uma lista de conteúdo que eu vim descobrindo todos esses anos e que acho sensacionais. Alguns são pagos, outros são grátis, mas em todos, eu tirei e tiro boas experiências.
Mas antes de entrar na lista dos conteúdos, queria fazer uma recomendação master:
Alura
Se tem uma plataforma que eu utilizei e utilizo há quase 3 anos e não me arrependo de ter assinado, foi a Alura.
Caso você seja uma pessoa que aprende com vídeo aulas, recomendo DEMAIS por algumas razões:
- Padrão de qualidade: Como todos os professores são funcionários da Caelum, existe um padrão de curso a ser seguido. Apesar de nem todos os professores serem sensacionais, é notável ver que eles seguem um “Styleguide”;
- Carreiras: O Alura já disponibiliza um plano de carreiras, como por exemplo Carreira UX, Front-end, Back-end Java, DevOps, DevMobile, etc.
- Custo Benefício: O preço apesar de parecer salgado para alguns orçamos, é bem razoável. Por 75 pilas por mês você tem acesso a 400 cursos e toda semana eles lançam mais dois ou três novos.
A não ser que você REALMENTE não tenha esse dinheiro pra investir, pense que isso é investimento na sua carreira. Se tu ganha 1000 hoje, se qualificando mais, poderá ganhar 3, 4, 5 vezes mais. DICA: Ainda tem o cupom de desconto do NerdCast que você pode acessar aqui e ganhar 10% de desconto no curso! =p
Feita as devidas considerações, vamos a lista:
Livros
Bom, comentei que não era o cara dos livros, então não tenho muitos pra indicar:
- Atomic Design (Pago) — Brand Frost (inglês)
- You Don't know JavaScript (Grátis pra ler online, pago pra impresso e ebook) — Kyle Simpson (Inglês) — Versão em PT
- Clean Code (pago) — Robert C. Martin
- Cangaceiro JavaScript (pago) — Flávio Almeida
- CSS3 (pago) — Maurício Samy Silva (Maujor)
Lugares para procurar livros técnicos em Português:
Cursos
- Curso Completo de JavaScript Moderno — ES6 (Pago) — Willian Justen
- JS com TDD na Prática (Pago) — Willian Justen
- Aprendendo SVG Do Início ao Avançado (Pago) — Willian Justen
- Git e Github na Vida Real (Pago) — Willian Justen
- Git e Github para iniciantes (Grátis) — Willian Justen
- Criando sites estáticos com Jekyll (Grátis) — Willian Justen
- Curso React.js Ninja — React Completo (Pago) — Fernando Daciuk
- Curso Completo do Desenvolvedor Web (Pago) — Hcode
- Angular 4 (e Angular 2) (Grátis) — Loiane Groner
- Curso de Python 3 (Grátis) — Curso em Video (Gustavo Guanabara)
- Curso de HTML5 completo (Grátis) — Curso em Video (Gustavo Guanabara)
- Curso de PHP para Iniciantes (Grátis) — Curso em Video (Gustavo Guanabara)
- CSS Grid Layout (Grátis) — Wesbos (inglês)
- JavaScript30 (Grátis) — Wesbos (inglês)
- What The Flexbox?! (Grátis) — Wesbos (inglês)
- COMMAND LINE POWER USER (Grátis) — Wesbos (inglês)
- Learn Redux (Grátis) — Wesbos (inglês)
- Mastering Markdown (Grátis) — Wesbos (inglês)
- Complete JavaScript course (Grátis) — Beau Carnes (inglês)
- 370 Cursos online de Programação (Grátis) — Vários (inglês)
Canais no YouTube
Obs.: Alguns canais estão abandonados, mas os videos continuam recentes e de graça. Vale dar uma conferida pra ver se ter algo do seu interesse.
- Freecode Camp
- BrazilJS
- The Code Train (inglês)
- Fun Fun Function (inglês)
- Cod3r Cursos Online
- Código Fonte TV (CDF)
- Pagar.me
- Canal da Loiane Groner
- LearCode.Academy (inglês)
- CSS Castshow
- RBTech
- Canal do Filipe Deschamps
- Node Studio Treinamentos
- Curso em Video
- NodeBR
- Hostnet Internet
- Canal do Rodrigo Branas
- Canal do André Baltieri
- Academind (inglês)
Podcasts
- PodProgramar
- Hipsters ponto Tech
- Lambda3
- Syntax (inglês)
- DevNaEstrada
- Freecode Camp Podcast (inglês)
- Elemencast
Sites/Feeds
- Medium: Training Center
- Medium: FreecodeCamp (inglês)
- Hackernoon (inglês)
- BrazilJS
- Best Of JavaScript (inglês)
- iMasters
- Blog da Alura
- DailyJS (inglês)
O Twitter sem dúvidas pra mim é melhor rede social dos tempos modernos. A melhor porque você consegue personalizar exatamente o que você quer ver na sua timeline. Como meu facebook já virou uma grande bagunça, decidi que usaria o Twitter para seguir as pessoas de tecnologia e pegar pequenas dicas diariamente.
Obviamente eu sigo pessoas que não tem relação nenhuma com a área (tipo o Cid do Não Salvo), mas se rolar minha timeline, vai ver que a maioria são tweets de pessoas técnicas, compartilhando coisas do meu interesse.
Nessa sessão, não citarei pessoas, apenas algumas páginas. Caso você queira saber quem seguir, sugiro olhar os autores dos textos que você lê, procurar pessoas da comunidade, ir vendo as recomendações e seguir quem você admira.
Algumas páginas sensacionais:
- Training Center
- NodeBR
- BrasilJS
- ReactJS News (inglês)
- The Pratical Dev (inglês)
- JavaScript Daily (inglês)
- ProductHunt (Inglês)
Conclusão
Para concluir, gostaria de deixar só um último recado.
Apesar de polêmico e enquanto vivo, ter tido atitudes bem questionáveis, o senhor Steve Jobs disse uma frase que é bem conhecida e que cabe muito bem aqui:
"Stay hungry. Stay foolish." — Jobs, Steve
Que na tradução literal é algo como:
Continue faminto. Continue tolo..
Essa frase foi dita em uma de suas palestras em Stanford. Apesar de parecer estranha, é possível interpretar da seguinte forma:
Continue sempre faminto no quesito conhecimento. Nunca pare de buscar, de ir atrás, não se sinta satisfeito e pare a sua busca por ser melhor a cada dia. Mas ao mesmo tempo, se mantenha consciente da sua ignorância. Não se sinta o melhor de todos e nem acredite que você sabe tudo, porque isso simplesmente limita a possibilidade de estar aberto para novos conhecimentos.
Fiquem na paz e boa sorte!