O desenvolvedor, os paradigmas e as revoluções científicas

Thomas Kuhn

Thomas Kuhn

Mais um livro para ser incluído na lista das minhas boas leituras de 2013: “A Estrutura das Revoluções Científicas” de Thomas Kuhn. Meu primeiro contato com o texto se deu em 2001 quando prestei vestibular para Filosofia na UFMG, mas naquela época só li um trecho e acabei deixando-o de lado. Somente neste finalzinho de 2013 pude lê-lo na íntegra e talvez tenha sido A grande leitura do ano. Bom: antes tarde do que nunca, e neste post vou expor o paralelo que encontrei com a nossa realidade (parece que escreveu para nós).

(aviso: este é um post denso)

De que trata este livro?

Link para o livro na editora Perspectiva

Link para o livro na editora Perspectiva

É tratada a história da ciência. Não é a narrativa de como esta evoluiu, mas sim uma crítica ao modo como até 1962 se pensava a história da ciência. Kuhn rompe com a idéia de que a evolução da ciência seja acumulativa, ou seja, que o crescimento científico se dá apenas através do acúmulo de novos conhecimentos. Não: para Kuhn de tempos em tempos ocorre uma espécie de “reboot” teórico que transforma profundamente a visão que temos do mundo e o modo como fazemos ciência.

Este reboot se dá através da substituição do paradigma corrente. Bom: o que é um paradigma? Para Kuhn é todo grande feito científico que trás resultados até então nunca obtidos (de grande magnitude) e que provê um novo ferrametnal sob a forma de teorias, metodologias e pré-concepções. Este ferramental, esta nova visão de mundo é adotada pela geração corrente e posterior de cientistas, que o usa para resolver os problemas deixados em aberto.

Os cientistas que adotam o paradigma compõem uma comunidade que o autor chama de ciência normal que, por sua vez, tem seu modo de trabalho descrito de uma forma bastante interessante e próxima a nós. Seu trabalho consiste em resolver quebra-cabeças. O problema se apresenta como uma série de peças que encaixamos com o objetivo de formar uma imagem coerente com o paradigma vigente. Para tal já temos todo um ferramental pronto que na prática apenas adaptamos conforme novas dificuldades vão surgindo. Usamos a teoria x, y e z junto com as preconcepções a, b e c usando a metodologia plus e pronto: a imagem se forma, coerente com esta visão de mundo.

Mas há anomalias, anomalias estas que não conseguem ser tratadas pelo paradigma corrente. Inicia-se uma crise: nosso ferramental não é mais tão poderoso quanto imaginávamos e então surge uma nova visão de mundo, um novo paradigma que explica melhor estes fatos horrorosos. E assim inicia-se a revolução científica. Um bom exemplo é a astronomia Ptolomaica, que via o céu como algo basicamente estático. Tudo ia bem até começarem a prestar mais atenção nos cometas. Como explicá-los? Surge o novo paradigma com Copérnico, e com isto o problema se resolve com um novo ferramental. A Terra cede o centro ao Sol, não mais é estática, mas móvel, assim como os demais planetas.

Um pato? Um coelho? Ambos?

Um pato? Um coelho? Ambos?

O grande soco me veio no capítulo 9: “As Revoluções Cientíticas como Revoluções na Concepção do Mundo“. A revolução científica é mais profunda: com ela um novo mundo surge. Dois cientistas, cada qual com seu paradigma vêem o mesmo objeto de formas completamente distintas (como este pato/coelho ao lado). Enquanto o céu é estático para Ptolomeu, para Copérnico é algo dinâmico. Ei: falo sobre isto há anos aqui no blog. Lembram quando eu escrevia sobre determinismo linguístico?

E eu, desenvolvedor, o que tenho a ver com isto?

