Uma conversa com quem quer virar dev

Olá, tudo bom?!

Faz um bom tempo que não escrevo um artigo sequer nesse blog, o último foi ano passado.

Ba Dum Tis

E quem não acompanha meu Twitter ficou sem entender nada, não é mesmo? Bem, o que rolou é que eu simplesmente não consegui arrumar tempo para escrever, de Dezembro até hoje. As coisas ficaram bem corriqueiras e talvez fiquem ainda mais, pois aconteceu algo inesperado (vocês saberão mês que vem, ainda não vou soltar essa notícia).

Então, a quem tem Twitter, por favor, me siga: https://twitter.com/kg_thebest. Não, não estou tentando usar esse post para aumentar o número de seguidores (tá aí uma parada que eu nem me importo tanto), é só porque quando eu tenho problemas para escrever, eu costumo avisar por lá mesmo, ok?

Voltando à nossa cronologia, após encontrar um post sobre metas tech para 2022, eu decidi expor minhas intenções pro mundo, sendo a primeira delas a de ajudar 100 aspirantes dev a conseguir estudar o necessário e cair no primeiro emprego. Minha DM bombou de solicitações e, até o momento, respondi todas elas. Percebi que essa galera nova não faz ideia de por onde começar, principalmente os que estão terminando o ensino médio agora. Se você for uma dessas pessoas: calma, tá tudo bem. A vida é assim, não somente esse momento. Muitas vezes a gente não faz ideia do que precisa fazer por não conseguir enxergar muito a frente e faz parte. Você só tem de entender que muitas vezes vai precisar improvisar, podendo errar ou acertar. No geral, fazendo alguma coisa, você vai chegar em algum lugar.

PORÉM, é certo que quem pausa para planejar um pouco consegue se organizar melhor e ter uma evolução mais rápida. Com isso, quero dizer para colocar na sua mente a seguinte frase: para tudo, devemos fazer um plano de ação. Você quer trabalhar ou aprender? Não, não responda "aprender para trabalhar". Se o fim das suas intenções for trabalho, deve ser apenas isso.

Em ambos os casos, você vai precisar aprender, claro. Mas o foco que você dá em cada situação é totalmente diferente, além de que o tempo que leva para colher "resultados" também é. Se a curva de aprendizado é relativa para cada pessoa, imagina comparar o tempo de crescimento de pessoas com intenções diferentes?! Não dá, né? Fora que um plano de ação não pode ser exatamente igual para todo mundo. Cada um vai ter algo em que se destaca no meio da trilha de aprendizado e isso muda muito o que ela precisa focar nos estudos.

Tá, Kiko, por que você tá falando isso tudo?

Simplesmente porque isso precisa ser dito. Note que eu não te dei a opção "ficar rico(a)" porque isso não é uma escolha, na nossa área. Se essa for sua intenção, provavelmente a intenção real é trabalhar... Ficar rico(a) será consequência de muitos acertos consecutivos.

Quê? Eu posso ficar pobre sendo dev?!

Claro que pode! Se você parar de evoluir, por exemplo, antes mesmo de virar um Pleno, sua carreira pode estagnar. Portanto não é só "conseguir um emprego e acabou", isso é o começo. Deixa esse desejo de riqueza de lado e foca em evoluir que tu pode chegar lá com mais naturalidade.

E essa dica é muito séria. Você precisa entender que o trabalho com programação não é só um diálogo com computadores, tem muitas pessoas envolvidas no processo. Você precisa respeitar cada uma delas e aceitar que vocês irão evoluir juntos. Muitas vezes irá encontrar situações onde terá um problema que não consegue encontrar a solução e, de repente, ao comentar com outra pessoa, você a enxerga imediatamente, mesmo sem essa pessoa falar nada.

Isso só prova que desenvolver é um trabalho que precisa de interação. Mas tá tudo bem se quiser ficar isolade de vez em quando para focar em alguma coisa, faz parte também! Eu só preciso te contar que isso precisa ser um equilíbrio. Esse sentimento é totalmente diferente das atividades escolares que você já deve ter participado, onde sempre tem pessoas interessadas em fazer o trabalho e pessoas que simplesmente querem ser carregadas. Se no nosso trampo tiver uma única pessoa desinteressada, o trabalho não anda, saca?

