Dev (Back & Front)ARTIGO

Memorize os conceitos, não as APIs

Eu sempre sentia vergonha por não conseguir arrasar em código sem ter que olhar a documentação. Um exemplo foi o arquivo opening/handling em .NET 1.1. Eu lembro que não conseguir fazê-lo nem se minha vida dependesse daquilo. Depois, eu li que a Microsoft fez um estudo sobre a usabilidade das APIs. Uma das APIs que perderam o marco foi o IO.

A principal reclamação era que você precisava de muitas linhas de código para cenários básicos. A outra reclamação era que você precisava de bastante conhecimento abstrato (do ponto de vista de uso) da árvore de herança. Isso foi um alivio. Eu parei de me sentir como um impostor que estava sendo pago para fazer nada. Mas eu ainda considerava aquilo um defeito meu e ficava sempre irritado quando não conseguia fazer algo simples porque eu esquecia os detalhes da API.

Da mesma maneira, depois de descobrir o Ruby, eu fiquei maravilhado que os geeks alfa perceberam antes de mim. Quando penso nisso com mais cuidado, não seria lógico de nenhuma outra maneira. Eu especulei se eles iriam ser capazes de posicionar o Ruby como um derivado do Smaltalk que tem alguma sintaxe semelhante do Perl e um Lisp funcional “dos deuses”. Isso permitiu a eles rotular/reconhecer toda a tecnologia relativamente rápido e fácil.

O conhecimento prévio dos conceitos foi o principal fator que permitiu isso. A questão é que muito, muito raramente temos um novo conceito, que é também usável ao mesmo tempo.

Essa é uma faca de dois gumes. Um lado é que não estamos fazendo tanto progresso como gostaríamos. O outro é que se você sabe o suficiente, você consegue ficar sempre sabendo das coisas novas. A partir dessa perspectiva, é inútil se enfiar em guerras santas. Você consegue utilizar seu conhecimento prévio e ajustar as mudanças tecnológicas para seu próprio gosto enquanto recicla as ideias existentes.

Os conceitos permitem que tenhamos um vocabulário comum para falar sobre problemas de uma maneira mais fácil. Eles também transcendem a própria tecnologia.

A questão é que o tempo de vida da plataforma da tecnologia é de 5-7 anos. Nesse tempo, algo novo surgirá e evoluir até o estado da arte. Você deve se perguntar quais são as pessoas que estão indo além. Acredito que são aquelas que estão se apoiando nos ombros dos (gloriosos) gigantes do passado. Eles são capazes de olhar para uma tecnologia sabendo instantaneamente seus pontos fortes e limitações. Eu baseio essa informação no fato de que o principal fator que acelera o progresso da raça humana foi a invenção da prensa. Os livros permitiram às pessoas compartilhar conceitos em uma escala muito maior que antes. A Internet é uma versão melhorada e mais interativa de um livro.

Eu me curvo ao Lips por ter nos dado fold e map, me curvo ao Smalltalk por ter nos dado a sintaxe em blocos e ter nos mostrado quão bons os argumentos de palavras-chave podem ser. Eu me curvo ao Unix por nos permitir conectar a programas da mesma maneira que conectamos mangueiras de jardins (padrão input/output)…

Conclusão

Não fique parado aí, aprenda sobre traits no Smalltalk ou currying no Perl, por exemplo. Esse tipo de conhecimento é o mais importante de qualquer maneira.

Deixe os detalhes das APIs na documentação e consulte-os quando necessário.

Os detalhes se tornam irrelevantes rapidamente. Os conceitos, por outro lado, serão úteis por muito mais tempo, e estarão presentes em qualquer nova tecnologia que você for usar.

?

Texto original disponível em http://kresimirbojcic.com/2011/12/16/memorize-the-concepts-not-the-apis.html

Matérias especiais e reportagens conduzidas internamente pela Redação iMasters. Acompanhe no Twitter @imasters e no Instagram/Threads @portalimasters

Ver perfil