/Guia-do-Leo-para-iniciantes

Guia para iniciantes no desenvolvimento de software que visa orientar o que estudar, qual ordem e onde, baseado nos objetivos do estudante.

Palavras Iniciais

  • Você pode e consegue aprender programação.
  • Desenvolvedores são os profissionais que mais se ajudam que você vai ver nesse planeta (só perde para taxistas, motoboys e policiais :D ).
  • Idade não é um problema. Sério. Não é mesmo. Dá pra começar aos 50.
  • É necessário esforço, mas tem uma recompensa pessoal relativamente rápida.
  • Existem diversas áreas de atuação, você vai gostar de alguma delas.
  • Você não vai aprender a hackear Facebook ou Instagram de ninguém.
  • Você não será obrigado a usar Linux.
  • O mercado está aquecido - mesmo com os Layoffs. Só o primeiro emprego na área que é difícil.
  • Para entender recursividade é necessário antes entender recursividade (você vai ver essa piada em algum momento - e entender também - eu só queria ser o primeiro a contar :D ).
  • Programação é útil pra vida.
  • Tenha planos, metas e objetivos.
  • Direção é mais importante do que velocidade.
  • Saber se comunicar é importante.

Para não cair em ciladas

  • Fuja da DIO (Digital Innovation One), os cursos são ruins e não acredite na promessa de que vai conseguir emprego no final.
  • Não compre nenhum bootcamp que está em promoção por 2 dias e custa mil Reais na empolgação ou por achar que é uma oportunidade única. Não são.
  • Existem outros locais para se aprender fora a Alura
  • Há cursos excelentes e péssimos na Udemy. Avalie bem antes de comprar o primeiro que aparecer na frente.
  • Tem canais no Youtube que ensinam bem!
  • Universidades em que você cursa primeiro e paga depois de empregado são válidas e ensinam bem, mas muito caras.
  • Coloque tudo que for aprendendo no GitHub!
  • Pesquise sua dúvida na internet. Ela provavelmente já foi respondida.
  • Aprenda a pesquisar na internet.
  • Crie seu LinkedIn

Sobre o guia

Eu participo de muitas comunidades de software, e o que mais vejo são novatos perguntando por dicas, que caminho começar.
Também vejo muito as mesmas dicas sendo constantemente repetidas pelas pessoas e por mim. Então entendi que seria útil um guia para sanar várias dúvidas e dar um ótimo início, que teria mudado minha vida, ou pelo menos teria me feito economizar uns 3 meses de estudo e procura de material / orientação.

Estou construindo este guia de forma colaborativa. Por favor, enviem sugestões de melhora!

Tenho o objetivo de que este guia sirva como um complemento ou alternativa para ajudar a saber por onde se pode começar. Ele vai ser útil para empregabilidade, mas o conhecimento teórico e o apoio da instituição são muito importantes para sua formação profissional a longo prazo, além de permitir estagiar.

O conhecimento acadêmico não será suficiente, não importa qual seja a faculdade que esteja fazendo. E também dá pra conseguir emprego mesmo sem o nível superior - mas no futuro essa graduação fará diferença!

Aproveito aqui para deixar um projeto maravilhoso chamado Universidade Livre, que mostra o roteiro do que, onde e como aprender o conteúdo de uma graduação em Ciência da Computação.

Lembro aqui que são sugestões pessoais. É o que eu recomendo para meus melhores amigos.

Início

Algumas coisas são essenciais e comuns a todas as áreas de desenvolvimento de software. André Noel fez uma série de vídeos curtos muito boa para ambientar. Recomendo começar por ela e sigo com os passos fundamentais para os iniciantes:

Caso você não saiba inglês a nível intermediário

Se você não consegue ver vídeos em inglês sem legenda ou não consegue ler textos longos em inglês. Nível B1

