Conselhos para Iniciantes

Alguns conselhos que possam ajudar pessoas que estão trilhando os primeiros passos na área de tecnologia e desenvolvimento de software.

📑

Introdução

Olá, como vai? Espero que esteja bem!

Hoje quero falar sobre um assunto bem comum nas rodas de conversas, threads de redes sociais, entre outros lugares. E o assunto é: conselhos para iniciantes no mundo da tecnologia.

Várias pessoas têm inúmeros conselhos, alguns falam para comprar cursos, outros para você entrar numa faculdade, alguns dizem para “aprender a base”, e outros são mais ineficazes e dizem para você ir estudar, mas não ajudam com absolutamente nada, nem te dão alguma direção. Não que seja obrigação, mas é o tipo de comentário inútil e desnecessário, não custa nada passar informação adiante.

Uma notícia nada animadora para te dizer, é que não existe formula mágica para você aprender algo em tempo recorde, isso vária de pessoa para pessoa, cada um tem um tempo diferente, e absorve conteúdo de maneira diferente, e também entram fatores como experiência, curiosidade, vontade de aprender, etc.

Mas tenho algumas coisas para lhe dizer, que talvez ajudem a tornar esse caminho menos árduo (o resto depende de você).

Não pule etapas

Um dos primeiros conselhos que posso te dar, é **Nao Pule Etapas**, muitas pessoas ficam tentadas a pular alguns tópicos de estudo “achando” que aquilo não vai fazer falta. “Ah! Não vou estudar Estruturas de Dados, eu quero ser frontend, isso não serve para nada!” ou algum outro pensamento “Para que estudar JavaScript se posso ir direto para o React! Tem vários cursos ótimos”.

Esses são alguns dos pensamentos (bem desconexos e errados), mas existem inúmeros outros motivos para uma pessoa tentar pular etapas.

Trazendo a analogia para a realidade: você está subindo uma escada longa, e resolve ir subindo a cada 2 degraus por vez, igual realizamos quando somos crianças, ao acreditar que será mais fácil e rápido. O que você ganha com isso? Talvez uns 30 segundos a mais de tempo? Ou 1 minuto? Legal, ganhou algum tempo a mais, porém, você acaba ficando mais cansado, por demandar mais da sua perna para se flexionar e empurrar o peso do corpo para cima.

E é isso que acontece nos estudos, você ganha um pouco de tempo, mas acaba se esforçando mais, ao precisar aprender algo mais complexo em menos tempo, sem ter base para aquele conhecimento, o que exige mais do seu cérebro.

Como evitar que isso aconteça?

É difícil dizer, cada pessoa tem uma forma de aprendizado diferente, uns são mais rápidos, outros mais lentos, uns preferem vídeos, outros preferem áudio, outros preferem texto, e por aí vai.

Mas o que no geral ajuda, é você descobrir como aprende e traçar um cronograma de estudos, com algumas metas, a fim de evitar que etapas sejam ignoradas/puladas.

E ser disciplinado para segui-las, mesmo que a vontade seja pular tudo e ir para parte “mais legal”.

Pense em algo como: *Preciso estudar Lógica de Programação, e Algoritmos, depois Aplico esses conhecimentos em alguma linguagem de baixo nível como C ou C++, logo em seguida quero aprender Estruturas de Dados, e por fim, crio um aplicativo de console para calcular dados em uma matriz.*

Você pode encontrar algo que seja útil para você, ou algum problema comum em computação, pode pesquisar ideias em algum site, ou tentar copiar algum programa simples que você conhece.

Mas crie um passo a passo que respeite os tópicos de aprendizado. Você pode dizer “Para você é fácil, você já passou por isso e agora sabe o que vem depois de cada coisa!”. Isso é verdade, mas adiante, darei algumas dicas de como aprendi e entendi a cronologia das coisas (a minha maneira).

Mas seguindo o primeiro exemplo alguns parágrafos atrás, você pode criar um cronograma como o apresentado abaixo:

tabela-tarefas.png

