Algumas coisas importantes que aprendi sobre desenvolvimento Web desde que eu comecei

Primeiramente, sou apenas um Junior, tenho cerca de 4 anos na área e já trabalhei em algumas empresas. Então apesar de eu estar compartilhando algumas coisas que eu considero serem importantes de aprender durante a jornada dos desenvolvedores, peço que complementem ou me corrijam caso algo esteja errado ou em falta.

Bom, vamos lá!

Use SQL como sua escolha principal

Muitos cursos e tutoriais escolhem o MongoDB para usar, é bom porque é simples de entender quando você está começando. Mas quando você está começando, você deve aprender sobre tabelas, relacionamentos e como escrever boas consultas SQL.

As pessoas costumam dizer que "Mongo é mais rápido que bancos de dados SQL", mas quando você está iniciando no mundo de desenvolvimento, provavelmente seus aplicativos não precisam ser mais rápidos, eles precisam ser consistentes. Provavelmente PostgreSQL ou MySQL podem resolver seus problemas.

Aprenda um pouco sobre segurança

A maioria dos desenvolvedores não pensa nem um pouco sobre segurança. Mas é muito importante, você não precisa ser o Elliot do Mr. Robot, mas conhecer as vulnerabilidades mais comuns, vai te ajudar a desenvolver um código mais seguro. Você pode começar a aprender sobre XSS, CSRF, SQLi, rate limit etc.

Você pode ler o OWASP Top 10 para que fique por dentro das vulnerabilidades mais exploradas.

Aprenda Typescript

Um desenvolvedor web sempre usará Javascript, seja no front-end ou no back-end. No começo, o Typescript pode ser difícil e chato (era assim para mim por um tempo), mas usar o Typescript economizará tempo para você no futuro eliminando problemas bobos que poderiam acontecer caso você estivesse usando Javascript.

Sempre opte por usar transações (transactions)

As transações (transactions) garantirão que sua leitura/gravação no banco de dados permaneça "atômica" e "consistente". Leia sobre o ACID.

Uma maneira simples de explicar é pensar em uma transferência bancária, você precisa ter certeza de que o dinheiro quando sai da conta A, chega na conta B. Se ocorrer um erro antes do dinheiro chegar na conta B, o dinheiro precisa retornar conta A. Basicamente, a transação fará um rollback se ocorrer um erro e um commit se a transação for bem-sucedida.

Muitos ORMs como o Prisma possuem por padrão transactions ativadas mas é sempre bom conferir.

Use alguma forma de cache

Se você precisar melhorar o desempenho e a escalabilidade do seu aplicativo, não precisará alterar o banco de dados como do MySQL para o MongoDB. Você pode simplesmente adicionar algum banco de dados de cache. Redis é uma boa opção para iniciantes, mas tem muitas opções. Um banco de dados em cache pode remover grande parte do tráfego em seu banco de dados principal, você faz a pesquisa primeiro no cache, se os dados existirem retorna, senão você pesquisa em seu banco de dados principal e salva no cache. Por um tempo, toda pesquisa retornará o que está no banco de dados de cache.

Use Cloudflare

O Cloudflare tem muitas utilidades, ela vai ser o seu primeiro mecanismo de segurança contra hackers e também serve para servir de cache de arquivos estáticos do seu site. Portanto, sempre que você colocar seu site online, use o Cloudflare.

Mesmo eu não sei tudo o que o Cloudflare pode fazer de tantas possibilidades e serviços.

Use Filas (Queues)

As filas (Queues) são indispensáveis em muitos momentos do aplicativo, basta pensar em uma festa, imagine todas as pessoas tentando entrar de uma vez. Isso é quase impossível. As filas resolvem isso. É o mesmo para aplicativos web, seja quando seu aplicativo recebe uma quantidade inesperada de usuários ou quando algo demora um tempo considerável, como gerar relatórios ou realizar pagamentos através de terceiros.

Esses foram os tópicos que escolhi para falar, são coisas que você pode usar independente da sua linguagem de programação. Você aprenderá muito mais coisas ao longo do tempo e com os problemas que surgirão, esta é apenas uma lista para você conhecer algumas coisas que existem e usá-las quando necessário. Espero ter te ensinado algo novo.

Obrigado!

Outro ponto importante também pra quem está começando de fato nesse mundo da programação, é ter uma boa base de conhecimento sobre as funções nativas da linguagem, elas podem te ajudar no futuro.

Posso usar como exemplo a dificuldade que passei no começo desse ano é por não entender o que a função split() do Javascript fazia no sistema da empresa que estou estagiando, depois que eu entendi como funciona tudo fica mais claro.

Funções recursivas também me deram um trabalho pra entender e implementar.

Realmente é um ponto importantíssimo! Eu iniciei no desenvolvimento web com PHP, dando manutenção em um projeto que já estava em produção na empresa, e foi um caos total no início. Peguei firme em aprender o core da linguagem, através do próprio site do PHP e com alguns cursos introdutórios. Hoje já consigo dar manutenção total neste projeto e já até visualizei possíveis melhorias e uma ideia de reescrever utilizando um framework (Laravel ou Symfony).
Seria um bom ponto tendo em vista que é indiferente da linguagem, saber o core de qualquer linguagem é realmente importante antes de ir para outros frameworks

bom resumo! adicionaria (ou talvez trocaria) essa parte do cache. gerir o cache normalmente torna-se um problema dependendo dos padrões de consumo e frequencia de atualização dos dados, vc invariavelmente vai começar a esbarrar em casos que a informação mudou mas o cache ainda esta mostrando a antiga pq nao foi devidamente invalidado. focaria em entender o funcionamento das chaves e indices do banco de dados, da para resolver boa parte de problemas de performance nos bancos ajustando indices e criando novos para atender melhor a maneira como vc está consultando os dados.

Vou admitir que nunca estudei sobre os indices nos bancos de dados. Dizem que pode resolver o problema na hora da leitura. Mas ainda acho cache indispensável, seja para retornar uma pagina inteira ou alguns dados. Mas realmente precisa saber gerenciar bem para que não tenha dados antigos em locais que necessitam deles atualizados.

Conteúdo de qualidade, me identifico muito com a parte de TS, a minha empresa está criando uma nova aplicaçāo baseado em React com TS, realmente é mais chato, porém evita muitos erros bobos, como mensionado.

Eu demorei um tempo até me acostumar, ainda mais com React, no node foi mais simples.

Curtir muito a postagem, especialmente agora que estou me ingressando no mundo da programação