Tudo no mundo da programação é em inglês. Você não precisa se desesperar agora, mas é importante dar o maior foco possível à esse estudo.

  • Não vou indicar cursos aqui, mas recomendo fortemente o Duolingo. Gratuito, ele é muito básico e é um ótimo início. Você estuda no seu tempo, não tem ninguém pra ver sua timidez, e a progressão é razoavelmente rápida.

  • Outro site interessante é o New in levels. Ele traz notícias em inglês de acordo com o seu nível de entendimento para praticar. Recomendaria tentar ler ao menos uma notícia por dia.

  • O LyricsTraining vale uma atenção também. Nele você treina inglês completando trechos de músicas que você escolher.

  • Mais um app que pode ser interessante é o Words Coach Vocabulary onde você tem palavras novas todos os dias para aprender e um quiz bem legal onde você vai marcando pontos

  • Existem alternativas promissoras, como: Cake, Elsa Speak, English class 101, e o Fluencytv. Mas esses eu não experimentei o suficiente para ter uma opinião formada.

  • E aqui, um plano de estudos diário de inglês que estou seguindo no momento.

Passo 0

Programadores contam a partir do 0. Espero que você entenda isso rápido!

Faça esses passos, como puder, em paralelo (um ou dois desses por dia), e só avance para os outros passos depois de terminar!

O livro é barato e é a única coisa paga que eu acho importante do guia inteiro. Se não tiver ainda assim, procura o autor William Oliveira que ocasionalmente ele tem cupom de desconto.

É um livro que vai falar de tudo da programação, sem usar nenhuma linha de código. Vai dizer as áreas de atuação que existem e como escolhê-las, técnicas de estudo, como procurar empregos, comunidades e muito mais. É um dos melhores livros que já li e ele literalmente mudou minha vida.

Faça um curso de Harvard gratuito e online

Esse é um curso difícil, com ótima base teórica. É realmente a minha recomendação. Mas é mais importante que você não se frustre! Se sentir que está mais difícil no momento, há outras alternativas de aprendizado logo a seguir!

Sim, você pode, consegue, merece e vai fazer. É um excelente curso base para qualquer área. Tem a versão em inglês (recomendada) e em português (localizada).

Você pode pagar pelo certificado e colocar no currículo um diploma de Harvard de verdade, reconhecido internacionalmente. Se tiver condições, pague. Será muito útil no futuro. Se não tiver, sem problemas. Seu esforço será mais válido que o certificado.

Mas não existe meritocracia, ok? Vê esse meu outro artigo aqui que pode te inspirar.

Se o curso de Harvard estiver sendo difícil demais

Gustavo Guanabara vai te dar um abraço e te acolher gentilmente ensinando com toda a paciência que você precisa.
Recomendo começar por esse curso..

Você precisará aprender outras coisas com o passar do tempo, mas pode ser um início que não te faça desistir por pensar que é difícil demais.

Aprenda a perguntar

Leia e entenda esse texto, com versões em inglês ou português ele é extenso, mas valiosíssimo. Vai te ajudar a conseguir respostas para suas dúvidas. Leia o que puder, como puder, mas não deixe de ler.

Nessa vida autodidata, é importante saber formular bem a dúvida para conseguir uma resposta rápida. Isso pode trazer atenção para você e foi assim que eu consegui meu primeiro emprego. Eu fui recrutado simplesmente porque um cara gostou do meu comportamento numa comunidade (falarei mais à frente sobre comunidades).

Comunidades para te acolher e você saber que não está só

Passo 1

Você agora deve decidir entre qual caminho seguir. Farei guias com o que eu souber e conseguir de conteúdo comum e específico. Se você não leu o livro que recomendei, leia.
É uma decisão importante, mas mudável. Pesquise sobre, ouça profissionais. Me pergunte algo, procure sugestões nas comunidades. Vou deixar aqui as mais comuns áreas de atuação com um super resumo explicativo para que você pesquise em outros lugares para mais informações:

