Como começar na área de desenvolvimento
Tags: braziliandevs, career, programming
Published: 2020-12-13 04:05:10

Recentemente, tive a oportunidade de realizar uma live, onde conversei com algumas pessoas sobre diversos pontos que são importantes para quem está começando na área de desenvolvimento. 

Nessa conversa, quis deixar bem claro que os pontos foram colocados segundo a minha própria experiência e visão sobre o assunto, pelo menos até o momento.

Já aproveito para agradecer todo mundo que esteve presente na live e compartilhou também suas próprias experiências e visões, foi extremamente enriquecedor para mim.

Como uma forma de melhorar minha comunicação e também para fixar conteúdo, resolvi fazer esse artigo tentando resumir um pouco do que conversamos naquele dia. Então bora lá!

Antes de mais nada, para quem tiver interesse, os [slides](https://docs.google.com/presentation/d/1TUAxRRokl8uddXi7a7KMC9acgni6cNSXuGArmRyk8TE/edit?usp=sharing) estão disponíveis. A live aconteceu no meu [canal](https://www.twitch.tv/morgiovanelli) na Twitch.

Adianto que o centro de toda a discussão era propositalmente direcionada para o seguinte tópico:

`<spoiler>LÓGICA DE PROGRAMAÇÃO!</spoiler>`

Mas vamos por partes. Normalmente, a primeira pergunta que uma pessoa interessada em entrar na área faz é: 
*Por qual linguagem de programação eu devo começar?*

E a resposta mais rápida e certeira que podemos dar é:
*Calma. Respira. Vamos começar pelo começo.*

No meu ponto de vista, essa nunca deveria ser a primeira pergunta. Mas entendo o motivo dela existir. Muitas pessoas acreditam que a única coisa que se precisa aprender para ser uma pessoa desenvolvedora é CÓDIGO. Contudo, não é bem assim. Tentarei separar em tópicos para acompanharmos de forma mais fácil. Depois me dá seu feedback contando o que achou e se você alteraria alguma coisa. Inclusive, fique à vontade para compartilhar o que pensa sobre o assunto.

**Pesquise sobre a área que pretende atuar:**
Entrar em terras desconhecidas sem ter uma preparação pode ser assustador ou até decepcionante. Vá com calma. Pesquise. Isso só vai ajudar a esclarecer dúvidas e evitar surpresas. O quão comum é ver pessoas começando um curso ou uma faculdade da área de tecnologia com expectativas totalmente distintas das que aquele curso pode oferecer, não dá para mensurar.

**Converse com profissionais da área:**
Essa é apenas mais uma das formas de você fazer sua pesquisa. Busque profissionais de carreiras que você se interessa e pretende seguir, converse sobre como são seus dias, o que precisou estudar, como é o mercado de trabalho e quais dicas esses profissionais poderiam te dar. E, por mais curioso que seja, sabe uma pergunta legal para fazer?
*Então, quando você chega segunda-feira no seu trabalho, qual é a primeira coisa que você precisa fazer?*

Isso pode ser bem interessante, pois te contextualizará sobre os diversos tipos de rotina.

Certamente você pode pensar: Ok, Morganna, então agora já posso começar a me preocupar com qual linguagem de programação devo iniciar?

*Não. Ainda não. Vamos em frente.*

**Estude algoritmos e lógica de programação:**
Chegamos ao ponto PRINCIPAL dessa conversa e onde todas as dúvidas vão sair. Esses deveriam ser os primeiros assuntos na cabeça de quem pretende ser uma pessoa desenvolvedora (ou, na minha visão, qualquer área dentro da tecnologia).

Dada a importância do assunto, vamos abrir aqui alguns parênteses. Além de estudar algoritmos e lógica de programação, já deixo a indicação de algumas "ferramentas" para apoiar e validar seus estudos desses dois pontos.

A primeira é o **fluxograma**, que te ajudará a entender de maneira visual, como funciona um algoritmo. A segunda ferramenta, seria o **pseudocódigo**. Este, por sua vez, te permite escrever o algoritmo conforme seus passos, como se estivesse dando ordens para serem seguidas, ou opções para algumas condições, tudo dependendo do objetivo do seu algoritmo. Ele não é um código definitivo que funcionará em seu computador, mas te deixa um pouquinho mais perto de chegar até uma linguagem de programação.

*Mas calma! Ainda não chegamos lá.*

Outra ferramenta de extrema e inquestionável importância é o famoso **teste de mesa**. E, por mais inocente e desnecessário que ele possa parecer aos olhos de uma pessoa iniciante (ou até mesmo de uma pessoa com anos de experiência), não negligencie o teste de mesa. O objetivo que dele é validar o seu algoritmo. Com essa validação, você poderá ter uma visão totalmente diferenciada, principalmente sobre possíveis falhas e como tratar cada uma delas.

**Nota mental:** nenhum sistema é 100% perfeito, todos são passíveis de falha, então não espere que apenas o "caminho feliz" acontecerá. Uma simples falta de entendimento do usuário sobre o que você está pedindo que seja inserido em um formulário, por exemplo, já pode ser motivo de caos completo e tudo ir por água abaixo.

Todo esse estudo ajudará no item mais importante: **abstrair o mundo real**. Afinal, não é isso que um sistema representa? Seja ele um programa que roda no seu computador, no console, uma página na internet ou um aplicativo no celular, todos servem para abstrair algo do mundo real e facilitar ou resolver algum problema e/ou necessidade de um público.

Do que adiantaria, então, você simplesmente descobrir que estão contratando pessoas programadoras em determinadas empresas que saibam quaisquer linguagens de programação que existam no mercado, se você sequer saberia como resolver um problema com elas?

Ainda que a pergunta pareça um pouco dura, quero te mostrar o sentido que ela tem. Pois, o que quero dizer é: pode ser que ir direto para uma linguagem de programação te faça aprender sua sintaxe, seus comandos, suas ferramentas, entre outras coisas. Mas será que você saberia estruturar uma solução sem antes aprender a lógica por trás? Não adianta querermos construir uma casa inteira, sem construir a base primeiro. Em algum momento ela vai simplesmente desmoronar.

**Linguagens de programação: qual escolher?**
Sei que você chegou até aqui acreditando que eu te diria qual linguagem você deve estudar para começar. Sinto muito te decepcionar respondendo essa pergunta com um simples: depende. Cada linguagem de programação possui um propósito e existem diversas delas no mercado. Isso não significa que você precisa aprender todas, mas entenda que o leque de opções está aberto e existem diversos filtros que podem ser feitos. Alguns deles poderiam ser:
* Qual área do desenvolvimento você tem interesse?
* Como estão as vagas de emprego na sua região?
* Com que tipo de tecnologia você gostaria de mexer?

Independente de qualquer coisa, tudo o que você precisa entender é que a linguagem de programação é apenas uma ferramenta que será utilizada para resolver um problema. Então desde que tenha a prática com a lógica de programação, um mesmo problema pode ser resolvido em mais de uma linguagem.

**Outros pontos importantes:**
Como uma pessoa programadora, além de aprender a evoluir seus conhecimentos técnicos, você também precisará adquirir e/ou desenvolver outros tipos de skills. Um deles seria aprender a entender os requisitos e o que um determinado público precisa que exista no seu sistema.

Perceba que, para um cliente, não necessariamente é importante o tipo de tecnologia e de linguagem que você vai utilizar, desde que atenda seus requisitos.

Um erro muito comum da nossa área é ver pessoas partindo direto para o código, sem antes entender a demanda e o que está sendo pedido. Ainda que esse erro te leve para um momento avançado do desenvolvimento de uma tarefa, tudo pode cair por água abaixo se, lá na frente, você perceber ou seu cliente reclamar que você não está fazendo o que foi pedido. Não por uma questão de que o cliente pode simplesmente mudar de ideia no meio do caminho, mas que, de fato, você não entendeu o problema ou a solicitação e seu código não resolve nada.

A frustração é horrível. Então pare. Pense. Reflita. Pergunte. Modele. Estruture. Discuta. Até que entenda, finalmente, qual lógica você precisa construir para que seu código seja desenvolvido. Não estou dizendo que isso evita 100% dos erros, mas a lógica te ajudará e visualizar problemas e possíveis soluções antes que saia codando por aí.

**Como aprender?**
Isso é extremamente relativo. Não acredite que só porque pessoa X aprende de determinada maneira que isso funcionará da mesma forma contigo. É válido experimentar diferentes formas até que você perceba qual é o seu jeito de estudar e o que faz com que você fixe o conteúdo, além da prática e da dedicação.

Cuidado com receitas miraculosas. Cuidado com o incentivo a algumas práticas que não se encaixam no seu perfil. Exemplo: pessoa Y é milionária e lê 30 livros por semana, faça como pessoa Y.

Reflita por um momento se isso é realmente válido. Muitas pessoas esquecem que a pessoa milionária, hoje, pode ter uma rotina longa de leituras e práticas que são possíveis porque ela não precisa trabalhar mais de 8h por dia e ainda trabalhar com freelas para pagar os boletos. Um esforço que, um dia ela pode ter passado, mas não precisa mais fazer hoje.

**HelloWorld() e suas possibilidades:**
O HelloWorld() pode ser um ótimo início em qualquer linguagem de programação. Mas é importante lembrar que não vale a pena parar apenas nesse ponto. E o resto? Tente construir aplicações. Tente recriar sites. Pratique! E evolua na sua prática de acordo com o seu tempo e com o seu ritmo. Tudo bem ter dificuldades, mas elas não podem te fazer parar no HelloWorld() e não te permitir explorar mais nada.

Sei que, mesmo chegando ao fim do artigo, depois desse texto gigantesco (que poderia ser ainda maior), você pode estar com uma sensação de frustração porque eu ainda não disse qual linguagem de programação você deve utilizar para começar. Gostaria de te dizer para não se atormentar com esse questionamento e seguir em frente em seus estudos. A linguagem de programação escolhida, você é quem vai decidir por n motivos.

Bons estudos e boas vindas a todas as pessoas que querem se juntar ao mundo da programação!