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
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.
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!!!”
Neste momento inclusive aponta para Juca, o desenvolvedor e diz: “Veja aquele rapaz! Um verdadeiro gênio que dominou a ferramenta instantaneamente! Que orgulho!”
Muito bom o post!
parabéns!
Sensacional.
Valeu!
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.
Opa, valeu cara, fico feliz que tenha gostado. :)
Parabéns. Escrita muito boa e conteúdo realmente do cotidiano – infelizmente.
Abs!
Opa,.obrigado Fabio!
amigo, e quando o FW realmente não tem documentação? quem é o Brainiac da história?
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.
cara na minha opinião a culpa é minha apenas pelo fato de aceitar trabalhar num fw de merda desses que nem documentação tem.
:)
se eu entendi você está defendendo o FW é isso? você se arrependerá disso amargamente um dia.
reflita melhor.
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ê?