Conforme lia o texto via meu desenvolvimento profissional. Meu primeiro paradigma era o procedural: via o sistema como uma série de módulos compostos por funções e rotinas (alguém ainda usa esta palavra, rotina?). De repente meu paradigma mudou, os sistemas ficaram maiores, eu precisava de algo melhor para lidar com aquela complexidade, veio a orientação a objetos, e com ela fui mudando aos poucos minha visão procedural para uma orientada a objetos. (já escrevi sobre esta experiência aqui)

Me lembrava dos momentos de crise nos quais a minha linguagem corrente (Visual Basic ou Delphi) não mais me atendia quando a web nos engoliu. A Web era em si um paradigma completamente novo para todos nós. Inclusive no sentido de Kuhn: resolveu uma série de problemas (como o de instalação, por exemplo) e ao mesmo tempo criou uma ciência normal, formada por uma nova categoria de programadores, os programadores web (ou frontend, ou webmasters ou o nome que melhor se encaixar).

No livro de há um capítulo sobre estas crises, o sexto, entitulado “As Crises e a Emergência das Teorias Científicas”. Troque “Teoria Científica” por “Ambiente de Desenvolvimento” em sua leitura e verá que, se já passou por isto, o texto trata exatamente da mesma situação. Não há uma troca imediata: antigos hábitos vão se misturando a um novo modo de trabalho e com ele o que realmente valia à pena se mantém, e o que não se adequa é eliminado. É um período de crise profissional (termo usado por Kuhn em 1962) acompanhado de imensa insegurança. “O que será de mim? Estou obsoleto? Conseguirei aprender isto? Será que esta novidade não é mera picaretagem ou hype?”.

É fascinante, por exemplo, no texto de Kuhn, ler a imensa resistência que emerge diante dos novos paradigmas. Digo uma coisa: EXATAMENTE o que vêmos quando apresentamos uma nova ferramenta ou paradigma de desenvolvimento. Impressionante como um texto de 1962 consegue descrever em detalhes o nosso dia a dia.

grails_logo

Penso em Grails: quando surgiu mudou radicalmente o modo como eu via o desenvolvimento Java EE. Era a emergência do conceito de convenção sobre configuraçãonão se repita e tantos outros em uma comunidade acostumada a um modo de trabalho absolutamente diferente.

Seria o Node.js sinal da emergência de um novo paradigma?

Seria o Node.js sinal da emergência de um novo paradigma?

Pensem em Node.js: é uma visão completamente diferente da que estamos acostumados. Javascript do lado servidor? E numa thread única??? E ainda por cima  funciona??????  E toda uma gama de anomalias que eram difíceis de serem resolvidas com outras abordagens de repente são resolvidas de formas mais simples. É um novo paradigma surgindo? Talvez: o tempo dirá. Após a leitura do Kuhn está me parecendo um. Nâo o Node.js em si, mas talvez o modo de trabalho.

É interessante que no texto de Kuhn é exposto que não há também um único paradigma: muitas vezes (todo o tempo) eles convivem lado a lado. A substituição não se dá do dia pra noite, e muitas vezes se mantém lado a lado eternamente, ou mesmo um usando o outro. Exemplo: a física de Newton e a relatividade de Einstein, cada um no seu quadrado e muitas vezes dando as mãos. Penso que em tecnologia é a mesma coisa: uso PHP para alguns casos, Grails em outros, Node.js em algumas situações e por aí vai.

Concluindo

“Cientistas”, desenvolvedores, bruxos, são todos a mesma coisa. Terminada a leitura do livro vi que ia muito além da “mera” história da ciência. É o modo como encaramos as mudanças que atropelam nossas vidas e alteram nossa visão do mundo que muitas vezes acreditamos ser tão sensata, tão segura.

É um livro que deveria estar na prateleira de todo programador, qualquer um que trabalhe com desenvolvimento ou qualquer outra área. Ao final acredito que nos traga humildade e também um alívio: as anomalias são a janela para um novo mundo. É só saltar por ela.

PS:

Muito obrigado a todos vocês por este ano de 2013 que foi sem dúvidas o melhor ano da história deste blog e que acabou redefinindo minha própria opção profissional (será cada vez mais literária).

