[Carreira] Entrando no maravilhoso mundo de desenvolvimento de softwares
Cada vez mais e mais vejo pessoas de outras áreas de atuação querendo ou já fazendo sua migração para TI (coisa que super recomendo) e a grande parte dessas pessoas normalmente vão para desenvolvimento (ou todo universo de agilidade, mas não é nosso foco, agora) e essa é a galera que geralmente leva um susto porque tem um monte de coisa, aí começa as perguntas de: por onde começar, como fazer e por que o que fiz não funciona (a clássica). Então aqui vai uma luz (ou não) dessa trajetória (caso não entenda algo, Google - o que já é, inclusive, uma das skills mais importantes no mundo do desenvolvimento).
1 – Tenha seu objetivo em mente
Por que você quer começar nessa área? Quer fazer um aplicativo milionário? Quer criar um jogo de FPS que as pessoas se transformem em aviões no meio da partida? Desenvolver o segundo facebook? Ou até hackear o facebook da galera? Decida!
Boa, faz de conta que você quer fazer sites super maneiros porque você cresceu na época do Flash e tinha umas animações que Holy Moly (análise todos os caminhos). Com isso sua stack fica meio óbvia, já que HTML, CSS e JS são os pilares da web, mas vai que tu não curtiu porque CSS é hard pra caramba e você pensou “mano do céu, mas como que processa tudo que joguei na “nuvem”” e decide focar em back-end. Aí, sim, você tem todo um nicho para ser explorado.
Primeiro veja quais são as linguagens usadas para isso (pode ser qualquer uma né kkkkk, mas certeza que o google vai te indicar as famosas, mais fácil para arrumar um job), teste algumas e pegue a que você se sinta mais confortável com a sintaxe, principalmente, e bora aprender.
2 – Máquinas, computadores, internet e binário
Entenda como seu computador, celular, TV e até seu micro-ondas funcionam. Saiba qual é a mágica misteriosa que consegue converter toda a complexidade do mundo em apenas 0 e 1, saiba como a internet funciona e o que de fato ela é. Pode parecer perda de tempo, mas essas informações, mesmo de forma superficial, vão fazer uma diferença no seu desenvolvimento e em como pensar nas coisas de um jeito que você nem imaginava.
3 – Matemática e Lógica de programação
Tem a galera que vende que dá para ser dev sem matemática… Até dá…. Mas, matemática é algo mágico e um divisor de águas de quem é “bom” e quem só tá fazendo hora extra. MUITA coisa dá para ser resolvida simplesmente com um bom cálculo e muita daquela magia que você aprendeu no item 2 é pura matemática, então conhecer pelo menos o essencial (porcentagem, regra de três, etc) é mais que importante. Para você ter ideia, é triste ver a quantidade de pessoas que não sabe nem precedência de operadores (coisa que em desenvolvimento você mexe quase que todo dia).
É aí também que você vai saber como fazer aquela linguagem que você escolheu realmente fazer algo que preste. Então aqui vamos ao básico de loops, condicionais, etc. E já começar a ficar de olho em um framework (Google it) para o propósito que você deseja.
4- Estrutura de dados e algoritmos
Isso é uma coisa bem hard e outro grande divisor de águas entre devs. No Brasil, infelizmente é um conhecimento bem subestimado falando a real, e que lhe proporciona o famoso “pensar como programador”, te fazendo brilhar em imaginar soluções para os mais diversos problemas que aparecem. Porém, tem muuuita coisa que é “too much” para quem está começando, então foque em estruturas lineares e algumas árvores (vai googlando se não sabe o que é) e alguns algoritmos famosos para solução de problemas rotineiros. Você vai ver que esse universo é imenso e você vai carregá-lo para o resto da sua vida x)
5 – Internet
Lá no passo 2 você aprendeu o que é a internet e como ela funciona e provavelmente você já tá ligado que hoje TUDO se resume a ela, então agora chegou a hora de se aprofundar um pouco mais em como ela funciona, vendo protocolos, conexões e formatos.
6 – Se aprofunde na linguagem escolhida
Agora que você já “pensa como um programador” bora se aprofundar na linguagem que você escolheu, veja suas convenções, descubra seus métodos built-in, explore os paradigmas usados nela (ou o dela de fato, se for um paradigma específico) e comece a automatizar tarefas do dia-dia (haha brincadeira, mas já dá para ir criando coisas úteis).
7- Aprenda um framework
Tem a galera que fala pra aprender a fazer na mão antes de usar frameworks, eu acho isso nada a ver, principalmente para quem tá começando, enfim. Agora vou dar um exemplo mais focado no desenvolvimento Web, até porque é onde eu atuo, mas para TUDO existe um framework facilitando a vida, talvez não exatamente do jeito que eu descrever aqui, mas muito perto.
Escolha um framework opinativo, por que disso? Bem, você está começando, e em nenhum momento você viu boas práticas e o que aplicações do mundo real realmente precisam para funcionar. Um framework opinativo vai te forçar a seguir um guideline bem profissa, além disso, muito provavelmente é uma empresa ou milhares de devs que estabeleceram tais práticas dentro dele e com isso você automaticamente vai vendo como organizar seu código, serviços essenciais que uma aplicação precisa, etc.
É legal pegar frameworks “freestyles” (que não seja opinativo), onde você tem que manualmente criar as coisas para ele funcionar, é um ótimo jeito para aprender. O difícil é que geralmente (99.9%) você vai ser introduzido na ferramenta através de um curso que só vai fazer e pronto (legal você levantou um server, mais passo em branco todo o trampo de como aquilo funciona, manja?) fora a falta de boas práticas (já que ele vai permitir fazer da sua maneira). Por isso recomendo a utilização de frameworks un-opinionated para um futuro.
8 – Code, code bastante
Bem, com tudo isso você já está 100% capaz de construir ou desconstruir (hackerzão) coisas, agora é botar em prática criando os mais variados projetos aleatórios, resolvendo probleminhas de lógica e sempre estudando, mais e mais…
Você vai ver que deixei várias coisas fora desta lista como controle de versões, banco de dados, servidores, mensagerias e etc, mas com esses 8 passos, provavelmente você já vai estar empregado e no trabalho, você vai ser introduzido a ferramentas e serviços mais pesados (ou nos próprios cursos) que vai aumentar bastante sua pilha de estudos e lá você já pode ler as outras coisas que já escrevi relacionado a futuros e profissões. Como dica final, tenha foco, tem coisas que são beeem treta aí no meio e por isso diversifique sua fonte, a internet é vasta de vídeos, artigos, cursos e tutoriais para todos os assuntos veja um, dois ou quantos forem precisos para entender bem e tirar o melhor, que se aplica a sua realidade. Busque entender o motivo de cada ferramenta e decisão realizada, isso que te fará um profissional melhor. E se realmente estiver muuuuito difícil e aquele sentimento de “não é para mim” batendo, talvez não seja mesmo. A galera vê programação como um job super divertido, mas a realidade pode ser um choque às vezes, lembre que TI é enorme e desenvolvimento é apenas uma das áreas, talvez seu talento esteja escondido em algo que você não faz nem ideia, vale a pena explorar.