coverprogrammers2

Programadores vão queimar no inferno (só que mais)

Ou “Muito bem, Diogo, mas você ativou a minha carta armadilha…”

Sou nerdão de design. Me lembro que durante o desenvolvimento do Satellite Rush lá na Kimeric Labs nós recebiamos muito um feedback específicos dos nossos testers: “O personagem é muito lento.”

O problema é que isso era totalmente intencional. Desde sua gênese o Satellite Rush tinha como premissa que o seu personagem não é um herói. O desafio, portanto, era passar a sensação de impotência sem fazer o personagem ser efetivamente impotente. A equipe de design, eu e o Rafael – que, alias, foi quem me apresentou o Diogo -, batíamos muita boca com a galera de programação, que queria seguir o feedback à risca e deixar o personagem mais rápido. Ia versão, voltava versão e não conseguíamos chegar a um consenso. Afinal de contas, tínhamos dados colhidos no playtest de que uma coisa era comprovadamente melhor do que a outra, certo?

Um dia eu e Rafa, cansados da discussão, sentamos e começamos a pensar juntos em como resolver o problema. Depois de algum tempo de brainstorm fizemos uma nova build com uma ideia que tivemos pra provar nosso ponto. Jogamos ela no nosso grupo de playtesting, que envolvia os membros da equipe, e o resultado foi que “Nossa, bem melhor de controlar assim” foi um dos comentários que mais recebemos. O feedback negativo sobre a velocidade do personagem tinha desaparecido com 100% de sucesso.

“Tá, mas vocês aumentaram a velocidade bastante, né?”, perguntava a equipe.

Não. Nós, inclusive, tínhamos diminuído a velocidade. O que aconteceu é que trocamos a animação antiga, bastante rígida, por uma nova, bem mais dinâmica. Em especial, nós aumentamos a velocidade da animação do personagem sem mexer um milésimo na velocidade de caminhada dele.

Um tempo depois ouvi um dos membros da equipe comparar nosso trabalho com “espelhos e fumaça”.

Eu odeio vocês programadores e sua mágica invisível

Seguido do post da semana passada, exigi do Diogo direito de resposta. Loguei furiosamente no editor de posts do blog e fiquei horas olhando pra página em branco pensando no que eu ia dizer e na evidência que eu ia apresentar pra que me levassem a sério. Foi uma conclusão triste quando eu percebi de que seria muito difícil dar exemplos concretos para a minha fala, uma vez que o tipo de coisa que chega aos olhos dos consumidores raramente é o trabalho de programação.

Acho o trabalho dos programadores lindo. Ter a capacidade de fazer uma coisa burra feito um computador se comportar exatamente da maneira que você quer a ponto de eu ser dependente dos softwares que uso pra fazer 90% do meu trabalho é fantástico.

Num primeiro momento é fácil chegar à conclusão de que é um trabalho que requer muita humildade, uma vez que o seu trabalho é totalmente higiênico – é o mínimo necessário pro produto funcionar – e invisível – o usuário final nunca tem contato com ele ou entende como ele funciona. Citar qualquer caso específico que teve algum tipo de repercussão na mídia pareceria cherry picking da minha parte, porque na maioria das vezes o trabalho dos programadores não chega ao público de maneira clara. Exceto quando chega.

quotes
Eu não inventei uma vírgula disso. Juro.

Não tão recentemente, uma enxurrada de manifestações à respeito da importância de aprender a programar como pedra angular do futuro vem pipocando pela internet. Não acredita em mim? Aquela frase toda em roxo ali não é um link só; são vários, cada um deles sobre a mesma porra de assunto.

Pelos mesmos motivos que parece requerer humildade, programação tem potencial pra incentivar – como acontece – uma quantidade absurda de arrogância. Se o seu trabalho é higiênico e necessário pra que a coisa cumpra o mínimo, é fácil chegar à conclusão de que você é o profissional mais importante da equipe. Se ninguém vê ou entende o que você fez, quer dizer que é impossível te responsabilizarem pelas merdas que você faz a não ser que entendam código.  Isso se soma ao fato de que vivemos um momento da sociedade onde nós ainda estamos engatinhando para longe da mentalidade puramente cartesiana e determinística que é tão atraente em cursos de ciências exatas.

Créditos: Saturday Morning Breakfast Cereal
Créditos: Saturday Morning Breakfast Cereal

O resultado dessa cultura cancerosa é que existe um sem número de profissionais de engenharia que se sentem donos de seus ambientes de trabalho porque de alguma maneira se envaideceram de seus estudos acadêmicos e acham que viraram O Demônio de Laplace, capazes de desatar qualquer nó com seus cérebros matemáticos superdesenvolvidos. Tudo vira métricas, dados, comprovação estatística, pesquisas quantitativas, iterações infinitas – todas ótimas ferramentas caso você saiba o que está fazendo, mas Peste Negra esperando pra acontecer nas mãos de gente metida à besta.

Ferramentas, inclusive, que são usadas pra acabar com qualquer discussão saudável, dando a entender que se não existe comprovação lógica matemática estatística métrica meu-piru-é-de-programação tá errado, e logo a opinião do engenheirão tá mais correta. Ah, a maioria não concorda? Então não dá pra fazer, e vocês precisam que eu consiga fazer pra seguir em frente. É muito fácil atravancar o processo de desenvolver um projeto até todo mundo concordar com você quando a equipe depende do seu trabalho pra seguir em frente.

Nem tudo pode ser solucionado com lógica matemática. Caso contrário não existiriam campos imensos de ciências até hoje discutindo sobre as coisas. Caso contrário todo o corpus de conhecimento da engenharia seria unificado e incontestável dentro da academia e não é isso que acontece. A lógica matemática não funciona no mundo real porque ele é feito de pessoas e não de números.