Sem vocês isto não seria possível. Nunca imaginei em 2008 que teria tantos leitores como hoje e que estaria tratando de assuntos tão diversos! Vocês não fazem idéia do tanto que isto me incentiva a continuar.

(e acreditem, continuo e ano que vẽm a coisa será ainda mais intensa)

Feliz 2013 a todos vocês. :)

7 thoughts on “O desenvolvedor, os paradigmas e as revoluções científicas

  1. Ótimo texto, acompanho seus posts semanalmente , feliz 2014 e continue com os posts sobre Grails, comecei a brincar com ele depois que li seus posts a respeito do assunto.

    Responda

    Kico (Henrique Lobo Weissmann) Reply:

    Oi Lucas, obrigado, valeu!

    Com certeza: sobre Grails aliás haverá um boom monstro. :)

    Responda

  2. Oi Kico, beleza.

    Fico quieto, mas sempre acompanho seus posts. Como sempre, excelentes! “Sempre aprontando das suas, heim!”.

    Feliz 2014! Espero que um dia voltemos a trabalhar em equipe. Seria bacana relembrarmos os velhos tempos.

    Um abraço.

    Responda

    Kico (Henrique Lobo Weissmann) Reply:

    DANIEL LAGE!!!!!!!

    Quanto tempo man! Valeu demais!

    Também espero o mesmo. :)

    Responda

  3. Excelente post! Leitura prazerosa, que nos faz refletir sobre o assunto.

    No entanto, no caso do Node.js especificamente, o que estamos assistindo é uma mudança de paradigma natural, a mesma observada no design, na música, no cinema… Eu diria que, de tempos em tempos, antigos valores VOLTAM a ganhar importância e os excessos são descartados (parafraseando a crise profissional de Kuhn).

    Na música vemos isso de década em década. Ocorreu nos anos 70 quando o punk resolveu com apenas 3 acordes o que os virtuoses não souberam. Também ocorreu recentemente no (web)design com toda essa nova febre do “Flat”. A proposta é até interessante: Como você pode ser mais criativo tendo recursos limitados? Não vale mais usar gradient, box-shadow, bordas arredondadas. Isso é old-fashioned! Já era. E então as pessoas voltam a valorizar o que realmente é eficiente: Paleta de cores, tipografia, UX… Se sua equipe não perde mais tempo com floreios, ela passa a ser mais produtiva e eficiente.

    É claro que, no caso do desenvolvimento de software, a coisa muda de figura. Mas usar a mesma linguagem no servidor e no cliente, é, de fato, tentador. Tentador também para o empregador, pois este deixa de ter custos adicionais com novas contratações. É a tecnologia do browser! É o back-to-basics. É o front-end quebrando a barreira do back-end. Não é novidade, pois já haviam conseguido um pouco disso com os BDs baseados em documento, como o MongoDB.

    No caso do Java, frameworks “component-based” como o JSF provavelmente vão se tornar os vilões da história, justamente por abstrair o HTML do desenvolvedor.

    Não estou defendendo o Node, apenas estou curioso para ver até onde tudo isso vai dar! O paypal, o eBay, o Walmart… Todos estão migrando seus servidores para Node. O paypal, inclusive, publicou um benchmark:

    https://vividcortex.com/blog/2013/12/09/analysis-of-paypals-node-vs-java-benchmarks/

    Uma visão interessante (e divertida) sobre o Javascript é este excelente vídeo:
    https://www.youtube.com/watch?v=PN8Eg1K9xjE

    Abraços e parabéns pelo artigo!

    Responda

    Kico (Henrique Lobo Weissmann) Reply:

    Oi Carlos Gomes,
    fico feliz que tenha gostado, valeu!

    Também penso exatamente como você no que diz respeito a estas questões. Acho fascinante ver este movimento pendular: daqui a pouco iremos nos deparar com gente defendendo algo como JSF de novo. Quanto tempo isto levará? Uns dois, três anos? :)

    Responda

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>