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:
- Os alunos só aprendem teorias que não tem utilidade prática
- 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
- 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.
Continua na parte 2.
O problema é que as pessoas querem contratar alunos de sistemas de informação, mas procuram em cursos de ciência da computação.
ResponderExcluirE, 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+.
Muito bom. Tem razão.
ResponderExcluirSou 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
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).
ResponderExcluirPara 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!