Mas como as disciplinas se relacionam?
Um dos problemas que temos no ensino de ciência da computação, informática ou sistemas de informação é que ensinamos as matérias de uma maneira não encadeada. O resultado disso é que fica difÃcil para os alunos imaginarem como juntar as habilidades adquiridas em cada uma das disciplinas em um processo de desenvolvimento de software (seja unificado ou ágil.)
Consideremos algumas disciplinas em especial: programação de computadores II e III, Bancos de Dados, Análise de Sistemas I e II. Além dessas podemos considerar também estrutura e organização de dados que só fazem sentido depois que já aprendemos a programar de qualquer forma.
Em geral o objetivo dessas disciplinas é:
- Programação de computadores II – ensina os primeiros passos de programação depois que o aluno já viu algoritmos. Em geral essa disciplina utiliza pascal ou C e os exercÃcios não passam de coisas simples sem trabalharem a estrutura de um sistema ou aplicativo, até porque como os alunos ainda estão no começo do curso simplesmente não sabem o que é um sistema.
- Programação de computadores III – ensina uma programação mais avançada, infelizmente muitos alunos esquecem o que viram em programação II e gasta-se muito tempo fazendo revisões. Um outro problema é a visão de que as disciplinas de programação devem ensinar uma linguagem. Isso é um erro comum porém terrÃvel! As disciplinas de programação devem ensinar de forma continuada técnicas de programação em alguma linguagem, aprender a linguagem é um efeito colateral! Essa disciplina em geral utiliza C ou Java como linguagem. Este curso é onde o aluno tem a chance de acessar um banco de dados com uma linguagem de programação.
- Bancos de Dados – ensina os detalhes dos sistemas de gerenciamento de bancos de dados, como modelar os bancos, como acessar, como fazer consultas e inserções, mas isso tudo apenas dentro do próprio ambiente do banco de dados. São faladas de técnicas de modelagem de banco especificamente sem falar de entrevista com usuários, falamos de como identificar entidades e relacionamentos, mas o origem dessas entidades ainda é um mistério.
- Análise de Sistemas I – essa disciplina varia de nome, mas essencialmente ensina as técnicas de análise de sistemas. Muitas vezes trabalha com técnicas de análise estruturada e essencial, outras vezes são trabalhadas já as bases da análise orientada a objetos, mas dificilmente conseguimos trabalhar com o aluno as questões referentes a como fazer as entrevistas com o usuário e o cliente. Aliás, como o aluno não tem um cliente durante o curso acaba gerando uma idéia errada de que existe uma análise de sistemas inventada. Também dificilmente se aborda o tema de como confeccionar orçamentos e propostas de projeto, que são artefatos que devem ser entregues antes de começar uma atividade no mercado.
- Análise de Sistemas II – nessa disciplina damos continuidade ao ensino de técnicas de análise já entrando pela parte de projeto de software. Mais uma vez os alunos esquecem o que viram e gastamos um tempo precioso com revisões. Aqui é o ponto onde a análise chega ao desenvolvimento propriamente dito, só que o aluno viu a sua última programação em uma disciplina anterior e acaba não associando as dificuldades que tinha com o fato de que na época não sabia fazer análise. Pelos motivos mais diversos o professor também não consegue fazer essa ponte para o aluno lembrar desse detalhe.
Existem algumas outras disciplinas que fazem parte desse ciclo, cada curso tem a sua estrutura então não adianta falar de forma muito especÃfica. O objetivo é achar um caminho para que o aluno possa costurar essas informações. Sim porque diferente do que muitas pessoas acreditam o aluno deve ser um participante ativo e responsável pelo seu aprendizado também, não se pode ficar esperando simplesmente que o professor despeje toda a informação e pronto.
O problema do isolamento é que no mercado de trabalho o aluno precisa saber encadear essas disciplinas formando um processo adequado, processo esse, aliás, que não conseguimos ensinar porque acaba não sobrando tempo. Isso é uma das coisas que reforça o artesanato de software.
Ótimo, então fazemos listar o que temos atá agora:
- O problema – os alunos não conseguem percerber a relação entre as disciplinas
- A causa – as disciplinas são ensinadas de forma isolada sem uma clara exposição de suas relações, além disso são ordenadas de acordo com o grau de complexidade o que favorece o aprendizado, mas não a percepção das relações
- A consequência – os alunos não conseguem trabalhar com um processo de desenvolvimento de software e precisam aprender isso as pressas durante o projeto final. Muitas vezes isso acaba gerando problemas no mercado de trabalho
Então para sanar esse problema, temos que disponibilizar para os alunos um guia que mostre o relacionamento entre as disciplinas e que permita que o próprio aluno possa identificar as relações até mesmo com outras disciplinas. Mais do que isso o aluno será capaz de associar isso com um processo de desenvolvimento de software antes de chegar ao final do curso. É claro que no mercado de trabalho o aluno será exposto a diversas variações de metodologias de trabalho e processos de desenvolvimento, mas tendo usado um primeiro processo já durante o curso pode garantir um melhor desempenho desse aluno.
Vamos então pensar sobre isso, acredito que uma figura aqui caia bem, mas antes vamos lembrar que para fazer um sistema ou aplicativo é necessário programar, mas para programar é necessário analisar o problema antes. Para isso é necessário aprender análise, porém como isso esta diretamente relacionado com entender para que serve a análise, então ensinamos a programação “amadora” antes.

As linhas tracejadas na figuram mostram uma relação, ou seja, em Análise vemos algumas técnicas semelhantes as que foram discutidas em bancos de dados, e em Análise II temos que discutir como traduzir para código tudo que foi analisado. Então devemos ficar atentos para o fato de que o ciclo de desenvolvimento de sistemas só está completo (ou pelo menos o mais próximo disso) quando completamos essas 5 disciplinas E discutimos as relações entre elas. Não podemos esperar que seja delegado para um único professor a explicação dessas relações, embora seja fundamental que o professor de Análise II discuta isso em sala. É necessário que durante as 5 disciplinas os alunos sejam conscientizados sobre o que vão encontrar, de forma contÃnua.
Ao final eles devem ser capazes de perceber as fronteiras de cada disciplina e eles mesmo fazerem as costuras para que seja percebido o processo de software que foi proposto E ensinado.


Caro Paulo Motta!
Concordo plenamente com tudo o que foi dito aqui nesse post, inclusive acho que essa deveria ser uma prática de orientação dada no inÃcio do curso para os alunos, porque assim como eu, conheço várias pessoas que simplesmente “desanimam” porque não conseguir fazer uma ligação entre uma matéria e outra. Esse tipo de orientação é essencial para o aluno, principalmente os que nunca programaram, tenham uma noção do caminho que devem percorrer na hora de montar a sua grade, levando em consideração que desenvolvimento de softwares é complexo. Vejo que os alunos que já programaram ou trabalham na área são favorecidos por “alguns” professores (Não é o seu caso) pois o mesmo não dá a importância devida ou porque não quer ou porque não está preparado para isso.
Aliás só consegui aprender alguma coisa de Java nas suas aulas, levando em consideração que já tive dois professores antes de você.
[...] um ciclo de disciplinas que pode levar de 1 a 2 anos. Além disso, para que o aluno entenda como as disciplinas se relacionam também existe um tempo próprio. Então até que o aluno-candidato esteja pronto para [...]