Acima temos um exemplo muito simples de cronograma, você pode criar seu próprio modelo, pode usar o Trello, um quadro e caneta, uma agenda, tanto faz. O importante é você traçar suas metas, colocá-las no papel.

Não esqueça de colocar e atualizar a situação das tarefas, para saber o que já foi feito e o que está esperando.

Algo que talvez te ajude aqui, é um quadro [Kanban](https://www.napratica.org.br/metodo-kanban/), pesquise mais sobre, é uma ótima ferramenta, e vai ser sua aliada no dia-a-dia trabalhando com projetos de TI.

Aprenda de fato o que fazer

Como eu disse, ia dar algumas dicas e comentar sobre como eu fui entendendo o que estudar.

Acho que uma das primeiras coisas que foram me acontecendo, foi ir se afastando das bases e indo pro alto nível, acredito que isso é o que acaba acontecendo quando você consegue um trabalho com programação logo no início dos estudos. É de certa forma forçado a aprender as tecnologias que estão sendo utilizadas nos projetos e se afasta do que é importante.

Mas aí que entra a importância de estudar por conta própria e ser disciplinado. Estudar o alto nível das tecnologias (frameworks, bibliotecas, linguagens e plataformas/sdks) parece atrativo demais, mas cuidado, você pode tomar uma rasteira no futuro.

Sem enrolação, vamos lá.

  • Calendários/Grades Curriculares das Faculdades

    • Você pode pensar que um dos grandes problemas que temos nas faculdades atualmente é o ensino defasado e atrasado, ainda apresentam tecnologias antigas. Mas isso é ponto de vista, olhando para o mercado, a faculdade está defasada. Porém, isso acontece porque a grade precisa ser estável e ensinar algo sólido, por isso vemos coisas antigas ainda em foco nas faculdades/universidades.
    • Dito isso, seguir uma grade pode ser interessante e te dar um rumo por tratar de tópicos-chave de computação. Procure no site da faculdade, a grade do curso de *Analise e Desenvolvimento de Sistemas*, *Ciências da Computação*, *Ciência de Dados*, *Engenharia da Computação*, e qualquer outro curso de TI que pareça interessante. Anote as matérias, e depois procure estudar os tópicos.
    • Lá você vai encontrar tópicos como *Lógica de Programação*, *Algoritmos*, *Matemática Discreta* ou *Álgebra Booleana*, *Arquitetura e Organização de Computadores*, *Sistemas Operacionais*, *Estrutura de Dados*, etc, e use as dicas que darei mais adiante para saber como extrair o que estudar dos tópicos.
  • Livros de Tecnologia

    • Temos muitos livros bons publicados, procure livros recomendados em comunidades, universidades, fóruns e tente seguir o que esta sendo recomendado. Caso não encontre, pergunte a algum amigo que esteja estudando, se ele pode pedir indicação para algum professor que ele admire e confie.
    • Outro fato interessante encontrado nos livros, é que o autor costuma indicar os requisitos para a leitura do livro, por exemplo, um livro de Sistemas Operacionais, pode indicar que um requisito para a leitura é o entendimento de Assembly ou de Hardware para que a compreensão do livro seja mais efetiva. Assim você saberá se precisa aprender algo antes de partir para este livro.
  • Repositórios no GitHub ou outro provedor

    • Temos vários repositórios com conteúdo "mastigado", para estudo, um exemplo é o [33 conceitos de JavaScript que todo desenvolvedor deveria saber](https://github.com/leonardomso/33-js-concepts) que lista vários conceitos importantes para desenvolvedores JS.
    • Mas existem outros repositórios do gênero que dão passo-a-passo para estudos ou carreira. Dê uma procurada que irá encontrar.
  • Sites sobre Carreira

    • Aqui, tome bastante cuidado! Primeiro, lembre que estamos falando sobre estudo e não sobre carreira (por mais que esteja relacionado, vamos manter o foco).
    • O mais importante aqui é anotar os tópicos, o que precisa ser aprendido, e podemos extrair isso dos guias de carreira.
    • Quando um guia diz, por exemplo, que para ser um Engenheiro de Sistemas Sênior você precisa dominar o tópico X, Y e Z, você pode pegar esses tópicos isoladamente e dar um "zoom" em cada um para entender melhor o que é necessário. Todo sênior veio de baixo, aprendendo os conceitos e tópicos necessários, e todos os tópicos mais avançados como, sei lá, Cloud, ou Arquitetura, ou qualquer outro que você possa imaginar, tem requisitos fundacionais que são mais básicos, e você aproveitar para ir mais afundo e extrair o que pode ser estudado disso.
    • Para ser mais claro no exemplo acima, se num guia de carreira diz que você precisa entender sobre Balanceamento de Carga e Escalabilidade, podemos ir mais afundo nesse tópico (mas aqui de maneira simplista) e saber que isso envolve conhecimentos com o Protocolo TCP e Portas, e pronto, tempos um tópico interessante para estudar.
    • E isso pode ser feito com vários tópicos. Extraia os conteúdos do tópico mais alto nível fazendo uma busca por ele e anotando o que é preciso para chegar até ali.
    • Exemplo de site com guia de carreira: https://roadmap.sh

Aqui nesse tópico "Aprenda de fato o que fazer" eu gostaria que você entendesse como você pode ser efetivo estudando, como que você aprende, e como que você pode sair da caixa e usar o conhecimento disponível nos arredores da web para complementar seu aprendizado.

Se você quer entrar na área de tecnologia, acredito que você seja uma pessoa curiosa e com sede de conhecimento, talvez um nerd? Ou somente alguém a sua própria maneira. Mas saiba que o aprendizado, o estudo fará parte da sua vida até você decidir mudar de área.

Isso não é nada exclusivo da área de TI, mas se quiser algo fácil onde não precise estudar muito, essa área não é para você.

Use documentações

Talvez a melhor forma de estudar? Não sei, mas é uma das minhas preferidas.

Pergunte para algum sênior como ele estuda, provavelmente na maior parte do tempo ele não assiste vídeos com tutoriais nem fica pegando artigos prontos para coisas corriqueiras.

Talvez você pense: "Você está me comparando com um sênior?".

Não, e nem quero! O foco aqui é sobre hábitos. Porque não começar um bom hábito desde o início? Seu eu do futuro vai te agradecer.

Ler e estudar com documentações é um desses bons hábitos. Quando lemos a documentação da tecnologia, estamos indo direto na fonte consumir aquilo que o criador da tecnologia nos deixou como ajuda/guia.

Nós temos o hábito de usar qualquer outra fonte de dados, porque é mais fácil, queremos algo pronto e rápido, e isso faz com que a gente não aprenda nada. Quando você pega um Stackoverflow ou uma resposta pronta de fórum e aplica no seu código, às vezes você nem sabe o que aquilo faz.

É igual colar em uma prova, você colou porque não sabia, mas entregou algo feito (por outra pessoa), se o professor pedir para você explicar o trecho que você colou, você não vai saber. Mas se você estudou aquilo, certamente saberá responder, porque você foi na fonte e teve que aprender para poder usar.

Vou te dar um exemplo, bem comum, e que acontecia comigo o tempo todo. Eu sou especializado em Frontend, e uma das ferramentas que mais usamos é o [Axios](https://axios-http.com/docs/intro), um cliente HTTP baseado em `Promises` para JavaScript, ele permite que a gente faça requisições de dados para um servidor.

No início quando comecei a usar essa biblioteca, eu sempre jogava no google, e depois abria um StackOverflow com uma resposta atrativa, e tudo funcionava. Porém, conforme foi passando o tempo, eu comecei a ficar incomodado, por não saber como ela funcionava mais a fundo, ou como era que eu poderia resolver problemas ou fazer uma implementação com o meu "estilo" de desenvolvimento?

Então, fui forçado a ir até o site oficial, e debruçar sobre a documentação, e assim comecei a aprender mais sobre essa tecnologia, que eu acho incrível e uso diariamente nos projetos que trabalho.

Por exemplo, outro ponto em que a documentação ajuda muito, é quando trabalhamos com TypeScript e queremos saber a interface de um método ou classe, é só ir na doc oficial e consultar, normalmente sempre disponibilizam as tipagens (quando a lib suporta TS).

Pensa comigo, você comprou uma cafeteira moderna, ela tem vários comandos e botões, partes móveis (talvez um espumador de leite, sei lá), como você aprende usar? Vai sair fuçando? Mexendo e apertando tudo? Fazendo isso você pode quebrá-la, então acredito que como a maioria das pessoas, você vai pegar o manual e ler, ou no máximo ver um vídeo no YouTube de como usar a Cafeteira.

Mas o foco nem é o vídeo, mas sim o manual, que te ensina a fazer tudo, as empresas são obrigadas, ou por convenção, não sei, a mandar o manual, para que quem for comprar, possa usar o produto em sua totalidade evitando erros.

Na real, tudo vem com manual, mas temos o hábito (ruim) de não ler ou usar. Smartphones, TVs, computadores, e até carros, vem com manual, mas não lemos.

Mas se você é um desenvolvedor, não tenha esse péssimo hábito, leia os manuais das tecnologias que você utiliza, saiba usar com propriedade, tenha todo o conhecimento em mãos, e saiba sair de situações ruins (bugs, maus funcionamentos ou implementações erradas).

Tenha curiosidade e vontade de aprender

Eu falei brevemente sobre isso nos parágrafos acima. Seja curioso, queira aprender, reserve seu tempo para estudar.

Alguns trabalhos são mais simples de se aprender, você chega no local, registra sua entrada, seu chefe ou algum treinador vem e te passa o que precisa fazer, e você vai aos poucos aprendendo. Raramente precisa estudar algo novo, tudo que é necessário, é aprendido durante as 8 ou mais horas de trabalho no escritório. Quando você vai embora, é só descansar e se preparar para o novo dia.

Mas a área de TI, é como uma faculdade ou escola, você precisa estudar o tempo todo, durante o trabalho, nas horas vagas. Não vai ser assim para sempre, ou talvez sim? Não sei.

Acredito que no começo mais, que depois de alguns anos de experiência, mas o estudo vai te acompanhar, é uma área ampla, tem coisa nova o tempo todo, e as coisas antigas você raramente vai conseguir vencer (conseguindo estudar tudo que é necessário).

Mas mantenha o foco no que é importante, ser hipster é legal, mas nem toda tecnologia nova e legal que está em hype, deve ser aprendida, ou merece seu tempo.

Resumo

Falei bastante, o artigo ficou grande, mas aqui vai outra dica: não queira tudo mastigado, não acostume seu cérebro a receber tudo pronto, isso vai te deixar preguiçoso e sem vontade para estudar, vai sempre pegar o que for mais fácil e isso vai te tornar um profissional medíocre. Se for para fazer algo, faça bem feito e se dedique.

  • Não pule etapas

    • Se organize
    • Faça um cronograma de estudos
    • Seja dedicado
  • Aprenda o que fazer

    • Saiba pesquisar as coisas
    • Não se limite ao que os fóruns e artigos dizem
    • Respeite o que não sabe, e procure aprender
    • Pense fora da caixa: descubra como você aprende as coisas
    • Melhore o item acima, cada vez evoluindo e melhorando os processos
  • Use documentações

    • Crie bons hábitos desde o começo
    • Aprenda a aprender com documentos oficiais
  • Tenha curiosidade e vontade de aprender

    • Seja curioso para aprender sobre a área que você está entrando
    • Descubra como entender/decifrar as coisas a sua volta
    • Não desfoque indo atrás de tecnologias em alta, caso elas não agreguem nada para sua carreira.
  • Dica mais importante

    • Não queira tudo pronto e mastigado, isso é um péssimo hábito e pode ser ruim a longo prazo.
    • Copiar e colar é mais atrativo e mais prejudicial que aprender de verdade.
Nertec logo