O código sem rosto matará a programação e não faremos nada a respeito.


Durante a próxima discussão, um amigo expressou um pensamento que me atingiu muito. “Nos YaPs mais populares, existem muitas maneiras diferentes de fazer a mesma coisa. Isso leva a problemas. Mas no Go, nem tudo é assim. A filosofia da linguagem é que no Go diferentes desenvolvedores resolvem os mesmos problemas da mesma maneira. Portanto, seu código é fácil de ler, previsível e confiável. E as grandes empresas escolhem a Go. ” Esse é um argumento bastante poderoso que precisa ser cuidadosamente considerado antes de ser refutado.


Portanto, eu o espalhei duas vezes, agarrando-me à falta de genéricos, e levei uma idéia inteligente, morei com ela por vários dias e, em algum momento, formei minha visão sombria.


Meu trabalho é escolher a solução mais adequada entre um número infinito de combinações. É para isso que sou pago e é para isso que amo meu trabalho e, portanto, minha vida. Mas eles me dizem - uma super solução não é necessária. Você precisa do habitual. Porque o produto final é mais importante que sua implementação.


Se eles me jogam na rua e se enganam no meu lugar, ele pode facilmente trabalhar com o meu código. Portanto, a empresa ficará muito mais confortável. Os negócios não querem depender do acaso. A idéia de que o mau humor do desenvolvedor líder tire proveito dos negócios não atrai os principais gerentes. Tornaram-se gerentes de topo porque sabem como evitar situações em que seus negócios sagrados perdem dinheiro. E agora vivemos em uma época em que "bem feito" e "lucrativo" são duas coisas diferentes.


E eu entendo como chegamos a isso. Vou explicar agora, observe seus dedos:



Eu, como a maioria dos engenheiros, acredito que faço grandes coisas. O que eu invento, automatizo, faço com meu trabalho e cérebro, a vida de toda a humanidade é melhor, enquanto todos os obscurantistas apenas trituram a língua. Mas então eu tiro meu nariz do meu editor de código e fico horrorizada com o quão cruelmente estou enganada.


Que diabos estou fazendo?


Então, penso na arquitetura de um sistema altamente carregado, mas em 95% dos casos eles o usam para classificar selfies rapidamente com padrões e fotos de um cão favorito em um telefone. Então, estou desenvolvendo um cliente VPN, e o que eles farão com ele? Assista a todos os tipos de pornografia e filmes estúpidos de piratas?


Meu cérebro é servido por uma pequena lista de desejos minuto a minuto, para que as pessoas me tragam dinheiro, para que eu também satisfaça minha lista de desejos.


A TI faz coisas boas, mas sua porcentagem é insignificante. A maioria atende a necessidades malucas que simplesmente não existiam antes porque a TI não existia. Ou seja, os engenheiros não fazem grandes coisas; os engenheiros simplesmente mantêm a infraestrutura para transferir massa entre as pessoas.


Em tais circunstâncias, não é mais necessário escrever um bom código. Isso só é necessário para que eu me divirta mais trabalhando, e não vou me esgotar mais. Mas, mais cedo ou mais tarde, o gerente principal chega e diz: “É isso aí, pregue e faça a bala. É hora de cortar o saque. "


Em vez do “bem universal” abstrato, a TI aprendeu a aceitar a lista de desejos humilde e, somente por causa disso, se transformou em uma indústria gigantesca, onde centenas de milhões de pessoas trabalham. A programação costumava ser uma questão da elite, agora qualquer otário fica sentado por mais ou menos um ano e vai escrever código.


E quando ele entrar na indústria, não haverá tempo para aprofundar - o produto é necessário hoje à noite, caso contrário, perderemos dinheiro. Aprofundar e aprender tecnologia se transforma em um hobby, necessário apenas para não enlouquecer com a realização de sua própria inutilidade.


Em um sistema em que você precisa lançar um novo recurso no mercado uma vez por semana, você precisa de abordagens simples e ferramentas primitivas. Quando algum desenvolvedor legal cria uma nova tecnologia, ele tenta fazê-la ser demandada pela maioria, porque a demanda da maioria é o principal valor do mundo moderno. É por isso que existem tantas filosofias e outras aqui.


