paint-brush
Opinião impopular: é mais difícil do que nunca ser um bom engenheiro de softwarepor@mjuraj
8,352 leituras
8,352 leituras

Opinião impopular: é mais difícil do que nunca ser um bom engenheiro de software

por Juraj Malenica5m2023/10/15
Read on Terminal Reader

Muito longo; Para ler

Sobrevivendo à via rápida da tecnologia: uma história de engenheiros, entusiasmo e foco no que realmente importa em um mundo em mudança
featured image - Opinião impopular: é mais difícil do que nunca ser um bom engenheiro de software
Juraj Malenica HackerNoon profile picture
0-item

Trabalhar em um ambiente de startup por quase uma década me deu acesso privilegiado a uma cultura acelerada de inovação, exploração e uma abordagem à prova de falhas. Segui a escada de progressão padrão: estagiário, júnior, intermediário, sênior e, eventualmente, mudei para o curso de gerenciamento de engenharia . Com o tempo, muitas pessoas com quem cresci passaram a trabalhar em outras empresas, tornando-se colaboradores altamente respeitados. Seria justo dizer que eles são bons engenheiros.


Olhando para trás, para a jornada de meus colegas, pupilos e a minha própria, parece mais difícil do que nunca ser um bom engenheiro.

Definindo um bom engenheiro

O que significa ser engenheiro? Como engenheiros de software, somos:

  • Responsável por traduzir problemas complexos em soluções eficientes e escaláveis
  • Responsável por analisar os requisitos do usuário, projetar arquitetura de software, escrever código e testar e depurar software
  • Espera-se que fique por dentro das tendências, buscando novas oportunidades de negócios e maneiras de melhorar os produtos existentes

Então, não – engenharia não é igual a programação. Às vezes, essa é a menor parte. Definitivamente parece que à medida que se adquire mais experiência, como mostra a figura abaixo.

Distribuição de trabalho por função

O que significa ser um bom engenheiro? Com base em inúmeras entrevistas e no apoio ao progresso dos meus pupilos, percebi que pessoas com diferentes níveis de especialização podem dar respostas diferentes.


Alguém que está começando pode pensar que é o número de linguagens e frameworks que um desenvolvedor conhece. Um engenheiro mais experiente pode nem se importar com a linguagem que está usando, em vez disso, enfatiza a qualidade do código - aderindo a todos os princípios de codificação e conduzindo o controle de qualidade enquanto avança rapidamente.


Engenheiros altamente experientes colocam um enorme foco em agregar valor. Às vezes, escrevemos rapidamente um código descartável que quebra todas as regras para provar uma hipótese; às vezes, passamos dias escrevendo algumas linhas de código de missão crítica. Mas na maioria dos dias tomamos decisões arquitetônicas, discutimos questões de missão crítica, melhoramos processos, etc. Por quê? Porque muitas vezes é isso que traz mais valor.


Embora sempre haja exceções à regra, podemos dizer que um bom engenheiro é aquele que concentra seus esforços de forma eficiente para trazer o máximo valor no alcance de um objetivo.

Mercados em crescimento e concorrência

O mercado de tecnologia está em constante evolução. Todos nós vimos grandes sucessos ao longo dos anos, do WhatsApp ao Uber, Airbnb e TikTok. Embora possam ser excepções, tais exemplos muitas vezes definem a Estrela do Norte para as pessoas – algo pelo qual devem esforçar-se. Essa forma de pensar coloca pressão extra sobre os engenheiros. Eles sentem estresse por dentro, pensando que estão fazendo algo errado, e por fora, com pessoas comparando sua empresa a muitos concorrentes.

Valor total de mercado de tecnologia

Para ter sucesso num ambiente deste tipo, as empresas precisavam de “agir rapidamente e quebrar as coisas”, como diz o famoso lema do Facebook. Hoje, isso é mais óbvio do que nunca – quase todas as empresas estão se tornando uma “ empresa de IA ”. Todos estão integrando o ChatGPT, muitas vezes sem motivo real, sem uma estratégia de como isso agregará valor.


Ao nos afastarmos do princípio fundamental – como podemos agregar mais valor aos nossos clientes – e avançarmos no sentido de vencer a concorrência no trem da campanha publicitária, conseguimos que os engenheiros construam funcionalidades que estão fadadas ao fracasso.

O mundo é um lugar confuso.

O que um entusiasta como eu deveria fazer para se tornar um engenheiro melhor? Além da escolha óbvia de aperfeiçoar as habilidades de codificação melhorando o código limpo e as filosofias de arquitetura, hoje em dia existem muitas tentações à espreita. Aprendendo TypeScript e aquela estrutura mais recente que muda tudo, mergulhando no mundo do blockchain e da criptografia, experimentando uma infinidade de produtos de IA… As opções são infinitas.

