Skip to content

💻Craft & Know-How

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.

Share

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.

What the work demands

889074807083
Decomposição do problema
88
Depuração
90
Projeto do sistema
74
Comunicação e colaboração
80
Teste e qualidade do código
70
Aprendizagem contínua
83

Decomposição do problema

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.

Depuração

Restringir sistematicamente onde e por que um sistema se comporta mal, em vez de adivinhar e mudar as coisas até que funcione.

Projeto do sistema

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.

Comunicação e colaboração

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.

Teste e qualidade do código

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.

Aprendizagem contínua

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.

A day in the life

Caixa de entrada, standup e triagemTrabalho profundo: escrever códigoAlmoçoAvaliações, emparelhamento e reuniõesDepuração, implantações e encerramentoFora do horário (principalmente) 036912151821 24h
  1. 7–9 Caixa de entrada, standup e triagem

    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.

  2. 9–12 Trabalho profundo: escrever código

    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.

  3. 12–13 Almoço

    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.

  4. 13–16 Avaliações, emparelhamento e reuniões

    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.

  5. 16–19 Depuração, implantações e encerramento

    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.

  6. 19–7 Fora do horário (principalmente)

    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.

The know-how

Craft knowledge practitioners actually pass on — not motivation.

01

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é.

Depuração de pesquisa binária padrão, automatizada pelo comando bisect do Git
02

Leia a falha antes de ler o código

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.

Ecoado em Brian Kernighan e Rob Pike, The Practice of Programming (1999)
03

Facilite a mudança e depois faça a mudança fácil

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.

Kent Beck
04

Cerca de Chesterton

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.

G. K. Chesterton, The Thing (1929), adotado como folclore da engenharia
05

Excluir código é um progresso

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.

Repetido por Jeff Atwood, Coding Horror, 2007 ("o melhor código é nenhum código")
06

Depuração de pato de borracha

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 programador pragmático, Andrew Hunt e David Thomas (1999)

Tools of the trade

Editor de código/IDE

O Visual Studio Code e os IDEs da JetBrains dominam; ambos agora criam preenchimento automático assistido por IA e conversam diretamente no editor.

Git

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.

Rastreador de problemas

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.

Pipeline de CI/CD

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.

Assistente de codificação de IA

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.

How people fail at it

Desenvolvimento baseado em currículo

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.

Não lendo a mensagem de erro

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.

A reescrita do big bang

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.

Similar professions

Continue exploring

Keep exploring

More in Engineering & Technology

🤖

Pesquisador de IA

Projeta 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
🛰️

Engenheiro Aeroespacial

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
🌉

Engenheiro Civil

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
🔌

Engenheiro de Semicondutores

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
🦾

Engenheiro de Robótica

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
🔐

Especialista em segurança cibernética

Protege sistemas, dados e pessoas, encontrando, prevenindo e respondendo a ataques digitais.

AI-resistant 63
📦

Engenheiro MLOps

Constrói os sistemas que treinam, implantam, monitoram e controlam modelos de aprendizado de máquina em produção.

AI-resistant 54
🌬️

Engenheiro de Energia Renovável

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