Programar é uma merda


Esse artigo é uma tradução de Programming Sucks do blog do Peter Welch, que me rendeu várias risadas/lágrimas e publicou o livro And Then I Thought I Was a Fish”


Todo amigo que eu tenho com um trabalho que envolve pegar algo mais pesado do que um laptop mais do que duas vezes por semana finalmente encontra uma maneira de escapar algo como isso em uma conversa:
“Bróder , você não trabalha duro. Eu trabalhei 4700 horas essa semana cavando um túnel sob Mordor com uma chave de fenda”.
Eles têm um ponto. Mordor é uma merda, e é certamente mais desgastante fisicamente cavar um túnel do que cutucar um teclado, ao menos que você seja uma formiga. Mas, para o bem do argumento, podemos concordar que o estresse e insanidade são coisas ruins? Maravilha. Bem-vindo ao mundo da programação.

Todas as equipes de programação são construídos por/de pessoas insanas

Imagine-se juntar uma equipe de engenharia. Você está animado e cheio de idéias, provavelmente acabou de sair da faculdade e com um mundo de designs limpos e belos, imponentes na sua unidade estética de propósito, economia e força. Você começa conhecendo Maria, líder do projeto de uma ponte em uma grande área metropolitana. Maria apresenta-lhe Fred, depois de passar pelas quinze verificações de segurança instalados por Dave por que Dave teve seu casaco roubado fora de sua mesa uma vez e bem… nunca mais. Fred só trabalha com madeira, então você pergunta por que ele está envolvido, já que essa ponte tem que permitir o tráfego da hora do rush cheio de carros, cheios de seres humanos mortais, a atravessar uma queda de 200 metros sobre corredeiras. Não se preocupe, diz Maria, Fred vai para lidar com as passarelas. Passarelas? Bem Fred fez um bom caso para passarelas e eles estão indo para adicionar ao apelo da ponte. Claro, eles vão ter que ser construído sem grades, porque há uma estrita regra de nada de grades imposta por Phil, que não é um engenheiro. Ninguém tem certeza do que Phil faz, mas é definitivamente algo cheio de sinergia e tem a ver com a administração superior, algo que nenhum dos engenheiros querem lidar com então eles simplesmente deixam Phil fazer o que ele quer. Sara, por sua vez, descobriu técnicas super-de-ponta de pavimentação, e colocou-os todos para o projeto da ponte, o que significa que você vai ter que construir em torno de cada um, como a ponte avança, uma vez que cada um exige meios de apoio e de segurança diferentes. Tom e Harry têm trabalhado juntos durante anos, mas têm uma rixa em curso sobre utilizar medidas métricas ou imperiais, e isso se tornou um caso de “quem chegar primeiro leva”. Esta tem sido uma dor de cabeça para as pessoas que estão de fato soldando as coisas juntos, que eles desistiram e apenas forçam, martelam, ou soldadam seu caminho ao longo do dia com o que as partes que servirem. Além disso, a ponte foi projetada como uma ponte suspensa, mas ninguém realmente sabia como construir uma ponte de suspensão, então o trabalho foi feito pela metade e, em seguida, foram adicionadas colunas de suporte extra para manter a coisa de pé, mas deixaram os cabos de suspensão porque eles ainda meio que seguram algumas partes da ponte. Ninguém sabe quais, mas todo mundo tem quase certeza que eles são partes importantes. Depois que as apresentações são feitas, você está convidado para vir com algumas idéias novas, mas acontece que você não tem nenhum, porque você é um engenheiro de propulsão e não sabe nada sobre pontes.

Será que você atrevessaria essa ponte? Não. Se ela de alguma forma fosse construída, todos os envolvidos seriam executados. No entanto, alguma versão desta dinâmica escreveu cada programa você já usou, software bancário, sites, e um programa onipresente que supostamente era para proteger as informações na internet, mas não o fez.

Todo o código é ruim