E entrando um pouco mais nesse assunto, ao saber que está lidando com pessoas, você automaticamente deve perceber que está lidando com o psicológico delas, onde cada uma tem seus problemas de casa e você também as influencia nisso. Mais uma vez, é preciso respeitar! Se você sabe que precisa evoluir junto e vê que alguém está ficando para trás, conversa com ela... Vê se você consegue ajudar ou direcioná-la a algo que possa resolver o problema, sabe? Você até pode ter a escolha de crescer sozinho(a) nesse ramo mas... Não recomendo. Eu nem vou encorajar essa escolha, porque isso te torna instantaneamente num péssimo exemplo de pessoa.

Ok, Kiko... Ok! Programação é um trampo com pessoas... Mas e o plano de ação?

Antes de sair comprando cursos de programação sem sequer ler a ementa, você já escolheu uma área de foco? Por exemplo, fazendo a pergunta que costumo fazer para quem me chama para tirar dúvidas, você conhece os termos client-side e server-side ou front-end e back-end?

Se sim, pula esse pequeno trecho porque vou resumir:

1. Client-side vs Server-side

Esses termos são utilizados para separar responsabilidades entre aplicações. Logo mais, você verá que tem times especializados em fazer códigos que são processados no servidor e times que fazem códigos que rodam no dispositivo do usuário, seja um site, um programa desktop ou um aplicativo mobile. Então às vezes é bem necessário especificar o que cada parte do sistema vai fazer, sendo client-side a parte do client (o que roda no dispositivo) e server-side a parte do server (o que roda no servidor). É importante compreender que cada parte da aplicação tem objetivos completamente diferentes. Enquanto o client-side deve organizar as informações para desenhar a interface do usuário, o server-side deve processar informações enviadas ou retornar essas informações durante consultas. Sabendo disso, você deve refletir sobre qual dessas responsabilidades te interessa mais para escolher qual caminho você quer seguir, o que nos leva às próximas palavras-chave.

2. Front-end vs Back-end

Se você é o tipo de pessoa que tem interesse em montar o visual das aplicações, no client-side, então você é uma potencial front-end. É o termo dado para quem atua com essa camada da aplicação (então sim, quem desenvolve app mobile também deveria ser chamado de front-end - me corrijam se eu estiver errado/desatualizado, por favor). Já se você é do tipo que prefere ficar com a parte de processar as regras de negócio, no server-side, então você é uma potencial back-end. Acho que podemos colocar dessa forma, bem simplificada, porque tanto o front quanto o back devem lidar com várias questões de segurança. Essa parte é uma responsabilidade de todos, até do usuário, hahaha.

Saber disso já é um bom começo, certo? Se você já se decidiu sobre qual dos caminhos quer seguir (front/back), já é um primeiro passo dado. Mas às vezes não dá pra decidir assim, principalmente se sua intenção imediata for o emprego.

Pois é, Kiko... O que eu devo escolher para começar a trabalhar para ontem?!

Nesse caso, mesmo que meu início de jornada tenha sido com back-end, eu recomendo front-end. É bem mais fácil arranjar um trampo inicial nessa área, pode ser até que você goste de ficar. E se não gostar, não tem problema mudar depois que estiver ganhando uma grana, né? Essa é uma das melhores coisas da nossa área: você é livre para trabalhar com o que quiser. Talvez não na mesma empresa, mas com certeza você pode migrar para outra linguagem ou sair do front pro back.

E se a intenção for no trabalho, mais uma vez, você pode começar estudando alguns frameworks populares, como o React.js ou o Angular, mesmo pulando várias etapas. Você também vai precisar aprender versionamento de código (git) e as aplicações que registram isso na cloud (Github, Bitbucket, Gitlab), além de muitos detalhes sobre como funciona a internet. HTML, CSS e Javascript também são ótimos conteúdos, mas você pode deixar para se aprofundar assim que começar a trabalhar.

E sim, isso pode dar certo. Mas, no geral, se você tiver mais um tempo para estudar, então começa pelo básico primeiro antes de cair de cara nos frameworks, tudo bem?

Mas Kiko, o que é um framework? Por que abominam tanto começar estudando isso?

