Italktech.io

Como me tornei um engenheiro de software de back-end

16 de novembro de 2022 • ☕️ 3 min read

Translated into: Português do Brasil

Read the original View all translated posts

dark-side

Onde eu comecei

Há um ano, fiz a transição com sucesso para me tornar um programador back-end e decidi escrever um pouco sobre como foi esse processo.

Caso você ainda não me conheça, inicialmente trabalhei com vendas por 12 anos e, em 2017, fiz a transição para Desenvolvimento de Software e iniciei minha carreira como desenvolvedor front-end. Você pode ver esse blog post caso você queira saber mais como fiz essa transição.

Trabalhei em grandes empresas como desenvolvedor frontend, incluindo ao.com, BBC (Iplayer) e Maystreet (empresa de dados dos Estados Unidos). Me especializei em React, Node e Typescript, e me diverti muito trabalhando com React durante todos esses anos.

Em 2020, tive a oportunidade de integrar um esquadrão de backend na BBC por pouco mais de sete meses, e eles eram responsáveis ​​pela API principal do iPlayer, que me apresentou alguns novos conceitos como microsserviços e sistemas distribuídos usando Node/Typescript. Eu aprendi muito sobre AWS (Amazon Web Service) e como manter servicos backend usando graphQL e Rest.

Depois disso, consegui trocar de emprego e me tornar um engenheiro de nuvem, lá fui responsável por auxiliar uma equipe de frontend na implantação de seus serviços para produção, configurando a rede AWS, contêineres, pipelines, implantação, terraform e tudo mais. Eu me diverti muito, mas durou apenas oito meses, pois tive uma excelente oportunidade de ingressar em uma empresa mais importante.

Mudei-me então para a empresa onde trabalho atualmente. Fiquei tão empolgado em ingressar que aceitei uma entrevista para uma posição full stack, o que fazia sentido na época, pois sabia muito sobre React e Node, mas também queria trabalhar com o back-end e continuar aprendendo mais sobre isso. Nove meses depois, tive uma excelente oportunidade de alternar esquadrões, então entrei para um esquadrão de back-end completo (JAVA) e tenho trabalhado em tempo integral como engenheiro de back-end desde então. Fiz a transição naquela época e nunca mais olhei para trás, e estou muito feliz em trabalhar com os microsserviços e com o Java 17. Mas a verdade deve ser dita: tive que aprender muitas coisas novas.

Aqui estão algumas coisas que aprendi desde que mudei para o back-end:

Os sistemas distribuídos são muito mais complexos do que parece. Fica mais complicado conforme você continua escalando. Você tem que entender muitos conceitos sobre como esses sistemas interagem uns com os outros e também aprender novas tecnologias. O ecossistema Java era muito maior do que eu esperava; embora não tivesse problemas para aprender Java, fiquei impressionado porque, vindo de um histórico de JS, conhecia todas as bibliotecas e como usá-las e esse não era mais o caso na terra do Java. Você tem que aprender muito de novo, desde testar frameworks até aprender sobre Java runtime, alocação de memória e muito mais. Aqui no Skyscanner, um dos nossos valores é: nós construímos, nós executamos. Isso significa que não apenas escrevemos o código, mas também somos responsáveis ​​por implantar e monitorar nossos serviços, o que é um excelente conceito. Tive que aprender muitas ferramentas novas, como Grafana, New Relic, Bosun para alarmes, blue green deployment strategy, Protocol Buffers e muitas outras.

Também aprendi que devemos fazer Composição sobre Herança, pois é uma escolha mais inteligente e aprendi que principios SOLID ajudam de mais ao longo de sua jornada.

Caso você esteja procurando fazer o mesmo, eu o aconselharia a aprimorar seu conhecimento de algoritmo e estrutura de dados antes de começar. A razão é clara quando você tem uma escala tão grande e milhões de clientes, cada código que você escreve é ​​importante, então devemos entender como o código que escrevemos funciona. A composição também ajuda você a estruturar seu código de uma maneira melhor. Lembre-se de ser paciente e ter metas alcançáveis ​​para acompanhar seu progresso ao longo do caminho.

A few valuable resources are:

Leetcode para algoritmo e estrutura de dados e verifique mais sobre Big O pois isso te ajudara a entender melhor sobre a performance do codigo que voce escreve.

Aqui estão algumas leituras que eu recomendo:

  • Clean Code by Bob Martin
  • Design Patterns by Freeman and Robson
  • Refactoring to Patterns by Joshua Kerievsky

O que vem a seguir para mim?

Ainda gosto de programar e quero continuar fazendo isso, mas, no futuro, me vejo trabalhando para me tornar um Software Engineer manager, pois gosto de combinar tecnologia e soft skills.

Espero que tenham gostado deste pequeno post =)

Você também pode ver o vídeo que criei falando sobre como aprender a programar

Many regards,

Jean Rauwers