Bissectar, não adivinhe
Quando um bug apareceu em algum lugar entre uma versão funcional e uma quebrada, pesquise binariamente o histórico em vez de observar a diferença - verifique o ponto médio e repita até que uma alteração permaneça em pé.
Engenheiro de software · Escreve, testa e mantém o código que comanda a vida moderna – e é uma das primeiras profissões a observar a IA automatizar seu próprio trabalho diário.
A imagem de um engenheiro digitando continuamente por oito horas está quase errada. Ler o código de outras pessoas, raciocinar sobre uma falha sem causa óbvia e explicar uma compensação técnica para pessoas que não são engenheiros ocupam tanto trabalho quanto escrever um novo código - muitas vezes mais, para qualquer pessoa que já tenha passado dos primeiros anos.
A arte transmitida dentro da profissão é menos sobre qual linguagem aprender e mais sobre hábitos mentais: como procurar um bug sistematicamente em vez de adivinhar, quando deixar o código funcionando sozinho e quando excluir o código é a coisa mais valiosa que você fez durante toda a semana.
Dividir uma solicitação grande e vaga em partes pequenas, que podem ser construídas e testadas de forma independente – a habilidade que mais separa os engenheiros produtivos daqueles que param em grandes tarefas.
Restringir sistematicamente onde e por que um sistema se comporta mal, em vez de adivinhar e mudar as coisas até que funcione.
Escolher como os serviços, dados e equipes devem ser divididos para que tudo possa continuar mudando com segurança durante anos, e não apenas funcionar no primeiro dia.
Explicar uma compensação técnica para um não-engenheiro, escrever uma mudança claramente para os revisores e negociar o escopo - a maior parte do código profissional é lida e discutida muito mais do que escrita.
Escrever verificações que detectam uma alteração quebrada antes do usuário e manter uma base de código legível o suficiente para que a próxima pessoa – geralmente o mesmo engenheiro, meses depois – possa modificá-la com segurança.
Linguagens, estruturas e agora ferramentas de IA são substituídas a cada poucos anos; engenheiros que param de aprender deliberadamente após o primeiro emprego estabilizarem rapidamente.
Acompanhar alertas e mensagens durante a noite e, em seguida, uma breve reunião stand-up onde a equipe diz no que está trabalhando e o que está bloqueando.
O bloco mais protegido do dia, de preferência com notificações desativadas, gasto na implementação de um recurso ou correção que precisa de concentração sustentada.
Uma pausa genuína; muitos engenheiros relatam que esta é a primeira coisa que desaparece em uma crise e a primeira coisa que eles se arrependem de ter perdido.
Ler solicitações pull de colegas, formar pares para resolver um problema difícil e reuniões de design ou planejamento que tendem a ocorrer à tarde.
Finalizar e despachar o troco do dia, observar o desenrolar com segurança e deixar anotações para amanhã ou para quem estiver de plantão durante a noite.
Tempo pessoal e sono – a menos que seja uma semana de plantão, quando um alerta por telefone pode transformar as 3 da manhã em um incidente de produção não planejado.
Craft knowledge practitioners actually pass on — not motivation.
Quando um bug apareceu em algum lugar entre uma versão funcional e uma quebrada, pesquise binariamente o histórico em vez de observar a diferença - verifique o ponto médio e repita até que uma alteração permaneça em pé.
A mensagem de erro completa, o rastreamento de pilha e as linhas de log circundantes geralmente já contêm a resposta; pular direto para a fonte e adivinhar desperdiça a única evidência que o computador lhe deu gratuitamente.
Quando um recurso é difícil de adicionar, isso geralmente é um sinal de que o código está com formato errado para ele. Refatore primeiro, sem nenhuma mudança de comportamento, até que o recurso se torne uma diferença pequena e óbvia - então faça essa diferença.
Antes de excluir ou simplificar um código, um valor de configuração ou uma verificação que você não entende, descubra por que foi colocado ali. Pode ser uma proteção silenciosa contra uma falha que não acontecia há anos exatamente por esse motivo.
Código que não existe mais não pode ter bug, não pode confundir o próximo leitor e não pode precisar de atualização. A remoção de caminhos mortos e recursos não utilizados deve ser celebrada da mesma forma que o envio de um recurso.
Explique o problema em voz alta, linha por linha, para um colega ou até mesmo para um objeto inanimado antes de pedir ajuda. O ato de articulá-lo com precisão muitas vezes revela o bug antes que alguém responda.
O Visual Studio Code e os IDEs da JetBrains dominam; ambos agora criam preenchimento automático assistido por IA e conversam diretamente no editor.
O sistema de controle de versão padronizado por quase toda a indústria depois que Torvalds o escreveu em 2005; quase nada é enviado sem ele.
Os problemas Jira, Linear ou GitHub transformam um acúmulo de bugs e recursos em algo que uma equipe pode planejar para uma semana ou um trimestre.
Sistemas automatizados que criam, testam e implantam código em cada mudança, transformando uma liberação de um evento manual nervoso em um evento rotineiro.
Ferramentas como o GitHub Copilot agora escrevem uma grande parte das linhas que um engenheiro aceita, mudando o trabalho diário para revisão e direção, em vez de digitação.
Escolher uma linguagem, estrutura ou arquitetura moderna porque fica bem em um currículo e não porque se adapta ao problema, deixando para trás a complexidade que a próxima equipe terá que manter.
Correspondência de padrões para uma correção lembrada em vez de ler o que o programa está realmente relatando, o que pode queimar horas perseguindo a causa errada.
Destruir um sistema funcional para reconstruí-lo “corretamente” do zero é uma jogada notoriamente arriscada – a reescrita completa de seu navegador pela Netscape no final da década de 1990 é um caso amplamente citado em que custou à empresa sua liderança de mercado.
Encontra padrões e constrói modelos preditivos a partir de dados – um cargo de 2008 baseado em três séculos de contagem, teste e visualização de evidências.
AI-resistant 38 📦Constrói os sistemas que treinam, implantam, monitoram e controlam modelos de aprendizado de máquina em produção.
AI-resistant 54 🗺️Decide o que uma empresa deve construir a seguir e por quê – transformando as necessidades dos clientes, as metas de negócios e os limites de engenharia em um plano compartilhado que ninguém mais possui.
AI-resistant 50 🔐Protege sistemas, dados e pessoas, encontrando, prevenindo e respondendo a ataques digitais.
AI-resistant 63 🌿Lidera a estratégia, medição e relatórios que ajudam as organizações a reduzir os danos ambientais e sociais, ao mesmo tempo que cumprem as obrigações comerciais.
AI-resistant 66 🧾O guardião dos livros: herdeiro de um ofício tão antigo que inventou a própria escrita, agora negociando com o software construído para automatizá-lo.
AI-resistant 35Projeta e testa os algoritmos por trás da inteligência das máquinas, em um campo que agora corre para automatizar uma parcela crescente de seu próprio processo de pesquisa.
AI-resistant 50 🛰️Projeta, analisa e certifica as aeronaves, foguetes e espaçonaves que saem do solo, trabalhando com margens de segurança que não deixam margem para suposições.
AI-resistant 74 🌉A profissão que transforma rios, rochas e gravidade em pontes, estradas e água limpa – o comércio silencioso e pesado da civilização desde Imhotep.
AI-resistant 72 🔌Projeta e fabrica os transistores dentro de cada computador, telefone e arma, usando máquinas precisas o suficiente para que apenas algumas fábricas na Terra possam operá-las.
AI-resistant 60 🦾Projeta as máquinas que sentem, decidem e agem no mundo físico, onde o problema difícil nunca foi a inteligência, mas o próprio mundo.
AI-resistant 65 🔐Protege sistemas, dados e pessoas, encontrando, prevenindo e respondendo a ataques digitais.
AI-resistant 63 📦Constrói os sistemas que treinam, implantam, monitoram e controlam modelos de aprendizado de máquina em produção.
AI-resistant 54 🌬️Projeta, constrói e melhora sistemas eólicos, solares, de armazenamento e de rede que transformam recursos renováveis em eletricidade confiável.
AI-resistant 72