404: Sanidade Não Encontrada — A Vida Trágico-Cómica de um Programador
Um desabafo de programador: do stand-up ao deploy de sexta-feira, passando por code reviews, clientes impossíveis e chamadas às 3 da manhã.
Isto é um shout. Um desabafo. Um rant de um programador que já passou dos limites. Se és programador, vais-te reconhecer. Se não és... lê por tua conta e risco.
Capítulo 1: Acorda e Cheira o Café (A não ser que a Máquina de Café Esteja Avariada)
O despertador grita contigo como um moderador do Stack Overflow que acabou de ver alguém perguntar "como é que se faz um loop em JavaScript" — julgador, alto, e completamente farto das tuas merdas.
Arrastaste-te para a cama às 3 da manhã porque estavas à procura de um bug. Um bug glorioso, esquivo, que afinal era... undefined is not a function.
Tu sabias isso. O teu IDE sabia isso. Mas às 2 da manhã, o conhecimento é opcional.
Cambaleias até à cozinha. A máquina de café pisca para ti. Código de erro: E-04. Já procurei o significado uma vez. É "LOL desenrasca-te, nerd."
Primeiro problema do dia: o fornecimento de cafeína está crítico. Alerta vermelho. Isto não promete nada de bom.
Capítulo 2: A Daily Stand-Up (Também Conhecida como o Círculo de Mentiras)
Entras no Zoom. Ou no Slack huddle. Ou naquela equipa que ainda usa Google Meet por alguma razão.
A arte do stand-up: o que dizes vs o que realmente queres dizer
As regras são simples — todos mentimos, e todos sabemos que estamos a mentir:
Project Manager: "Então, o que fizeste ontem?"
Tu: "Fiz progressos significativos na tarefa." (Tradução: passei 6 horas a tentar centrar uma div e outras 2 a ver tutoriais de debugging no YouTube.)
Senior Dev: "Refatorei código legado." (Tradução: parti tudo e agora a aplicação fala em códigos de erro.)
Estagiário: "Ainda estou a configurar o ambiente." (Estamos na 4ª semana. Ele diz isto desde o primeiro dia.)
Depois vem a pergunta. Aquela que congela a tua alma:
PM: "Algum impedimento?"
Hesitas. Vais admitir que o npm install invocou um demónio do inferno das dependências e que agora a node_modules pesa mais que o kernel do Linux?
Claro que não. Sorris.
Tu: "Não, está tudo bem!"
Agora és mentiroso. Bem-vindo ao agile.
Capítulo 3: O Mito do "Na Minha Máquina Funciona"
Finalmente arranjas o bug. Sacrificaste um rubber duck, três bebidas energéticas e o último resquício de dignidade. Mas funciona.
Fazes push para o main. O CI fica verde. Carregas em Deploy para Produção. Sentes-te um deus.
Cinco minutos depois:
QA Engineer: "A aplicação está partida."
Tu: "Impossível. Na minha máquina funciona."
QA: "A tua máquina não é a realidade."
Afinal esqueceste-te de uma variável de .env que só existe em produção. Ou a migração da base de dados correu pela ordem errada. Ou o build pipeline tinha em cache uma versão da semana passada. Quem sabe. O universo odeia-te.
Os RH estão a reconsiderar a caneca de "Jogador de Equipa" que te deram.
Capítulo 4: Code Review — Os Jogos da Fome
Abres um PR. 47 linhas alteradas. Código limpo. Estás orgulhoso.
Seis horas depois:
Senior Dev: "Já pensaste em usar um design pattern diferente?"
Senior Dev: "Esta função é demasiado longa. Deviam ser 3 funções."
Senior Dev: "Na verdade, este ficheiro todo devia ser um microserviço."
Senior Dev: "Ah, e faz rebase para o main, se faz favor."
Fazes rebase. O universo colapsa. O Git mostra agora 300 conflitos.
Fechas o PR. Abres uma nova carreira na agricultura de cabras.
Capítulo 5: O Cliente que Quer o Facebook por 200€
O teu PM marca uma reunião com um novo cliente.
Cliente: "Queremos uma plataforma como o Facebook. Mas com IA. E blockchain. E metaverso."
Tu: "Qual é o orçamento?"
Cliente: "Uns 200€. E visibilidade."
Morres um bocadinho por dentro.
Cliente: "Mas o meu sobrinho fez um site em WordPress uma vez. Diz ele que é fácil."
Pesquisas no Google "como sobreviver a uma reunião com um cliente sem chorar".
Spoiler: não há resposta no Stack Overflow para isso.
Capítulo 6: O Loop Infinito do Debugging
São 6 da tarde. Estás nas trincheiras.
Já pesquisaste o mesmo erro 47 vezes no Google. Encontraste um tópico do Stack Overflow de 2008. A resposta aceite diz "Eu também tive este problema, nunca resolvi."
Tentaste:
- Reiniciar o IDE
- Reiniciar o computador
- Reiniciar a vida (afastar-te e voltar)
Nada funciona.
Depois, às 2 da manhã, num momento de clarividência divina... percebes: esqueceste-te de um await.
A Promise estava a falhar silenciosamente. Durante horas. O código corre agora. Choramingas baixinho para o teu colega de casa não ouvir.
Os 5 estágios de luto do debugging — como é que realmente se resolve um bug
Capítulo 7: A Doce Libertação do Dia de Deploy
Sexta-feira. 16:58. Testaste tudo. Puseste os pontos nos is e os is nos pontos. Sacrificaste um teclado mecânico aos deuses da tecnologia.
Carregas em DEPLOY.
O build falha com:
Error: Something went wrong.
Obrigado, Capitão Obviedade.
Vais aos logs. Os logs não dizem nada. Vais ao Jenkins. O Jenkins está em baixo porque alguém desligou o servidor para carregar o telemóvel.
História verídica. Empresa diferente, mesma dor.
Fazes o deploy na segunda-feira. Funciona na perfeição. Ninguém nota. Como deve ser.
Capítulo 8: On-Call — O Turno da Noite que Ninguém Pediu
O telemóvel toca às 3:17 da manhã. É o PagerDuty.
Um servidor está em baixo. Não é o teu servidor. Nem sequer sabes que servidor é. Mas estás de prevenção, por isso é o teu problema.
Fazes login. Abres o Grafana. Está tudo a arder. Vais aos logs. Os logs dizem que o servidor ficou sem memória. Por causa de uma memory leak. Que mencionaste na code review. Que foi ignorada.
Reinicias o servidor. Escreves um post-mortem às 4 da manhã. Ninguém vai ler aquilo.
Mas hey — recebes um "obrigado" no Slack de um VP. Fica bonito na tua lápide.
Capítulo Final: Porque é que Fazemos Isto Outra Vez?
Há uma coisa que ninguém te diz sobre programação.
O trabalho é maioritariamente sofrimento. Ler código que não devia existir. Explicar à tua mãe o que fazes para viver pela 50ª vez. Ver um junior ser promovido porque é melhor no Jira do que tu.
Mas depois... o teu código funciona. Aquele momento em que tudo encaixa? Euforia pura.
Aquela sensação quando resolves um bug que te fez questionar a tua existência? É como heroína, mas mais barata (e legal, na maioria dos casos).
Por isso continuas. Porque algures entre os erros de undefined, os clientes que acham que "ágil" significa "faz mais depressa e de borla," e a 47ª reunião que podia ter sido um email... lembras-te:
És um feiticeiro. Transformas cafeína em software. Constróis castelos de uns e zeros. Fazes o computador fazer o que queres, mesmo quando ele luta contra ti.
E isso é bastante fixe.
FIM
(Até ao próximo bug aparecer. O que é daqui a aproximadamente 5 segundos.)
Epílogo: A Oração de um Programador
Caros Deuses da Tecnologia,
Fazei com que o meu código compile.
Mantende as minhas dependências sãs.
Livrai-me do ficheiro PHP legado que ninguém percebe.
Concedei-me a serenidade para aceitar os bugs que não posso corrigir,
A coragem para corrigir os bugs que são realmente minha culpa,
E a sabedoria para culpar o framework.
E se puderdes fazer com que o npm install funcione à primeira...
Era fixe.
Amém.
Bónus: Os 5 Estágios de Luto do Programador
| Estágio | Monólogo Interno |
|---|---|
| Negação | "Deve ser um problema de cache. Vou limpar." |
| Raiva | "QUEM É QUE ESCREVEU ISTO." (Foste tu. Há 6 meses.) |
| Negociação | "Se eu só adicionar mais um if..." |
| Depressão | "Devia era ter sido padeiro." |
| Aceitação | "Não é um bug. É uma funcionalidade não documentada." |
Alguma coisa disto bateu demasiado perto de casa? Deixa um comentário abaixo. Ou não. Vou assumir que estás ocupado a fazer debugging.
Partilhar
Comentários 0
Ainda sem comentários — sê o primeiro.