Framework é como se fosse um projeto-base para fazer projetos. Ele te dá muito código pronto para te ajudar a desenvolver mais rápido, além de ferramentas adicionais para que você possa implementar certas funcionalidades, quando necessário.

Ao utilizar um projeto-base, você acaba não aprendendo a desenvolver coisas complexas por conta própria. Pode ser que, no futuro, você precise desenvolver algo que não tenha código pronto e não saiba nem por onde começar, sabe? Por justamente não ter aprendido o básico. É por isso que essa prática é completamente nociva pra você.

Ainda assim, as pessoas precisam parar de julgar essa escolha e perceber que nem todo mundo tem tempo para ficar reforçando base. As pessoas precisam colocar comida à mesa! Se não trabalhar, não sobrevive. Nessa situação, qualquer ordem de estudo que te leve ao emprego é completamente aceitável. Você só precisa consertar isso depois, assim que tiver oportunidade. E não trate isso com levianidade, é sério, quanto antes puder corrigir essa falha de conhecimento, melhor será seu crescimento.

Ok, Kiko... E por que existe tanto framework?

Pode ter diversos motivos, mas entre os que eu citei, há filosofias diferentes. Enquanto o Angular te dá o projeto-base todo de uma vez só, o React.js te dá uma pequena base, onde você pode adicionar complementos aos poucos para montar sua aplicação somente com o que ela precisa.

Ou seja, enquanto o Angular é uma bazuca, o React.js é uma palmatória, que pode ser equipada com vários dispositivos, podendo virar, inclusive, uma bazuca também. Se o projeto que precisa atuar é matar uma formiga, você precisa mesmo de uma bazuca?

Formiga abatida

É uma péssima analogia com agressão a formigas mas acho que deu para entender.

No meio empresarial, há uma certa preferência por Angular justamente por já dar muita coisa pronta e você não perder tempo procurando outros componentes para começar a desenvolver. Ainda assim, eu prefiro mil vezes o React.js (na real, eu amo mesmo é Vue.js mas você não precisava saber disso agora), pelo fato que o código do front-end fica bem mais limpo.

Legal, Kiko... E se eu escolher apenas aprender e ainda não estiver decidido?

Se você tem tempo para aprender, eu recomendo definir front como cara e back como coroa e jogar uma moeda. Hahahahahah, é sério. Qualquer um deles é muito legal de se trabalhar. Você pode começar com um e, se não gostar, andar uns passos para trás e recomeçar no outro, sabe? Não tem porque se preocupar com indecisões se você realmente tiver esse tempo para aprender.

Além do mais, é extremamente útil para o desenvolvedor conhecer um pouco do outro lado quando for trabalhar. Saber a necessidade da parte que te complementa ajuda a melhorar sua qualidade de código. Quando a dev front-end sabe o que a dev back-end pode fazer, ela vai saber descrever o que precisa durante os refinamentos... E vice-versa!

Por isso que não há necessidade de se frustrar com indecisões agora.

Ah, Kiko... E o que eu posso estudar?

Nesse ponto, eu recomendo consultar o site https://roadmap.sh/! Lá tem vários planos de estudo prontos para você seguir. É simplesmente incrível. Lembrando que, se você não tem urgência de emprego, deve ver as trilhas de front ou back-end. Caso contrário, pode ver as trilhas de framework mesmo, beleza?

E além de todas essas questões

Um parceiro que sigo no Twitter escreveu um artigo iradíssimo reunindo as principais dúvidas que ele sanou da galera em 2021. A maioria não tem muito a ver com desenvolvimento, na prática, e sim com perguntas de quem ainda não está completamente decidido a vir para a área. Por exemplo: "preciso de faculdade?". Ele respondeu lá e foi bem preciso na resposta. Cirúrgico!

É o artigo Então você quer ser Dev? do Felippe Regazio. Recomendo essa leitura antes de começar a estudar, belê?

E por hoje é só! Curtiu? Comenta e compartilha!

Estou tentando com todas as forças voltar a escrever na mesma frequência de antes (um artigo por dia útil), mas está muito difícil aqui em casa, então não se assustem se eu sumir novamente, tudo bem? Logo mais retomarei os artigos de PHP para Iniciantes.

Vejo vocês em breve!

Inté!!