Theme

A selecção natural da informática de hoje em dia...

8 min read Life, Culture & Education

Há algo que me começa a afligir: a maioria dos estudantes de faculdade que se estão a formar actualmente não fazem ideia do que é programar. Pronto, já o disse!

Não é preciso serem pessoas com uma diferença de idades muito grande da minha, basta terem menos 5 ou 6 anos que eu e a diferença já é abismal.

Recentemente tenho tido a oportunidade de trabalhar com algumas dessas pessoas pouco mais novas que eu e fico abismado com a quantidade de conceitos base que essas pessoas não têm. Pior, quando lhes explico que deviam ter essas coisas em conta, irritam-se e chateiam-se porque acham que são picuinhices e manias de “cromos da informática”…

E se calhar o problema é esse mesmo. Se calhar estas pessoas não deviam estar num curso de informática porque não são “cromos” - nem o querem ser, porque ser “cromo” é considerada uma coisa má.

Sinceramente não entendo o que há de tão errado em ser-se “cromo” de informática. Um médico sabe o nome e a função de 206 ossos do corpo humano, compreende o funcionamento dos órgãos internos do nosso corpo, utiliza uma linguagem própria, entre muitas outras coisas “estranhas” - mas não lhe chamam “cromo”, chamam-lhe “Sr. Doutor”.

Se calhar isso tem que ver com o facto de muitos informáticos serem pequenos génios de cabeça mas terem fracas capacidades de socialização. Ou talvez seja por inveja da parte de quem lhes chama cromos, porque gostavam de ser capazes de compreender algo tão complexo quanto um computador. Um bocado assim como se chamam “meninos ricos” aos miúdos de 18 anos que andam com o Mercedes ou o BMW do pai, quando na verdade o que as pessoas que lhes chamam isso gostariam era de ter tido a mesma oportunidade.

Mas não tiveram. E seja porque motivo for, pelos vistos também não têm a mesma oportunidade relativamente aos computadores. Temos pena mas é assim mesmo: tal como nem toda a gente consegue ser médico, nem toda a gente consegue ser informático. Mas não é por isso que quem consegue é um “cromo”.

Este é o ponto que provavelmente vai fazer com que me chamem mais nomes mas quanto mais rapidamente se aceitar que nem toda a gente é capaz de fazer o mesmo, mais rapidamente dormem descansados. Há pessoas que não são capazes de programar ou compreender como funciona um computador. E não é necessariamente por serem estúpidos ou mente-captos, podem simplesmente não ter o cérebro virado para aquele tipo de raciocínio; podem ser génios em matemática mas não ser capazes de compreender aritmética de apontadores ou os pormenores de uma sinapse. Não torna ninguém menos digno nem é nenhuma vergonha.

Posto isto, essas pessoas que não são capazes de lidar com computadore, ao continuarem o curso e insistirem numa carreira profissional na informática, só vão estar a contribuir para duas coisas: a sua própria infelicidade e a degradação da qualidade geral do mercado de trabalho da informática.

Esta é a parte que compete aos estudantes, a parte de compreender se estão onde devem estar. Por vezes não se apercebem do erro que estão a cometer mas sinceramente, a quem isso acontece, geralmente é porque não se preocupa muito em tentar perceber ou então tem os factos à frente (chumbar continuamente nas disciplinas de informática) e prefere ignorá-los. Por outro lado e para ser justo, essa inaptidão nem sempre é óbvia mas esse facto deve-se em grande parte à má preparação que se tem no ensino secundário e, mais importante ainda, aos primeiros anos de faculdade.

É que nesta dança de quem foi e quem não foi talhado para ser médico ou informático, há também uma parte mais importante que não compete aos estudantes mas sim às faculdades e estas não a estão a cumprir (as de informática, pelo menos).

A analogia que vou fazer não é a melhor, até porque tem que ver mais com memorização do que capacidade de raciocínio mas dá para perceber o que quero dizer. Tal como quem não consegue passar a Anatomia logo nos primeiros anos do curso de Medicina ser geralmente quem fica para trás no curso, num curso de informática quem costumava ficar para trás era geralmente o pessoal que não atinava com as disciplinas de Programação logo no primeiro ou segundo ano.

Isto separava à partida aqueles alunos que tinham aptidão para serem informáticos, daqueles que não a tinham. Quase como que uma selecção natural.

Mas tal como o Homem fez ao arranjar soluções para as desvantagens que eliminavam os indivíduos menos aptos a sobreviver, também as faculdades parecem estar a dar cabo da selecção natural no que toca a informáticos.

