Por Draylson Micael de Souza*
Recentemente, fui apresentado à proposta de inserir aspectos relacionados ao desenvolvimento de software livre nos currículos de cursos de computação. Procurando por experiências nesse sentido, pude encontrar diversos relatos envolvendo o desenvolvimento de projetos de software livre em disciplinas de Engenharia de Software. Basicamente, como parte das atividades a serem realizadas na disciplina, os alunos são encorajados a contribuir com um projeto de software livre. Em uma perspectiva semelhante, percebi que atividades como essa também poderiam ser interessantes no contexto de disciplinas introdutórias de programação. Por isso, resolvi levantar essa discussão.
Disciplinas introdutórias de programação desempenham um importante papel na formação dos alunos de cursos de computação. Em geral, elas fornecem a base para a maioria dos tópicos relacionados à área. No entanto, apesar de sua importância, tais disciplinas levantam grandes desafios tanto para os professores como para os alunos. Um ponto bastante abordado, por exemplo, é a motivação, já que muitos alunos consideram a programação uma atividade tediosa e cansativa. Dentre as iniciativas propostas a fim de melhor motivar os alunos no aprendizado de programação estão a introdução de colaboração e de atividades aplicadas ao mundo real. E é justamente ai que o software livre poderia ser inserido: contribuindo no desenvolvimento de um software livre, os alunos poderiam praticar suas habilidades de programação em um projeto real e colaborativo, tornando o aprendizado mais interessante e motivador.
Os benefícios poderiam ser muitos. Além da questão motivacional, os alunos seriam fortemente estimulados a desenvolver habilidades de compreensão e análise de programas. Para contribuir no desenvolvimento de um software livre, os alunos teriam que previamente analisar e entender o código do software livre em questão. Procurando entender o código alheio, os alunos também entenderiam, na prática, a importância de uma boa documentação, estilo e modularização do código. Além disso, eles estariam desde cedo habituando-se a contribuir em projetos de software livre. Isto poderia gerar um aumento significativo no número de colaboradores e, consequentemente, fornecer um maior incentivo ao desenvolvimento de projetos desse tipo.
Mas nem tudo são flores. Contribuir no desenvolvimento de um projeto de software livre pode ser um desafio para os novatos em programação. De fato, tais projetos envolvem muito mais complexidade do que os programas fictícios que os alunos estão acostumados a ver em slides de aula e livros-texto. Além disso, o aprendizado de ferramentas de apoio, como as ferramentas de gerenciamento de configuração, comunicação e controle de falhas, em adição ao aprendizado e desenvolvimento das habilidades de programação, pode gerar uma carga excessiva de informação a ser assimilada pelos alunos. Por fim, as comunidades, lista de e-mails e demais canais de comunicação podem se tornar ambientes hostis para os iniciantes em programação. Infelizmente, alguns desenvolvedores experientes ainda tendem a ser pouco tolerantes com os novatos.
Apesar dessas dificuldades, acredito que atividades envolvendo contribuições em projetos de software livre podem trazer benefícios significativos para o aprendizado de programação. Iniciativas como o Google Code-in e o KDE/Junior Jobs definem pequenas tarefas e defeitos considerados fáceis de resolver para aqueles que desejam fazer as suas primeiras contribuições. Iniciativas semelhantes poderiam ser aplicadas aos alunos novatos em programação. Ferramentas e ambientes com propósito pedagógico também poderiam tornar o aprendizado menos impactante. Por fim, a criação de canais de comunicação, comunidades e mentores especializados em ajudar os novatos em programação seria outra alternativa interessante para amenizar os problemas mencionados.
Desde sempre, e cada vez mais, a programação é uma atividade de equipe; além disso, programadores trabalham muito mais modificando código preexistente que criando código do zero. Por conta disso, a experiência com o software livre pode ser uma importante aliada no ensino da computação; é preciso incentivar os responsáveis pelos currículos da área a reconhecer e aproveitar esse recurso.
*Draylson Micael de Souza é estudante de computação e pesquisador em ensino e aprendizagem