E eu acho - eu não preciso de toda essa merda. Isso tudo causa rejeição.


Se você prestar atenção, meu VSCode está repleto de sintomas perigosos. Meu tslint não me permite adicionar um espaço extra. Meu código não cria se eu nomeei uma variável com a letra errada. Meu compilador não funcionará porque eu não adicionei comentários ao método público. Tudo é simples aqui - escreva, pessoal, o mesmo código. Código sem rosto. Este não é um romance para você, qual é o estilo do autor ?!


Eu geralmente concordo que essas convenções são uma coisa boa, mas apenas desde que estejam relacionadas à aparência do código. O momento em que você tira a oportunidade de escolher como esse código funcionará é o meu pior pesadelo. Imagine um caso: você escreveu um módulo complexo e sensível ao desempenho, e eles lhe dizem: “Escute, é muito complicado. Vamos simplificar, não é importante que funcione pior. " Isso soa absurdo? E assim será. Sério. Sim, já é. Eles não adicionaram genéricos ao Go porque os genéricos são complexos.


Go é um efeito comercial, não uma solução de engenharia. Ele se contradiz. Aqui ele quer confiabilidade, e isso deixa a complexidade. Mas a complexidade do setor surgiu em termos de confiabilidade. Os genéricos existem apenas por uma questão de confiabilidade, a fim de antecipar possíveis erros no tempo de desenvolvimento. E sim, eles são bastante complicados.


Na programação, quero ser criativo. Quero ter um grande número de opções ao projetar um sistema. Simulamos a realidade no mundo das máquinas, mas tenho certeza: a realidade não é uma coisa simples, não há respostas certas e erradas. E sinto que tecnologias como a Go estão procurando respostas simples. Como, vamos tomar uma decisão certa para cada tarefa. Mas isso é uma farsa! Pode funcionar, mas sempre há uma solução melhor. E, sob a pressão do fato de não termos orçamentos para soluções de alta qualidade, acabamos com o software e ficamos desapontados com o fato de tudo funcionar mal.



A filosofia do código sem rosto quer me transformar em uma máquina que cola e copia o clichê. E, pensando nisso, chego a uma contradição ainda mais terrível.


Sempre acreditei que a mensagem básica do desenvolvimento é: "Tudo o que pode ser automatizado deve ser automatizado". Mas a ironia é que minha mensagem também é fatal.


Não estou pronto para fazer algo que uma máquina que eu possa construir possa fazer. Isso é irracional, e fui ensinado a ser racional. Mas como tenho que automatizar tudo, acontece que tenho que automatizar e automatizar - ou seja, o desenvolvimento. E acontece que devemos estar felizes com as línguas que gradualmente nos levam a isso. Ou seja, minha profissão, como a maioria das outras, em um mundo ideal não deveria existir.


O progresso não pode ser parado. Mas ele pode seguir de diferentes maneiras, das quais tenho certeza. Se a programação agora se voltar para a trilha Go e práticas sem rosto, chegaremos à própria curva e não à automação otimizada que você pode imaginar.


Minha solução para o problema é utópica e não resistirá às críticas. Entendo que seja tarde demais para oferecê-lo, mas ainda assim.


Eu separaria negócios e TI para que apenas organizações sem fins lucrativos possam fazer programação. E que sua prioridade deve ser uma profunda melhoria da tecnologia, livre do fluxo diário. Que a exigência de "liberarmos o que é, caso contrário o lucro desaparecerá" era moralmente inaceitável. Eu faria o possível para manter o limiar para entrar na programação o mais alto possível, para que as ferramentas não se adaptem ao desenvolvedor comum quando um engenheiro experiente e a graduação de cursos de ontem forem obrigados a escrever o mesmo código.


Sim, isso retardará o progresso por séculos e privará nossas vidas de todos os belos pães em que ficamos diariamente. Mas pelo menos isso retornará a idéia de progresso ao tipo em que acreditamos nos momentos de nossos mais fortes impulsos idealistas.

Source: https://habr.com/ru/post/pt434478/


All Articles