Quando eu fiz as primeiras disciplinas de programação, as disciplinas de arquitectura de sistemas de computadores, de sistemas de operação e outras do mesmo género, tínhamos mesmo de perceber o que ali se passava. Tínhamos que compreender como a informação circula do CPU para a RAM e vice-versa, tínhamos de passar pelo menos um semestre a programar em Assembly, tínhamos de perceber como funciona um sistema de ficheiros, tínhamos de perceber endereçamentos de memória… enfim, tínhamos de compreender muitas bases que hoje em dia é raro o aluno que passa a uma disciplina a compreendê-las correctamente.

Mas isso nem é o pior, porque desde que os conceitos sejam compreendidos de forma minimamente correcta e a ginástica mental tenha sido exercida, o aluno adquiriu a capacidade de raciocínio que lhe permitirá abordar e resolver certos problemas que de outra forma não iria conseguir.

O pior é que depois dessas cadeiras base, que pelos vistos hoje em dia já não são leccionadas como eram, os alunos nunca mais aplicam esses conceitos, porque, entre outras facilidades, passam a utilizar sempre “o Eclipse”.

Digo “o Eclipse” porque pelos vistos muitos deles nem sequer percebem o que estão a fazer com aquilo. Há dias assisti a uma discussão de um aluno com um colega em que um deles não acreditava que a linguagem Java era independente do Eclipse…

E ao trabalhar com alguns destes alunos, vejo claramente que não têm a ginástica mental que é necessária de um bom programador. Não me considero um génio de programação mas por vezes escrevo código que é trivial para qualquer pessoa com a tal capacidade de raciocínio de que falei mas que esses outros alunos demoram 5 ou 10 minutos a compreender e por vezes até precisam que lhes explique o código passo a passo. Bolas, alguns deles não conseguem sequer utilizar apontadores, quanto mais outras técnicas e conceitos mais avançados!

Já agora, com isto tudo não estou a afirmar que Java é uma má linguagem de programação. Eu até gosto bastante de Java; só não acho que seja uma boa escolha para alunos novatos em programação, porque não exige deles o raciocínio e a ginástica mental que é necessária a um bom programador. Um atleta de culturismo pode treinar arduamente todos os dias e com o maior afinco mas se nunca pegar em pesos com mais massa que 5 Kg, nunca irá chegar longe. Por outro lado também poderá aperceber-se de que mesmo treinando há meses com 100 Kg, não consegue passar dali e compreende então que se calhar o seu corpo não lhe permite chegar mais longe naquele desporto. Por outro lado, quem sabe, se calhar pode vir a ser campeão mundial de atletismo!

Não sei porque é que as universidades o fazem mas aparentemente a tendência é neste sentido, de facilitar a vida aos alunos em deterimento de filtrar e formar bons informáticos.

Ou então sou eu que estou a ficar velho… :)

EDIT @ 30/10/2008 13:15

Um colega meu apontou-me estes dois excelentes (mas longos) artigos que põem um peso muito grande no que eu disse, pois foram ambos escritos por pessoas de nome na informática.

O primeiro, do Joel Spolsky, está em http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html. Um excerto interessante:

Heck, in 1900, Latin and Greek were required subjects in college, not because they served any purpose, but because they were sort of considered an obvious requirement for educated people. In some sense my argument is no different that the argument made by the pro-Latin people (all four of them). "[Latin] trains your mind. Trains your memory. Unraveling a Latin sentence is an excellent exercise in thought, a real intellectual puzzle, and a good introduction to logical thinking," writes Scott Barker. But I can't find a single university that requires Latin any more. Are pointers and recursion the Latin and Greek of Computer Science?

O outro, escrito por Robert B.K. Dewar e Edmond Schonberg, está em http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html.

E deixo ainda um excerto de um artigo que vi referenciado no Ajaxian. De http://svwebbuilder.wordpress.com/2008/10/20/html5-websocket-and-webjneering/:

I was at first overjoyed at the prospect of the World Wide Web’s new status as a real boy. But such feelings were just a precursor to the greatest technology-driven depression of my life. You see, as recently as twenty years ago the world was brimming with real programmers, who knew how to do such amazing things as write programs that conversed with far-away computers by using bsd sockets. We’ve traded those programmers, by and large, for JavaScript kiddies. Its not that the real programmers all died, retired, or gave up with programming; rather, every new programmer of the past decade is a bright-eyed 22 year old who thinks he’s the best thing since Google, what with his domination of rails (, java, or php) and javascript.