Eu uso o roadmap.sh como refêrencia sobre o que devo aprender e qual meu nível atual. Tem conteúdo para todas essas áreas e mais ainda!

  • Front-end

    Trabalha fazendo a parte visual de programas, sites e apps. É responsável por implementar o que o time de design decidiu.
    Não precisa saber desenhar, e é muito procurado por ter um retorno visual imediato.


  • Back-end

    É quem faz a lógica "por baixo dos panos". Algoritmos, estruturas de dados, conexões com bancos de dados.
    Quem detesta se preocupar com aparência costuma vir para essa área.


  • Infraestrutura (DevOps)

    Trabalha como apoio aos desenvolvedores, configurando o ambiente de desenvolvimento, testes e produção.
    Faz automações de tarefas e é reponsável por deixar os sistemas / programas em funcionamento.Também é ligado à infraestrutura de TI.


  • Full-Stack

    Faz a parte de front-end e back-end. Não é exatamente melhor que outros por fazer mais coisas, pois obviamente, se especializou menos.
    Há uma má fama de ser uma pessoa contratada para fazer mais por menos. Eu não recomendo para ninguém começar com esse caminho.


  • Mobile Android / iOS

    Conhece as particularidades do desenvolvimento de software para essas plataformas, suas interações com o sistema operacional.
    O desenvolvedor normalmente conhece apenas um sistema, mas há os que sabem ambos.


  • Desenvolvimento de jogos

    Autoexplicativo. Não confundir o desenvolvedor com o tester ou o game designer!
    Não vá pensando que você vai jogar videogame o tempo inteiro, você não vai.


  • Área de Big Data

    Trabalhará com mineração de dados, utilizando ou não inteligência artificial para extrair dados úteis para a tomada de decisão, baseada em grandes volumes de dados.


  • Eu só quero um emprego rápido, vou me esforçar pra caramba e aprendo o que precisar sem questionar:

    Vou adicionar aqui uma trilha focada numa empregabilidade rápida. Recomendo apenas para os que tem determinação, resiliência, versatilidade e uma urgência real. Esse caminho não é melhor que os outros, talvez até pior, dependendo do que você queira fazer.

    1. Faça esse curso e pare quando chegar no Responsive Web Design Projects.

  • Tenho tempo e quero um curso superior sem ir pra faculdade, sabendo que será um foco acadêmico e não profissional

    A trilha aqui será acadêmica. Literalmente você poderá fazer um curso superior a nível internacional de casa. É o caminho mais demorado e menos focado em empregabilidade. Porém te fará um profissional melhor. Recomendo para quem está começando muito cedo (antes dos 18 anos), tem muito tempo livre ou já trabalha na área e quer se qualificar.

Sua evolução

Se chegou até seguindo todos os passos, você já sabe:

  • Ler alguma solução curta para suas dúvidas em inglês;
  • Como fazer uma pergunta que trará respostas (fora a quantidade de vezes que só de escrever a pergunta, a resposta aparece na cabeça);
  • Lógica de programação;
  • Algoritmos básicos;
  • Mínimo sobre memória;
  • Programação Imperativa;
  • O essencial da linguagem C;
  • Estruturas de dados;
  • O essencial da linguagem Python;
  • O essencial de SQL;
  • Desenvolver sua técnica de estudo;
  • Como pesquisar vagas;
  • Que área seguir inicialmente;
  • Como se envolver com comunidades, que livros ler;
  • Como é o universo da programação;
  • Um pouco mais de coisas.

Próximos passos

Para cada área citada anteriormente, será adicionada ao menos uma opção de trilha a seguir. Uma trilha é o que deve ser aprendido e qual ordem, mas não dirá onde você deve aprender.

Vou colocar sugestões de cursos, livros, podcasts, sites, canais do YouTube, pessoas para seguir, etc. Tudo que ache relevante para cada área ou áreas em comum.

Aqui não vai ter nada pirata, nem recomendo que você o faça. Colocarei a maior parte do conteúdo gratuito, mesmo que limitado. Mas não deixarei de sugerir algo pago se for bom.

Uma prévia do que virá para melhorar a visão (e eu mesmo não esquecer :D ):

  1. Trilhas
  2. IDEs
  3. Recomendações de conteúdo em geral
  4. Mais conhecimentos importantes e obrigatórios recomendados para todos
  5. Cursos e materiais de estudo específicos para cada trilha
  6. Livros fundamentais da área (e fora dela também)
  7. Pessoas e blogs para seguir