Todas as bibliotecas javascript

Para ser sincero, depois de tantos anos na indústria, ainda me sentia ameaçado pela nova onda de mudanças trazida pelo ChatGPT, GitHub Copilot e outras tecnologias emergentes. Meu cérebro começou a imaginar cenários em que eu estava fora de contato com tantas coisas. Estou me concentrando nas coisas certas para agregar valor? Estou usando meu potencial máximo?


Depois de algum tempo, ficou claro que estávamos entusiasmados. Isso também passará, restando apenas as empresas de IA que estão a criar valor a longo prazo. O número de empresas de IA nos últimos cinco anos dobrou nos EUA, com muitas startups apenas adicionando um recurso ao recém-lançado GPT-3. Mais tarde, eles morreriam com o lançamento do ChatGPT ou GPT-4 , que poderia fazer a mesma coisa, mas melhor. Mas isso não impede o exército do Twitter e de outras plataformas de proclamar a nova ordem mundial.


Mesmo com tantos anos trabalhando com tecnologia, fui sugado pelo hype. Erro de novato!


Linguagens de programação e lançamentos constantes de novos frameworks também aumentam a confusão. Tailwind, TypeScript, Haskell e Rust são ótimos; cada um deles tem um ângulo que lhes dá uma vantagem. No entanto, as pessoas muitas vezes confundem aprendê-los com algo que lhes dará uma vantagem. Não vai, ou pelo menos não deveria. São apenas ferramentas que é bom conhecer, mas que não podem substituir a experiência. É por isso que nunca colocamos requisitos de linguagem/estrutura em nossas descrições de cargos. Eu seria um tolo se sentisse falta de um engenheiro talentoso porque ele não conhece TypeScript, engenharia imediata ou microsserviços.


Meu conselho é: não se deixe levar pelas novas tendências e exageros a ponto de perder o foco em agregar valor.

Ritmo acelerado e grandes expectativas

Ao buscar novos desafios, pode ser difícil lutar pelo estresse positivo e ao mesmo tempo evitar o estresse negativo. O estresse positivo é aquele em que percebemos uma situação estressante como uma oportunidade que leva a um bom resultado, enquanto o estresse negativo é aquele que pode ter efeitos prejudiciais à saúde física e mental, como pode ser visto na imagem abaixo. Entregar resultados continuamente em um cronograma apertado é estressante, e criar recursos pelos motivos errados tende a ser o último.

Estresse positivo vs. estresse negativo

Tanto como mentor quanto como trabalhador, tenho visto o estresse levar ao esgotamento. Sem exceção, fazer alguém passar por um esgotamento resulta em menos resultados do que reduzir a carga de trabalho, fazer uma pausa e otimizar a longo prazo. É por isso que sempre tentamos fazer com que o alerta de sinais de alerta seja o mais simples possível, com atualizações periódicas da equipe, reuniões individuais e uma cultura estimulante.


Ainda assim, as coisas vão dar errado. Quando isso acontece, reduzimos o escopo, envolvemos pessoas que podem ajudar ou nos comunicamos com nossos clientes para adiar o lançamento.


A pressão está mais alta do que nunca, vindo tanto de dentro como de fora. Mantenha o foco e cerque-se de uma equipe de apoio que otimiza o longo prazo.

Como podemos fazer melhor?

Todos nós temos momentos difíceis – sentindo-nos como engenheiros, mentores ou colegas inadequados. As coisas nunca serão perfeitas ou fáceis, e não deveriam. Sem cometer erros e momentos difíceis, não aprendemos. Mas há algumas coisas que considero que podem aumentar a eficiência.

Níveis de influência

Individualmente, permaneça fiel ao que é realmente importante. As tecnologias irão e virão, mas o valor que você agrega ao mundo é o que conta. É difícil fingir trabalho duro e experiência.


Como empresa, comece explicando o porquê ao tomar decisões. Essa é a melhor forma de entregar funcionalidades que agreguem valor. Além disso, certifique-se de que os funcionários saibam o porquê . Na minha experiência, eles tomarão decisões melhores, darão feedback valioso e serão mais felizes.


Culturalmente, estabeleça processos que apoiem os colaboradores, otimizando no longo prazo. Juntamente com seus colegas, estabeleça uma cultura de confiança, apoio e carinho. Dessa forma, todos vocês obterão o melhor uns dos outros.