Uma questão de contexto
Publicado em Developer
Essa semana o Paul Graham sutilmente tirou o dele da reta depois da reação (justificada) da galera que usa Java. Segundo ele:
"I didn't mean by this that Java programmers are dumb. I meant that Python programmers are smart. It's a lot of work to learn a new programming language. And people don't learn Python because it will get them a job; they learn it because they genuinely like to program and aren't satisfied with the languages they already know."
Partindo dessa premissa, a gente já nasce sabendo Java. Ninguém a aprendeu, então "não dá um monte de trabalho" para quem não programa meleca nenhuma começar a programar em Java. Você pensa "vou programar em Java" e pronto. Que legal!
Se eu soubesse disso, tinha apelado, lá pelos idos de 1998/1999, para essa parte do cérebro inatada que só o Paul Graham conhece (e que egoísta, não contou para ninguém!) antes de ter um bom trabalho para aprender a escrever código Java, e pior, otimizá-lo e deixá-lo redondinho (se você não acredita que código Java pode ser otimizado e rodar redondinho, me desculpe, mas você é um estúpido - é tudo uma questão de contexto, como vou defender adiante).
Isso tudo por que eu queria aprender uma linguagem de programação nova, não por que era um "hype" (nem tinhamos tantas condições naquela época para termos os "hypes" que temos hoje na mesma intensidade) mas por que eu queria, e por que eu gosto de aprender coisas novas. Ah, você diz, igual o Paul Graham, que era para conseguir um emprego? Amiguinhos, nesse ponto Java naquela época era exatamente igual Python hoje em dia, o "quente" era outra coisa. Ou vocês pensam que tinha tanta demanda assim para escrever applets (argh!) naquela época? Se vocês estavam lá, sabem que não.
Então, eu aprendi Java justamente pela mesma razão que aprendi Python e tantas outras linguagens, quando dá tempo para isso, as vezes mais rápido, as vezes mais lento: por que eu gosto, certo? E não era por que estava insatisfeito também não. Hoje mesmo estou satisfeito com as linguagens que utilizo mas quero aprender mais. Aprender nunca é demais. Aí ele acertou no ponto "they genuinely like to program".
Antes de entrar na questão do contexto, deixa eu mencionar um artigo do Eric Sink (esse cara tem bagagem pra xuxu também) sobre o artigo do Paul e sobre como os "great hackers" podem ser vistos na indústria em geral. Analisando o artigo do Paul Graham e do Eric Sink chegamos à conclusão que os "great hackers" defendidos pelo Paul Graham são aquela pior espécie de gente que são birrentas, reclamonas e arrogantes.
São os tipos que querem um emprego na qual eles tenham todas as condições do mundo de se sentirem felizes com as ferramentas que utilizam e que só gostam de fazer as coisas que não são "chatas". Nada de mais com isso, mas é um genêro bem específico de lugar que vai ter tudo isso. Duvido que vocês nunca tiveram que fazer coisas "chatas", mesmo enquanto tinham algumas bem legais para se fazer. Por exemplo, que saco escrever documentação, mas se você é a pessoa mais inteirada sobre o assunto, não tem jeito né, desce a lenha no teclado, mesmo sendo maçante. O duro que é capaz de alguém me escrever dizendo "sua empresa devia ter alguém para escrever documentação" ...
Vejam bem que não estou dizendo que esses tipos de sujeitos não são inteligentes ou mesmo brilhantes. Mas que vantagem há nisso se eles não podem resolver alguns problemas simples, do ponto de vista de uma empresa? Não que você tenha que fazer coisas ridículamente simples, vocês sabem do que estou falando. Tipo "dá para resolver esse cálculo aqui da folha de pagamento" "blá! eu sou uma prima-donna da programação, esse tipo de coisas é pra neófitos, quero fazer uma teoria sobre a flutuação dos gastos de nossos funcionários comparado com a taxa de juros do mercado e blá blá blá". Não deixa de ser uma coisa interessante, mas como disse, é específico e poucos lugares vão te pagar um dinheirinho por isso. E a não ser que você esteja empregado em algum lugar puramente científico, você vai ter que fazer umas coisinhas chatas ás vezes.
Pior é uma situação do tipo: o "great hacker" tem todo o ambiente sob seu controle, utiliza a linguagem que quer, o SO que quer, e de repente a empresa tem que comprar uma solução para um problema específico (que o "great hacker" pode rejeitar fazer, se for um problema "bobo" no seu ponto de vista) que é feita em ... Visual Basic. Meu Deus! A besta das bestas do apocalipse infecta o ambiente esterilizado do "great hacker"! E agora? Os sistemas tem que ser integrados. Lógico que o "great hacker" pode rodar por exemplo Python no Windows para pegar dados ou fazer integração com o sistema (surpresa, Java roda no Windows também! :-), mas lógico que ele pode se recusar a TOCAR em um sistema desses se for um adepto do ponto purista do Paul Graham. Imagina se ele tem que fazer alguma coisa no Visual Basic, então! Ou mesmo em C, no Windows. Talvez peça para ser açoitado com chibatadas ao invés de tocar uma superfície tão blasfema quanto essa.
Isso nos leva a outro ponto: somos programadores ou saco de batatas? Eu adoro ter todo meu ambiente de acordo com as ferramentas que eu gosto, mas peraí, apareceu um problema, vamos ficar chorando as pitangas ou efetivamente consertá-lo?
Eu vou pela segunda opção. Lógico que se o problema consegue ser resolvido dentro da nossa "bolha de conforto", melhor, mas se não, mãos à obra, negada. Talvez isso rompa nossos "pré-conceitos" sobre a ferramenta, ou se não, que tal um bom desafio de poder falar depois "nossa, cara, eu fiz um programa usando aquela #$@$#@$@ de XYZ e ficou muito bom!"?
Aí que entramos na questão do contexto.
Deixa eu sair um pouco da questão de linguagem. Vamos dar uma olhada em contexto levando em conta música? Beleza? Vamos lá.
Eu gosto de tocar Thrash Metal. Por um bom tempo fiz parte do Nothing Face, gravei duas demo-tapes com os caras, e foi um período bem legal. Eu toco contrabaixo, e gosto de escutar tudo quanto é tipo de música, mas tocar é diferente. Só gosto de tocar pauleira. E quando disse gosto de quase todo tipo de música, isso quer dizer que não gosto de por exemplo ... pagode.
Detesto pagode, meu. Não consigo escutar. Mas olhem que interessante: eu tenho um amigo que toca pagode! Olhem a palavra também, amigo. O primeiro ponto aqui: respeito com as pessoas.
Eu acho a música dele horrível, e ele sabe disso. Ele acha a minha horrível, e eu sei disso. Mas a gente é amigo, não fica por aí se matando ou falando merda um do outro por que o estilo é diferente, mesmo que a ferramenta (o contrabaixo) seja a mesma. Inclusive trocamos idéia sobre ritmos e coisas afins da música.
Existe o respeito e a camaradagem que tanto falta nesse mundo de gênios e gurus atualmente (na verdade no auge dos meus 14/15 anos espinhentos e revoltados, achando que sabia tudo da vida e das pessoas - não que eu saiba hoje em dia - eu descia o cacete em pagode, mas estou presumindo que os "great hackers" hoje em dia sejam mais velhos que isso).
E eu e ele fazemos a coisa dentro do mesmo contexto: tocar música e se possível, levar ela às pessoas para que possam esboçar uma (se tudo correr bem, boa) reação à ela.
E dentro desse contexto, não importa o estilo, graças a Deus nós dois nos demos bem: modéstia a parte, quando eu tocava no Nothing Face os shows eram matadores, nós e a galera literalmente derrubavámos tudo e nos shows da banda de pagode do meu amigo a galera dança pra xuxu. Dentro do contexto, tudo que foi proposto foi executado de maneira extremamente satisfatória. Aí que a coisa tem seu valor.
O que eu quero dizer é o seguinte: mesmo na área que você gosta, alguma coisa diferente do seu ponto de vista não é lixo, se for bem-feita, dentro do contexto à que se propõe. Thrash Metal é feito para a galera se matar, pular do palco, balançar a cabeça, berrar. Pagode é para fazer a galera dançar. Se essas duas premissas básicas forem alcançadas, o que foi feito foi válido. Isso também invalida qualquer discussão sobre gosto musical. ;-)
Aí você me fala "ah, então quer dizer que um 'bloatware' enorme feito em Java, se cumprir sua função, é necessariamente um programa bom?". Não, não e não. Independente da ferramenta e do estilo, uma coisa tem que ser bem feita. Se não for, fica evidente. Então não quer dizer que em todo show de Thrash Metal a galera vai se matar e em que todo show de pagode a galera vai dançar. Se a música e a banda for ruim, esquece. Mesma coisa com softwares.
Se um programa Java é feito de maneira eficiente, vai rodar bem melhor que um feito todo remendado em Python, não importa a beleza da linguagem. Você tem que saber fazer alguma coisa que preste com a ferramenta escolhida ou disponibilizada à você.
Isso que é ser hacker "macho"! :-) Não adianta alguém te jogar um Visual Basic na mão e dizer "você tem que fazer isso em VB" e você sair correndo chorando (lógico que você pode vender o seu peixe enquanto isso - seja um evangelizador "não-nazista", por favor, da sua linguagem favorita). Procure ver o que dá para fazer que preste com a ferramenta e largue mão de ser cagão . Imagine se o MacGyver (lembram da "Profissão Perigo"?) quisesse um laboratório completo no meio do mato, ao invés de um chiclete, um cadarço de sapato e uma latinha de refrigerante, para resolver aquelas situações estapafúrdias? Ele ia morrer, coitado. :-)
Depois você pode até resmungar e xingar por ter que sair da sua "bolha de conforto", mas resolva o problema e o faça do melhor jeito possível. E respeite seu amigo, seu colega de trabalho, mesmo você não concordando com o método dele. Não tente ficar "jogando lixo no orgulho" do coitado, que isso é atitude de estúpido.
Não precisamos desse tipo de coisa que me leva hoje em dia, infelizmente, a ter o seguinte pensamento (espero realmente que isso mude para que possamos ter um mundinho melhor entre a galerinha tecnóloga): boas pessoas podem vir a ser ótimos programadores, mas infelizmente o inverso nem sempre pode-se afirmar. :-(
Comentários
Comentários fechados.
Sem nenhum comentário.
Artigos anteriores
- Pull requests em modo raiz - sex, 22 de dezembro de 2023, 09:57:09 -0300
- Qual a idade do seu repositório? - ter, 27 de dezembro de 2022, 12:50:35 -0300
- Utilizando ctags em projetos Rails mais recentes - qui, 24 de junho de 2021, 08:23:43 -0300
- Fazendo o seu projeto brotar - seg, 15 de julho de 2019, 08:57:05 -0300
- Learn Functional Programming with Elixir - sex, 02 de março de 2018, 18:47:13 -0300
- Ambiente mínimo - Driver Driven Development - qua, 23 de agosto de 2017, 15:15:03 -0300
- Ambiente mínimo - repositórios de código - dom, 16 de abril de 2017, 13:02:14 -0300
- Ambiente mínimo - terminal e navegador - dom, 02 de abril de 2017, 21:43:29 -0300
- Utilizando muitas gems no seu projeto? - sáb, 29 de outubro de 2016, 11:57:55 -0200
- Desenvolvedores e inteligência artificial - seg, 11 de julho de 2016, 09:09:38 -0300