Armadilhas para desenvolvedores: a síndrome do conhecimento imediato

Brainiac normalmente se da mal

Sintoma: um indivíduo em seu local de trabalho é informado de que deverá trabalhar com a tecnologia X mas nunca teve qualquer contato com esta e imediatamente começa a cuspir código como se a compreendesse inteiramente só de olhar.

Desenvolvimento

Estágio inicial

O indivíduo é informado de que deverá trabalhar com a tecnologia X. Esta pode ser um framework, linguagem de programação ou até mesmo um apontador de horas. Imediatamente o sujeito a instala em sua estação de trabalho e começa a cutucar todos os botões que encontra.

Se é um framework, pega algum exemplo que normalmente o acompanha e começa a desenvolver o seu trabalho em cima deste mesmo na hora, ou então pesquisa no “São Google” por exemplos de uso da ferramenta, os quais serão o alimento do seu instinto “control-cê-vador”.

Detalhe: só acessou o site oficial da ferramenta para obter a última versão.

Fase 2: código em desenvolvimento e gerência feliz

Normalmente (neste momento ignore os acéfalos por favor) o responsável por delegar a tarefa ao sujeito entrega como primeira demanda algo simples. Afinal de contas, seria esperar demais do nosso pobre Brainiac que este desenvolva algo muito complexo de cara. Como sempre há um “exemplinho esperto” na Internet para estes casos, nosso amigo consegue se safar bem. E neste primeiro momento, até começa a sentir aquela sensação de “dever cumprido com o trabalho que algum desconhecido fez pra mim”.

Óbviamente a gerência fica feliz: “Bom menino!”

Fase 3: primeiro atraso

Bom menino!

Todos (os tolos) estão confiantes na capacidade do nosso Brainiac, principalmente o próprio! É hora de irmos um passo além. A próxima tarefa será um “pouquinho” mais complicada. Nosso bom rapaz aceita o desafio imediatamente, mesmo conhecendo da ferramenta apenas a barra de pesquisa do Google.

E começa o seu sofrimento, pois por mais que busque exemplos prontos e leia e releia todo o código fonte que veio de exemplo com a ferramenta, não consegue desenvolver a tarefa, pois simplesmente não sabe como esta funciona. Sua auto estima recebe a primeira porrada. O tempo passa, o prazo que inicialmente era justo passa a se mostrar cada vez mais curto.

É o momento em que, seguindo esta trilha, ou o paciente se cura (leia “cria vergonha na cara e estuda”) ou a “sorte” lhe ajuda e ele se “safa” mais uma vez.

Normalmente a sorte aparece sob a forma de algum colega que de fato conhece a ferramenta (e faz o seu trabalho) ou algum exemplo perdido em algum fórum que literalmente “aparece do nada” e salva seu dia.

Fase 4: a merda

Alguém vai dar manutenção no código fonte do nosso “bom menino” e descobre um déficit técnico monstro que muitas vezes inviabiliza o projeto. As soluções que poderiam ser implementadas de forma simples caso houvesse um conhecimento correto da ferramenta no início do desenvolvimento se apresentam como monstros horríveis.

A grande sacanagem é que normalmente quem arca com as consequências não é o autor da cagada mas o resto da equipe e o que é pior: o cliente que inicialmente confiava (e muito) no trabalho da sua empresa.

É muito comum a solução ser reescrever tudo e torcer para que o sistema não apresente nenhum comportamento maluco na cara do cliente.

Brainiac se justifica

As justificativas, como já era de se esperar, não são apenas furadas, são o furo em si. Abaixo estão algumas que já ouvi.

“Tecnologia X é do tipo Y. Eu conheço uma tecnologia A que também está nesta categoria, logo é só aplicar os mesmos conceitos!”

E com base neste argumento já vi gente programar em Java como fazia no Delphi e criar aplicações web com Grails como se fosse Struts… Seguindo esta linha de raciocínio portanto todos os frameworks fazem a mesma coisa, assim como toda linguagem de programação. Ok: então você o rebate com uma pergunta muito simples: “se há tantas variações dentro desta categoria, porque então não existe apenas uma ou duas opções?”

A resposta é simples: porque cada uma foi criada visando resolver um problema específico OU apresentando uma forma de trabalhar completamente diferente, com conceitos que, embora possuam nomes parecidos ao de outras tecnologias, possuem significados completamente diferentes.

Este argumento com relação a linguagens de programação costuma aparecer também na forma “Linguagem de programação é tudo igual. Tudo o que você precisa conhecer é lógica!”. Aham…

“Eu não tive tempo pra sentar a bunda na cadeira e ler o manual”

Me pergunto: se um médico tivesse esta postura, seria aceitável? “Não tive tempo de olhar o paciente direito, então lhe receitei uma aspirina”. Um grande problema que vejo na nossa área é a irresponsabilidade dos desenvolvedores que muitas vezes não tem noção ALGUMA do prejuízo que suas mancadas podem causar.

Se a culpa for da sua gerência que não lhe deu tempo, tudo bem: nosso Brainiac realmente é uma vítima. Agora, caso não seja o caso, tenha certeza: é desculpa esfarrapada.

“Ah… eu não encontrei documentação nenhuma a respeito˜

Ai você apresenta pro doente este link.

E ai eu me pergunto: culpo quem?

É sempre importante apontar o dedo para alguém não é mesmo? Eu vejo duas situações possíveis:

a) Brainiac nos enganou dizendo que conhecia a tecnologia

Culpado: Brainiac é claro! Aproveite e demita-o.

b) Brainiac sofre da síndrome do conhecimento imediato. Ele nunca disse que conhecia a tecnologia

Culpado: todos. Nosso amigo óbviamente possui grande parcela nesta culpa, mas ai eu me pergunto: será que este profissional não deveria ter sido corretamente monitorado? Ele trabalhar absolutamente sozinho é certo?

Conclusões

Sabe, ficar cutucando aquilo que não conhecemos não é inteligente, mas sim tentativa e erro, que normalmente consome muito mais tempo do que uma lida inicial nem que seja apenas para que você saiba mais ou menos aonde está.

Quando me vejo em uma situação deste tipo costumo me perguntar: “será que sou tão inteligente assim pra começar a trabalhar em algo sem ter estudado NADA antes?”. Auto-crítica é fundamental. Se seu ego está tão inchado assim, é hora de comprar um espelho.

E sabe o que é pior? Normalmente esta abordagem não funciona. Ela no máximo engana em um primeiro momento, mas sempre quando a coisa aperta você se vê tendo de limpar a merda de um elefante que você sequer conhece.

Sendo assim, por favor: seja mais humilde (leia inteligente): antes de cair na tentativa e erro, leia algo a respeito.


Publicado

em

, ,

por

Tags:

Comentários

14 respostas para “Armadilhas para desenvolvedores: a síndrome do conhecimento imediato”

  1. Avatar de Sr. Kaneda
    Sr. Kaneda

    Enquanto isso… do outro lado da tela em um edifício com fachadas de vidro…

    O gerente, todo orgulhoso para apresentar ao cliente o sistema desenvolvido na “Tecnologia X”, diz para o Sr. Kaneda…

    “Nada pode dar errado!!!”

    1. Avatar de admin
      admin

      Neste momento inclusive aponta para Juca, o desenvolvedor e diz: “Veja aquele rapaz! Um verdadeiro gênio que dominou a ferramenta instantaneamente! Que orgulho!”

  2. Avatar de André Pereira
    André Pereira

    Muito bom o post!
    parabéns!

  3. Avatar de Emilio

    Sensacional.

    1. Avatar de admin
      admin

      Valeu!

  4. Avatar de yurifw
    yurifw

    Gostei muito do texto cara, principalmente a parte:
    … Este argumento com relação a linguagens de programação costuma aparecer também na forma “Linguagem de programação é tudo igual. Tudo o que você precisa conhecer é lógica!”. Aham… …
    primeira vez que vejo alguem concordar comigo nisso \o/
    pra mim as pessoas q dizem este tipo de coisa n conhecem bem nenhuma linguagem, fazer um simples laço de repetição ou uma estrutura condicional realmente n muda muito mesmo, mas vai conhecer uma linguagem de verdade e você percebe que essa é a maior mentira contada aos profissionais da area.

    1. Avatar de Kico (Henrique Lobo Weissmann)
      Kico (Henrique Lobo Weissmann)

      Opa, valeu cara, fico feliz que tenha gostado. :)

  5. Avatar de Fábio Zoroastro
    Fábio Zoroastro

    Parabéns. Escrita muito boa e conteúdo realmente do cotidiano – infelizmente.

    Abs!

    1. Avatar de Kico (Henrique Lobo Weissmann)
      Kico (Henrique Lobo Weissmann)

      Opa,.obrigado Fabio!

  6. Avatar de raneves
    raneves

    amigo, e quando o FW realmente não tem documentação? quem é o Brainiac da história?

    1. Avatar de Kico (Henrique Lobo Weissmann)
      Kico (Henrique Lobo Weissmann)

      Oi Raneves,

      os únicos casos em que eu já vi em que realmente não havia documentação alguma (e mesmo assim havia alguma coisa) foram coisas desenvolvidas internamente pela empresa. Neste caso, o problema é pior ainda e vêm de cima.

      Mesmo tendo vindo de cima, se você não tiver documentação alguma, você pelo menos corre atrás e, de fato não havendo nada, pelo menos informa seu superior ou cliente (por escrito) a respeito da situação antes de continuar. Se não fizer isto, a culpa é sua.

      1. Avatar de raneves
        raneves

        cara na minha opinião a culpa é minha apenas pelo fato de aceitar trabalhar num fw de merda desses que nem documentação tem.
        :)

      2. Avatar de Buston
        Buston

        se eu entendi você está defendendo o FW é isso? você se arrependerá disso amargamente um dia.
        reflita melhor.

        1. Avatar de Kico (Henrique Lobo Weissmann)
          Kico (Henrique Lobo Weissmann)

          Não, não estou defendendo FW algum e, pra te ser bem sincero, nem sei o que é FW.

          O que estou dizendo é que se você está em uma situação na qual realmente não há documentação alguma, você deve agir como profissional e informar seu cliente ou superior a respeito pra conversar melhor sobre a situação.

          E a propósito, vou me arrepender do quê?

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.