Ai que escândalo, Daniel. Se tá funcionando, que mal tem?

Aí é que mora o problema. Estar funcionando e estar certo são coisas diferentes. Se o objetivo do seu produto é ser funcional, perfeito, vamos seguir a pipeline lógica e encontrar as melhores soluções mecânicas/digitais. Mas uma vez que sejam cumpridos os critérios lógicos, ainda existe um número infinito de soluções corretas, e o impacto real.

Imagina só: a parede do seu quarto tá descascando, então você contrata um cara pra pintar as paredes. Você e sua cara-metade vão passar um fim de semana no chalé pra dar tempo do indivíduo terminar o serviço, mas quando você chega em casa se depara com a sua parede tomada pela rendição artística de uma batalha aérea entre pênis voadores de facções rivais.

Tem tinta cobrindo sua parede. A tinta não tá escorrendo. Sua parede não caiu. Pra todos os efeitos, você ainda pode morar na sua casa. Mas agora tem pintos na parede. Tranquilo?

Já estou vendo a enxurrada de observações de pessoas de mente lógica falando “Mas você não explicou direito”; “mas o pintor não testou pra ver se os donos da casa iam gostar”. Ah, agora que a cagada já tá feita é muito fácil enxergar os motivos, mas é o óbvio ululante que o que aconteceu aqui foi uma falha catastrófica de projeto, e projetar não é uma tarefa lógica. Ou melhor, é sim, mas a não ser que o camarada tenha estudado muito além da ilha da lógica matemática, ele provavelmente não conhece todos os fatores sensíveis que influenciam no resultado de um projeto. Um produto tem zilhões de objetivos para além de ser funcional.

Se você é engenheiro e está ficando puto lendo isso porque não tem lógica: não é porque você não enxerga a lógica por trás de algo que está sendo feito que ela não está lá.

“Ah, mas isso é uma falácia lógica. Você está me cobrando fé.”

Não; estou te cobrando que você pare de ser um babaca arrogante. É óbvio que você, em cinco minutos, não vai enxergar a lógica por trás de algo que uma pessoa levou uma vida inteira estudando pra entender.

Eu sei que quando o cara falou “espelhos e fumaça” ele estava menosprezando o trabalho de design. Foda-se. Encarei como um elogio. Sem meus espelhos e fumaça que estudei durante toda a minha vida acadêmica e até parte da infância, tu não ia conseguir vender nem pão quente na feira. Filho da puta.

Criem ovários e assumam a responsabilidade

Essa galera domina todas as áreas profissionais, cada um com suas especializações. Todo o trabalho de programação é essencial e de primeira importância, sem o qual o resto todo não funciona. Fora a infinidade de possibilidades e portas que isso abre. Eu morro de inveja disso. Como desenvolvedor de jogos o meu sonho é ter a capacidade de ignorar a realidade e criar uma realidade só minha com as minhas regras e minhas histórias dentro de um computador e ainda ficar rico fazendo isso.

Se vocês tem um trabalho tão misterioso, tão essencial, respeitado pela sociedade e talvez nunca vão entender o que é ser menosprezado porque o produto do seu trabalho parece acessível e óbvio, assumam a responsabilidade que vem com o resto da equipe ser dependente do seu trabalho ao invés de usar isso pra se auto-afirmar e menosprezar os outros.

Lógico que bons programadores sabem que eles não sabem de tudo, e que quando eu falo que tenho inveja eu tô brincando. Mas tá na hora do lead programmer da Soluções Lógicas para Macacos Pelados LLC. do vale do silício parar de endeusar programação e começar a entender que em volta de todo bom produto existe um caminhão de profissionais de diferentes áreas, sem os quais os engenheiros não iam conseguir vender nem pão quente na feira.

Parem de menosprezar as outras profissões e achar que só porque você não entendeu tá errado. Deixem isso pra Gerência de Projetos.

Uma opinião sobre “Programadores vão queimar no inferno (só que mais)”

  1. Ahá! Como engenheiro de formação e daqueles que só pra botar mais pilha ainda falam que engenharia é melhor que ciência e sistemas (porque a pilha tem que aumentar, essa é a real), acho muito bacana esse ponto.

    A parte de espelhos e fumaça é essencial. Pombas, a primeira coisa que pensei quando tava lendo o texto e tava na parte da velocidade do personagem foi “ele não precisa ser rápido, só parecer rápido”. Isso faz parte de uma coisa que eu ando martelando cada vez mais com os anos: IHC. Você precisa pensar no usuário, como ele interage com o sistema e a experiência.

    Não dá simplesmente pra fazer uma coisa megaboga perfeita massavéi se ninguém consegue usar aquela joça. Nem dá pra fazer a coisa tão meia boca que ninguém vai querer usar. Ainda mais com jogos, pega a disciplina da IA clássica e a IA para jogos: são coisas diferentes. Uma preza por ser exata, a outra por parecer inteligente para o jogador. Half Life fazia o jogador acreditar que os NPCs eram mais inteligentes do que eram de fato por gritarem ordens e táticas.

    Daí que entra a multidiciplinaridade. Seja no conhecimento que uma pessoa precisa, seja na diversidade de uma equipe para ter vários pontos de vista sobre o assunto. Não dá pra ir com uma visão só, perde-se outros ângulos.

    Desmistificar a programação é um passo. O outro é mostrar como diversas disciplinas podem (e devem) conversar para construir softwares melhores e úteis aos usuários.

Deixe uma resposta para Bruno Baère Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *