Como tudo começou
Tags: learning, newbie, webdev
Published: 2023-09-14 20:39:04

Olá, pessoal! Este é o meu primeiro post aqui no Dev.to!
Me apresentando, sou o Matheus, um dev iniciante do Brasil. Vou contar um pouco de como está sendo este meu começo no mundo de Tech.

## Que caminho seguir?

Quando comecei a pesquisar sobre tecnologia e as principais áreas de atuação dos devs no final do ano passado, fui inundado com informações sobre vários tópicos, como Frontend, Backend, Mobile, Cybersecurity, Data Science, entre muitos outros.

Por conselho alguns amigos, iniciei meu rumo explorando essas áreas tão diferentes e praticando um pouco usando as tecnologias pertinentes a cada uma. Era quase uma "brincadeira", fazer algo simplesmente pra ver se gosto. Admito que fazia alguns anos que não me permitia algo do tipo.

## "Comece pelo mais fácil"

Esse foi um conselho muito presente nos fóruns e também em comentários em várias plataformas, onde alguns programadores tentavam ajudar os que, assim como eu, estavam iniciando. Porém será mesmo que esse é o melhor conselho?

Por exemplo, muitos dizem que é melhor iniciar com frontend, aprender HTML, CSS e também o famoso JavaScript, pois dessa maneira o iniciante consegue já construir algo que não usaria a temida lógica de programação e ainda conseguiria ver na tela o que está criando, dando uma resposta rápida, um feedback quase instantâneo.
Na maioria dos lugares que procurei, a resposta era quase o consenso, "comece por frontend que será mais fácil, mais prazeroso". Por quê?
As pessoas são diferentes umas das outras, cada uma tendo seus gostos e preferências. Ora, não seria assim também com tecnologia? Por que eu deveria ir na mesma direção que todo mundo? Faz sentido?
Como estava realmente aturdido em meio a tantas informações e opções diferentes, segui a multidão e iniciei com a tríade do frontend.
Posso dizer que realmente gostei de mexer com HTML. CSS fazia tudo ficar mais bonito, mas também poderia ser uma pedra no sapato ("sabe centralizar a div?") 😂


Cheguei ao JavaScript, tão famoso e tão amado. Infelizmente, não gostei muito da sintaxe dele e nem do estilo de programação para frontend.
**Observação**: eu já tinha uma base de lógica e programação com Python antes de ir para o JavaScript.
Contudo, ao criar uma função ou chamar uma função built-in para adicionar comportamento à interface me pareceu algo bem difícil e contraintuitivo até. Cheguei a mexer um pouco com Angular, tentei aprender React e Next. Tive boas dores de cabeça, mas quando se acerta o resultado é muito gratificante.
Decidi voltar para a lógica "pura" do backend. Porém a dúvida agora era outra, ao invés de "que área seguir", tornou-se "que linguagem aprender?".

## A Batalha das Linguagens

Quem nunca pesquisou no Google "Qual a melhor linguagem de programação" que atire a primeira pedra. Contudo, essa acaba sendo uma dúvida comum pra quem inicia na área. Eu me questionei muito sobre o que aprender.
O que acabou me ajudando e lançando uma luz no fim do túnel foral alguns vídeos que assisti: "Não terceirize suas decisões", "Sua linguagem não é especial", "Linguagem Compilada vs Interpretada" do Fábio Akita. Devo dizer que a didática dele aliada com a capacidade técnica foram cruciais para eu mesmo direcionar as minhas buscas e pesquisas e eu, por mim mesmo, decidir qual linguagem aprender, focando em determinada stack, sem ser levado pela multidão de cursos e influencers tech.
Ressalto também vários posts lidos no TabNews, do Filipe Deschamps onde vários desenvolvedores com anos de carreira tinham opiniões até parecidas com a do Akita, onde o iniciante deve:

1-  Escolher sua linguagem baseada na tecnologia onde pretende atuar
2 - Aprender essa linguagem e focar nela
3 - Fazer projetos usando as habilidades adquiridas
4 - Persistir

O foco aqui deixa de ser "o que a maioria está fazendo/pesquisando/utilizando" para ser "o que **eu** preciso aprender". Perceba que você está com "skin in the game", ou "colocando sua pele em risco", ou seja, você está sendo ativo e entendendo suas preferências, gostos, tecnologias que deseja aprender e usar ao invés de simplesmente ver meia dúzia de vídeos em alta sobre tech influencers dizendo o que você "deve aprender em 2023". 
Outro ponto: discussões sobre capacidades das diversas linguagens de programação só são válidas quando se usam argumentos técnicos e realmente se sabe do que aquela linguagem é capaz e do porquê ela foi criada. Por exemplo, pode-se usar JavaScript para Inteligência Artificial? Sim! É a linguagem mais apropriada para isso? Não! Há Python, Java, até mesmo C++. Da mesma maneira, posso utilizar Python, C# para adicionar interatividade em componentes de páginas web? Sim! Há frameworks e bibliotecas específicas que conferem essas funcionalidades a essas linguagens. Porém quando se fala de desenvolvimento web, mais especificamente frontend, a linguagem mais comum, mais usada e que possui possui frameworks e bibliotecas **específicas para essa tarefa** é JavaScript (com Angular, React, Vue, etc.).

Deve-se escolher a linguagem pelas suas capacidades e focado nos projetos e tecnologias que **você** vai usar.

## A Escolha

Pois bem, e quanto a mim?

Bom, eu já havia tido contato com Python há 10 anos atrás, em 2013, quando ainda era adolescente. Cheguei a mexer um pouco porém, como eu só cheguei a utilizá-la basicamente pelo interpretador na linha de comando, não cheguei a fazer grandes coisas com a linguagem e desisti.
Quando decidi entrar no mundo da programação e procurando sobre as linguagens mais usadas (como elas funcionam, por que funcionam desta maneira, quais aplicações são desenvolvidas e por aí vai), montei minha lista com as seguintes: Java, C#, JavaScript, Python, Go e Rust.

Agora vinha a hora da decisão. Fui "filtrando" as linguagens justamente por seus pontos fortes de uso e descartando até chegar nas finalistas: Python, C# e Java.
Descartei JavaSCript pois mesmo sendo possível de utilizá-la no backend com NodeJS, ela é fracamente tipada, sua orientação a objetos é bem diferente do padrão. Retirei Rust por ser focada em programação de sistemas (tanto que atualizações na kernel do Linux e do Windows recentemente implementaram recursos escritos em Rust, substituindo os escritos em C). Retirei Go por ter uma sintaxe um pouco diferente e por ter particularidades inerentes da linguagem, focada em computação distribuída.

Decidi, em um primeiro momento em seguir com C#, pois está sendo utilizada por grandes instituições e em projetos novos e por me adaptar melhor à sintaxe da linguagem. Além disso, ela é fortemente tipada, o que força o programador a saber e entender os tipos, declará-los corretamente e tomar cuidado com certas conversões de tipos. Além disso, a Microsoft proporciona uma trilha de conhecimento no portal Microsoft Learn, que é pode facilmente ser seguido por iniciantes.
Acabei "descartando" Java nesse momento por ser ainda um pouco mais verboso do que C#, possuindo vários projetos antigos (de maneira geral) e por sua sintaxe no geral (como exemplo o sistema de Packages, funções de print e read, entre outros). Além disso, mesmo com o curso Java Explorer proporcionado gratuitamente pela Oracle, há certos momentos que o estudante pode se perder (pela introdução de pacotes, pequenos programas Java inseridos no programa principal, como exemplo).

Porém, contudo, entretanto 👀, mudei recentemente minha decisão, escolhendo focar em Python. Para não poderem me acusar de estar seguindo a moda 😂, explico a escolha.
Programando em Python, focarei mais em desenvolver a minha lógica de programação e capacidade de resolução de problemas do que tendo que focar conjuntamente na sintaxe de uma linguagem mais verbosa como C#. Consigo utilizar Python para diversos tipos de abordagens, como aplicações backend com o robusto framework Django, prototipar ideias simples, criar aplicações mais simples com Flask ou até mesmo realizar scripts de automação com Selenium ou Python puro.
Claro que Python (assim como toda linguagem de programação) tem suas vantagens e desvantagens. Mas, como essa é minha escolha, a faço conscientemente, sabendo do que a linguagem é capaz (e também do que ela não é).
Continuarei a explorar um pouco do JavaScript para alguns projetos pessoais em frontend, bem como já tenho um plano traçado para me desenvolver cada vez mais em backend, começando com Python, estudando depois C# para utilizar uma linguagem fortemente tipada e seu framework vastamente usado, o .NET. E por último, mas não menos importante, aprenderei Java, principalmente para conseguir entender como foram construídos sistemas distribuídos e de alta capacidade, principalmente os produtos da Apache como Hadoop, Spark, dentre vários outros.

E fico por aqui. Agradeço imensamente a todos que dispuseram do seu tempo para acompanhar esse post, o 1º de muitos, espero!
Espero que não tenha ficado tão chato de ler 😂.
É isso, pessoal! Fico aberto a feedbacks e comentários. Vamos programar! 😁💻