terça-feira, 27 de outubro de 2009

Do desencontro entre universidade e indústria - parte 1 - conhecimento inútil

Eu adorava ler Joel on Software. Até comprei o livro com a coletânea dos melhores posts. Só que de uns anos pra cá o Joel perdeu totalmente a inspiração e, de vez em quando, me faz perder meu tempo. O último post dele fala sobre o desencontro entre o que alunos aprendem nas universidades e o que a indústria de software realmente precisa. Outro que foi pela mesma linha recentemente, dessa vez em uma auto-crítica partindo de um membro do meio acadêmico, foi o Prof. Geraldo Xexéo da UFRJ, que pede mudanças radicais no ensino de computação.

Ora, tem mais de vinte anos que eu escuto a mesma ladainha e, francamente, já me cansei. Os argumentos da indústria de software, representada aqui pelo Joel, são os seguintes:
  1. Os alunos só aprendem teorias que não tem utilidade prática
  2. Os alunos não aprendem a colaborar, a trabalhar em grupo, a depurar código, a documentar, a usar ferramentas, ou qualquer coisa que faça parte de um projeto real de software
  3. Os professores não tem nenhuma experiência com engenharia de software "de verdade."
A indústria parece pensar que a universidade deveria ser uma máquina de produzir desenvolvedores que vão sair de lá prontinhos pra trabalhar nos calabouços deles. Nada disso. O papel da universidade é outro. Dá pra falar tanto sobre esse assunto que vou dividir minha resposta em três partes. Na de hoje, vamos falar sobre o primeiro ponto - "os alunos só aprendem teorias sem utilidade prática."

Qualquer professor de computação já se deparou com um aluno que acha inútil o que ele está ensinando, ou mandando ele fazer. Eis alguns exemplos de queixas de alunos:
  • "Por que eu tenho de implementar uma pilha? Qualquer linguagem de programação moderna já vem com pilhas prontas e eu nunca nunca nunca vou ter de implementar uma pilha na vida."

    O bom professor então dá um tapa na cabeça do aluno e diz, "É claro que não. Você precisa é aprender a escrever uma estrutura de dados; a encapsular informações; a definir uma interface; a manipular apontadores. É isso que você está fazendo. Vai trabalhar e para de reclamar."

  • "Por que eu estou aprendendo Scheme? Ninguém no mercado usa Scheme!"

    Porque programação funcional não é restrita a uma linguagem. É uma forma pensar e estruturar programas extremamente útil que pode ser feita em qualquer linguagem. Se você conseguir programar em Scheme, temos uma chance de você entender que forma é essa.

  • "Eu trabalho e sei que na prática ninguém segue esses processos todos, é impossível."

    Claro que ninguém segue. Você não vai usar esses processos do jeitinho que vem no livro. O que você vai fazer é destilar de lá algumas boas práticas que vão te ajudar a resolver problemas específicos em momentos diferentes. E mais, vai aprender o vocabulário necessário pra entender o que te dizem quando estiverem falando sobre projetos de verdade.
O ensino de informática/computação nas universidades tem muitos críticos, mas o fato é que nenhum deles foi até agora capaz de propor um modelo de ensino que seja viável e melhor que o vigente. É claro que é preciso manter os currículos sempre atualizados, mas os fundamentos da área mudam pouco com o passar dos anos.

Continua na parte 2.

3 comentários:

  1. O problema é que as pessoas querem contratar alunos de sistemas de informação, mas procuram em cursos de ciência da computação.

    E, sinceramente, o cara que realmente aprende programação funcional (e não brincadeira, que é o que se vê nas cadeiras de graduação aí) num curso de bacharelado de 4 anos é um herói mesmo viu.

    Ainda mais porque ele já teria que ser fera em programação estruturada e POO. É inútil ensinar Scheme/Lisp/Erlang pr alunos que não tem a menor idéia do que isso pode fazer, fato que é o mais comum na maior parte das graduações, ver teorias que tem um forte uso prático na atualidade (como estatística e algoritmos de aprendizado) mas que não são aproveitadas porque os professores só se preocupam em ensinar a teoria.

    É bem como se diz por aí, na prática a teoria é outra. Enquanto os professores das graduações não se tocarem disso, continuamos seguindo em direção a lugar nenhum e os alunos vão continuar saindo cada vez menos preparados pra resolver os problemas do dia a dia, por mais que eles saibam implementar uma árvore B+.

    ResponderExcluir
  2. Muito bom. Tem razão.

    Sou professor de Lógica para Computação, no 1o. período de Engenharia de Computação e de Sistemas de Informação.

    Hoje mesmo tive que explicar para um aluno de Engenharia que lógica pode ser usada para verificar algumas propriedades de chips...

    E, a propósito, Lua, atualmente uma das 20 linguagens mais utilizadas no mundo, utiliza alguns conceitos de linguagens funcionais.

    E Lisp/Scheme está neste mês como a 17a. mais usada no TIOBE Index:http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

    ResponderExcluir
  3. Continuando uma parte do comentário de Maurício, o fato é que existem perfis de profissionais diferentes para áreas diferentes... Sou formado em Ciência da Computação e hoje trabalho num curso de Sistemas de Informação... Já passei pela excelente oportunidade de estudar recomendações e montar currículo para estas e outras áreas da computação. O fato é que existe sim uma dissonância entre MEC e Mercado... é uma tarefa difícil para um coordenador de curso criar currículos que: 1- forme para o mercado, 2- obedeça às exigências do MEC (por exemplo, ao preparar o aluno para o ENADE) e 3- mantenha professores instigados (ou ao menos dando a possibilidade de trabalhar em prol dos seus próprios currículos).

    Para fechar o comentário sobre este primeiro post, falo sobre os tópicos de reclamação do mercado:
    1- isso é uma falácia;
    2- isso depende fundamentalmente do currículo criado pela instituição de ensino... Sem falsa modéstia, acredito que o curso onde trabalho tem sim um bom embasamento em grande parte destes tópicos e estamos buscando melhorar;
    3- isso é uma meia verdade... é apenas difícil contratar professores que tenham mestrado ou doutorado (para agradar ao MEC) e ao mesmo tempo tenham experiência de mercado. A solução é balancear o quadro!

    ResponderExcluir