Cada programador, ocasionalmente, quando não tem ninguém em casa, desliga as luzes, prepara um copo de uísque, coloca em algum musica electrônica alemã leve, e abre um arquivo em seu computador. É um arquivo diferente para cada programador. Às vezes, ele o escreveu, às vezes eles se encontraram e ele sabia que tinha que guarda-lo. Eles lêem as linhas, e choram a sua beleza, então as lágrimas viram amargo, pois lembram-se do resto dos arquivos e o colapso inevitável de tudo o que é bom e verdadeiro no mundo.

Este arquivo é Bom Código. Tem nomes sensatos e consistentes para funções e variáveis ​​. É conciso. Ele não faz nada, obviamente, estúpido. Ele nunca teve a viver em estado selvagem, ou atender a uma equipe de vendas. Ele faz exatamente uma e mundana coisa específica, e ele faz isso bem. Ele foi escrito por uma única pessoa, e nunca tocado por outro. Lê-se como poesia escrita por alguém com mais de trinta anos.

Cada programador começa a escrever algum pequeno floco de neve perfeito assim. Então eles disseram na sexta-feira que eles precisam ter seiscentos flocos de neve escritos até terça-feira, para que eles trapaceiam um pouco aqui e ali, e talvez copiam alguns flocos de neve e tentar colocá-los juntos ou eles têm que pedir a um colega de trabalho para trabalhar em derrete-los e , em seguida, todos os flocos de neve dos programadores são levados fora juntos, de alguma forma inescrutável e alguém inclina um Picasso sobre ele, porque ninguém quer ver a imersão na urina de gato em todos e os seus flocos de neve derretendo quebrados na luz do dia. Na próxima semana, mais pás mais neve sobre ele para manter o Picasso de cair.

Há uma teoria de que você pode curar isso seguindo normas, exceto que existem mais “padrões” do que há coisas que os computadores podem realmente fazer, e esses padrões são todos variadamente melhorados e difamados pelas preferências pessoais do povo que os codifica, de forma que nenhuma coleção de código nunca foi para o mundo real sem fazer algumas dezenas de coisas idênticas de algumas dezenas de maneiras nem mesmo remotamente semelhantes. As primeiras semanas de qualquer trabalho serão apenas tentando descobrir como um programa funciona mesmo se você estiver familiarizado com todas as linguagens, estruturas, padrões e do mundo que estão envolvidos, porque os padrões são unicórnios.

Sempre haverá escuridão

Passei alguns anos crescendo com um closet no meu quarto. O closet tinha um design ímpar. Ele parecia normal no início, então você entrava para fazer as coisas no closet, e descobria que a parede à sua direita dava lugar a uma alcova, que dava para uma acessivel e pequena prateleira. Então você olha para cima, e parede na parte de trás da alcova cede mais uma vez em um cortina de absolutamente nada, onde nenhuma luz pode atingir e que você imediatamente identifica como o retiro de dia para cada monstro voraz que você mantem à distância com lanternas e bichos de pelúcia a cada noite.

Isto é o que é aprender programação. Você começa a conhecer as suas ferramentas úteis, então você olha em volta, e há algumas novas ferramentas acessíveis nas proximidades, e essas ferramentas lhe mostram o horror sem fim que sempre esteve ao lado de sua cama.

Por exemplo, digamos que você é um desenvolvedor web médiano. Você está familiarizado com as linguagens de programação, uma dúzia de toneladas de bibliotecas úteis, padrões , protocolos, que seja. Você ainda tem que aprender mais a uma taxa de cerca de um por semana, e lembrar-se de verificar as centenas de coisas que você sabe para ver se elas estão atualizadas ou quebradas e certificar-se que todos eles continuam a funcionar juntos e que ninguém reparou o erro em um deles que você abusou para fazer algo que você achava que era realmente inteligente em um fim de semana quando estava bêbado. Você tem tudo atualizado, o que é legal, então tudo para de funcionar.
“Mas que p…” você diz, e começar a caça para o problema. Você descobre que um dia, ja que algum idiota decidiu que, como um outro idiota decidiu que 1/0 deve ser igual a infinito, eles poderiam usar isso como uma abreviação de “Infinity” para simplificar o código. Em seguida, um não-idiota justamente decidiu que isso era idiota, que é o que o idiota original deve ter decidido , mas desde que ele não o fez , o não idiota decidiu ser babaca e fazer deste um erro de falha em seu novo compilador. Então ele decidiu que não ia contar a ninguém que este era um erro, porque ele é um babaca, e agora todos os seus flocos de neve são a urina e você não pode mesmo encontrar o gato.

Você é um especialista em todas essas tecnologias , e isso é uma coisa boa, porque essa experiência deixou você gastar apenas seis horas para descobrir o que estava errado, ao invés de perder o seu emprego. Você tem agora um pequeno fato extra para guardar na casa dos milhões de pequenos fatos que você tem que memorizar, porque muitos dos programas que você depende são escritos por babacas e idiotas.

E isso é apenas em sua própria area de atuação, o que representa uma fração tão minuscula de todas as coisas que há para saber em ciência da computação que pode se dizer que voce provavelmente não aprendeu nada. Não existe uma única pessoa viva sabe como tudo em seu MacBook de cinco anos de idade realmente funciona. Por que nós lhe dizemos para desligar e ligar novamente? Porque nós não temos a menor idéia do que há de errado com ele, e mais fácil de induzir coma em computadores e fazer que a sua equipe interna de médicos automáticos tentar descobrir isso por nós. A única razão de computadores de programadores funcionar melhor do que os dos não programadores é que programadores sabem computadores são crianças esquizofrênicas com doenças auto-imunes e que quando eles são ruins não se deve bater neles.

Muito trabalho é feito na internet e a internet é o seu próprio inferno especial

Se lembra daquelas coisas sobre pessoas loucas e código ruim? A internet é isso, exceto que é, literalmente, um bilhão de vezes pior. Websites que são nada mais que carrinhos de compras glorificados, com talvez três páginas dinâmicas, são mantidos por equipes de pessoas ao trabalhando intensamente, porque a verdade é que tudo está quebrando o tempo todo, em todos os lugares, para todos. Agora alguém que trabalha para o Facebook está recebendo dezenas de milhares de mensagens de erro e tentando freneticamente encontrar o problema antes de toda a fachada desmorone. Há uma equipe em um escritório do Google que não dorme há três dias. Em algum lugar há uma programadora de banco de dados cercado por garrafas vazias de Coca Cola, cujo marido pensa que ela está morta. E se essas pessoas param, o mundo queima. A maioria das pessoas nem sequer sabem o que os administradores de sistemas fazem, mas confie em mim, se todos eles tiveram uma pausa para o almoço ao mesmo tempo eles nao conseguiriam chegar à deli antes de você gastar todas suas balas para proteger seus produtos enlatados de bandos de mutantes vagando.

Você não pode reiniciar a internet. Trilhões de dólares dependem de uma teia de aranha frágil de acordos não oficiais e código “bom o suficiente para agora” com comentários como “TODO: CORRIGIR ISSO, HACK MUITO PERIGOSO MAS EU NÃO SEI O QUE HÁ DE ERRADO” que foram escritos há dez anos. Eu nem sequer mencionei as legiões de pessoas que atacam várias partes da internet para espionagem e lucro ou porque estão entediados. Já ouviu falar de 4chan? 4chan pode destruir sua vida e negócios, porque eles decidiram que não gostam de você em uma tarde, e nós nem sequer nos preocupamos com o 4chan porque uma outra bomba nuclear não faz muita diferença em um inverno nuclear.

Na internet, não há problema em dizer: “Sabe, isso meio que funciona algumas das vezes, se você está usando a tecnologia certa “, e BAM! é parte da internet agora. Qualquer um com algumas poucas centenas de dólares e um computador podem pegar um pouco da internet e colocar tudo pedaços de código corte horrível que quiserem e, em seguida, anexar o seu pouco para um monte de grandes pedaços e tudo fica um pouco pior. Mesmo os bons programadores não se preocupam em aprender as especificações arcanas descritas pelas organizações de pessoas criadas para implementar algumas unicórnios, então todo mundo passa metade do seu tempo lidando com o fato de que nada combina com qualquer coisa ou faz algum sentido e pode quebrar a qualquer momento e nós apenas tentamos encobri-lo e esperar que ninguém perceba.

Aqui estão as regras secretas da internet: cinco minutos depois de abrir um navegador pela primeira vez, um garoto na Rússia tem o seu número de CPF. Você se inscrever em algum serviço? Um computador na NSA agora rastreia automaticamente a sua localização física para o resto de sua vida. Enviou um e-mail? O seu endereço de e-mail acaba de subir em um outdoor na Nigéria.

Essas coisas não são verdadeiras porque ninguem se importa e não tenta impedi-los, são verdade porque tudo está quebrado, porque não há bom código e todos estão apenas tentando mantê-lo funcionando. Esse é o seu trabalho, se você trabalha com a internet: esperando que a última coisa que você escreveu seja boa o suficiente para sobreviver por algumas horas para que você possa comer o jantar e pegar um cochilo.

Nós não começamos loucos, estamos sendo levados à loucura

ERRO : Tentativa de analisar HTML com expressão regular; sistema retornou Cthulhu.

Engraçado, não é? Não? Que tal essa conversa:

“Isso é chamado arrayReverse?”
“s/camel/_/ “
“Legal, obrigado.”

Esse cara não foi útil? Com o camel? Isso não parece ser uma resposta apropriada? Não? Que bom. Você ainda pode encontrar Jesus. Você ainda não gastou tanto da sua vida lendo código e começou a falar usando ele. O cérebro humano não é particularmente bom em lógica básica e agora há toda uma carreira de fazer nada alem de lógica muito, muito complexa. Cadeias enormes de condições e requisitos abstratos tem que ser escolhido para descobrir coisas como vírgulas faltantes. Fazendo isso todos os dias te deixa num estado de afasia leve que conforme você olha para o rosto das pessoas enquanto elas estão falando, você não sabe se terminaram, porque não há ponto e vírgula. Você mergulha em um mundo de insignificância total de onde o que importa é uma pequena série de números que entrou em um labirinto gigante de símbolos e uma série diferente de números ou uma foto de um gatinho saiu do outro lado.

O impacto destrutivo sobre o cérebro é demonstrado pelas linguagens de programação que as pessoas escrevem. Este é um programa :

# include <iostream> int main (int argc , char ** argv ) { std :: cout << "Ola mundo!" << Std :: endl; return 0; }

Esse programa faz exatamente a mesma coisa que este programa:

`r `` `` `` `` ``` . H.e.l.l.o. . w.o.r.l.di

E este programa :

> + + + + + + + + + [ < + + + + + + + + > — ] < > + + + + + + + [ < + + + + > — ] . . < + + + + + + + + .. + + + . [ — ] > + + + + + + + + [ < + + + + > — ] . < > + + + + + + + + + + + [ < + + + + + + + + > — ] < — . — ——— . + + + . . . ——— ———— [ — ] > + + + + + + + + [ < + + + + > — ] < + . [ — ] + + + + + + + + + + .

E esta:

Ook . Ook ? Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook ! Ook ? Ook ? Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook ? Ook ! Ook ! Ook ? Ook ! Ook ? Ook . Ook ! Ook . Ook . Ook ? Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook ! Ook ? Ook ? Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook ? Ook ! Ook ! Ook ? Ook ! Ook ? Ook . Ook . Ook . Ook ! Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook ! Ook . Ook ! Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook ! Ook . Ook . Ook ? Ook . Ook ? Ook . Ook ? Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook ! Ook ? Ook ? Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook ? Ook ! Ook ! Ook ? Ook ! Ook ? Ook . Ook ! Ook . Ook . Ook ? Ook . Ook ? Ook . Ook ? Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook ! Ook ? Ook ? Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook ? Ook ! Ook ! Ook ? Ook ! Ook ? Ook . Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook . Ook ? Ook . Ook ? Ook . Ook ? Ook . Ook ? Ook . Ook ! Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook ! Ook . Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook . Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook ! Ook . Ook . Ook ? Ook . Ook ? Ook . Ook . Ook ! Ook . Ook ! Ook ? Ook ! Ook ! Ook ? Ook ! Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook . Ook ! Ook .

E uma vez alguém escreveu uma linguagem de programação que deixou alguém escrever isto:

#:: ::-| ::-| .-. :||-:: 0-| .-| ::||-| .:|-. :|| open(Q,$0);while(){if(/^#(.*)$/){for(split(‘-’,$1)){$q=0;for(split){s/| /:.:/xg;s/:/../g;$Q=$_?length:$_;$q+=$q?$Q:$Q*20;}print chr($q);}}}print”n”; #.: ::||-| .||-| :|||-| ::||-| ||-:: :|||-| .:| “

Segundo o autor , esse programa é “duas linhas de código que analisam duas linhas de comentários incorporados no código para ler os números maias que representam os caracteres ASCII individuais que compõem o título da revista, proferida em 90 graus de arte ASCII rodado.”

Esse programa ganhou um concurso, porque sim. Você quer viver em um mundo assim? Não. Este é um mundo de onde se pode fumar um maço por dia e ninguém questiona. “Claro que ele fuma um maço por dia , quem não fumaria?”. Eventualmente, cada programador acorda e antes que eles estão plenamente conscientes que vêem todo o seu mundo e todas as relações nele como pedaços de código , e eles trocam histórias sobre ele como se viagens de ácido que provocam sonolencia normais e acontecem com todo mundo. Este é um mundo onde as pessoas evitam o sexo para escrever uma linguagem de programação para orangotangos. Todos os programadores estão forçando seus cérebros para fazer coisas cérebros nunca foram feitos para fazer em uma situação que nunca pode fazer melhor, de dez a quinze horas por dia, cinco a sete dias por semana, e cada um deles está lentamente ficando louco.

</rant>

Então, não, eu não sou obrigado a ser capaz de levantar objetos pesando 30kg. Eu troquei isso pela oportunidade de cortar pêlos pubianos de Satanás, enquanto ele janta do meu crânio aberto para que alguns pedaços de internet continuem a trabalhar por mais alguns dias.


Quando eu li esse texto há um tempo atrás, achei ele muito engraçado e real. Eu quis traduzir para que pessoas que não sabem ou não curtem ler inglês tivessem uma idéia de quão exaustivo mentalmente pode ser a vida de quem trabalha com computadores.

Fiz a tradução empolgado, mas como disponho de tempo limitado, só pude usar 2–3 horas do meu dia. É claro que com isso a tradução ficou aquém da peça original e eu acho isso normal até mesmo em traduções feitas com mais cuidado. Ler o texto original é quase sempre muito melhor. Linguagens tem inúmeras facetas e sutilezas. Traduções muitas vezes não conseguem capturar isso.

E por isso, claro que eu iria receber email de alguém na internet reclamando. Ela está “beeeeeem mal feita”. E aparentemente, se eu gosto da tradução, e se eu quero dar a oportunidade de mais pessoas lerem eu preciso melhorar! Pelo visto é um dever cívico entregar traduções gratuitas e sem erros.

Se você quer me ajudar com a tradução, pode fazer alterações aqui nesse gist que eu prometo incorporar aqui na tradução (se eu achar que de fato fica melhor, claro). Pode também deixar um comentário no parágrafo se estiver com preguiça. Contribuições são bem vindas, exceto se você for o cara do email.