Desenvolvimento

27 dez, 2013

Aprendendo a programar de forma divertida – #Melhores2013

Publicidade

Olá, pessoal! Neste artigo vou abordar uma dúvida que muitas pessoas possuem ao começar na área de desenvolvimento de aplicações e sistemas: existe uma maneira divertida de aprender a programar?

Figura1_ProgramarDivertido

Bem, para começarmos é importante dizer que a programação é uma das disciplinas que envolvem competências da área de ciências exatas e, por causa disso, muita gente já torce o nariz e pensa que vai trabalhar com números e coisas chatas. Mas não precisa ser assim! Como veremos, há muitos recursos para tornar o aprendizado da programação de computadores divertido, independente de qual linguagem, plataforma, ferramenta ou recurso tecnológico for utilizado. Afinal de contas, uma certa babá já dizia em 1900 e guaraná com rolha que na execução de qualquer trabalho tem que haver um elemento de diversão. E isso vale para o aprendizado de programação também!

Um ponto que deve ser deixado claro logo no início é que quando falamos sobre diversão, provavelmente cada pessoa pensa na sua definição pessoal do que é divertido. Ou seja, a diversão, assim como o humor, é subjetiva e o que pode ser muito divertido e até hilário para uma pessoa, pode ser completamente sem graça para outra. Quando falamos sobre diversão ligada ao aprendizado de programação estamos nos referindo a aquele tipo de diversão em que obtemos quando jogamos xadrez, abrimos um brinquedo para ver como ele funciona, cozinhamos um prato de uma receita nova ou passamos daquela fase difícil de um jogo eletrônico. De qualquer maneira, o tipo de diversão que pode ser associada com o aprendizado de programação é aquela em que nos divertimos produzindo algo de maneira ativa e não passiva (tal como assistir a um show de comédia em pé ou sentamos em um carrinho de uma montanha russa). Ou seja, o foco deve ser em atitudes mais construtivas do que contemplativas.

Figura2_ProgramarDivertido

Outro detalhe importante é que geralmente encontramos material de estudo (livros, cursos, vídeos, exemplos, projetos, exercícios) didático e divertido para quem está começando a aprender a programar. Porém, quem já possui um pouco de experiência e quer fugir dos exemplos simples, procurando assuntos mais avançados, raramente vai encontrar material divertido. Isso quer dizer que, quanto mais complexo o assunto for, mais áspero, chato e entediante o material vai ser. Infelizmente, isto ainda é verdade e parece que os produtores de conteúdos avançados têm em mente que a partir de certo nível de complexidade o senso de humor e os aspectos cômicos e divertidos devem que ficar de fora dos estudos.

Figura3_ProgramarDivertidoFigura4_ProgramarDivertido

O primeiro recurso para aprender programação se divertindo tem a ver com jogos. Inicialmente ligados à área de entretenimento, já faz algum tempo que educadores e professores utilizam jogos para uma aprendizagem lúdica. Gostaria de destacar dois jogos casuais que podem ser utilizados para ensinar aspectos básicos de programação como sequência de passos, modularização e recursão. Um deles é o LightBot, um jogo em flash onde é preciso colocar ordens para que um robô vá de um ponto a outro do tabuleiro e acenda uma lâmpada. O outro é o jogo gratuito para a plataforma iOS chamado Cargo-bot, onde é preciso indicar a sequências de ações necessárias para partir de um estado inicial de blocos coloridos e chegar ao estado final. Estes dois jogos são básicos e exercitam a maneira de pensar necessária para quem quer programar.

Figura5_ProgramarDivertido

Segundo a linha gradual de recursos para aprendizado divertido, o próximo grupo de recursos se resume aos ambientes de programação visual. Nesta abordagem geralmente utiliza-se algum tipo de linguagem de programação simplificada que fornece suporte básico para variáveis, desvios condicionais, loops, modularização, recursos para captar dados de dispositivos de entrada e fundamentos de linguagens de programação funcional. Um exemplo clássico é a linguagem de programação LOGO, criada para ensinar crianças a fazer desenhos a partir de primitivas gráficas simples. Existem vários interpretadores de LOGO, inclusive um disponível online.

Figura6_ProgramarDivertido

Outro ambiente também voltado para crianças é o Kodu, um jogo para Xbox que permite a criação de jogos simples a partir de uma linguagem de programação visual que pode ser utilizada com o controle do Xbox. Novamente, esta abordagem permite um contado inicial com alguns dos recursos utilizados para a programação.

Figura7_ProgramarDivertido

Recentemente, a plataforma de programação Scratch vêm ganhando popularidade por permitir o uso fácil de elementos de programação através da ação de clicar e arrastar. O principal foco dela é facilitar o aprendizado a partir de blocos de programação pré-definidos para a criação de pequenas animações e pode ser utilizado produzir jogos com interatividade pelo teclado, animação de imagens e sons. Há, inclusive, propostas de ensino utilizando este software junto com o Raspberry Pi para ensinar conceitos fundamentes de programação para crianças. Este link mostra outas abordagens voltadas o ensino divertido de programação para crianças.

Ainda focando em crianças, este estudo mistura o uso de marionetes como recurso para aprendizado de programação. O interessante neste caso é o emprego de aspectos culturais de forma didática associada ao aprendizado em comunidades carentes que não possuem recursos tecnológicos, mas mesmo assim podem aprender a programar. Sem contar que tal atividade pode ajudar a identificar prodígios e indivíduos que possivelmente podem se tornar muito proficientes na área da programação e, em geral, em qualquer uma das ciências exatas. Este é, na minha opinião, um uso mais nobre e adequado de marionetes do que o simples entretenimento e emprego do conteúdo para fins publicitários.

Figura8_ProgramarDivertidoFigura9_ProgramarDivertido

 

Uma das frustrações de quem começa a aprender a programação é a falta de resultado imediato e a consequência das linhas de programação no mundo físico fora do computador. Bem, nestes casos pode ser interessante tentar programar algum tipo de sistema robótico cuja saída do programa seja representada por movimentos de um robô. A LEGO foi pioneira com um kit para desenvolvimento de robótica chamado MindStorm que é muito  interessante, pois além dos componentes físicos que devem ser montando existe uma plataforma de desenvolvimento visual que permite programar o robô em uma sequência de passos sem se preocupar com detalhes de nomes de comandos, parâmetros de funções, sintaxe, regras de precedência, operadores e tantos outros elementos que tornam o aprendizado de programação complexos, chatos e até maçantes. Mesmo quem não possui meios de se obter este kit é possível trabalhar com o simulador ou procurar outras abordagens semelhantes como este , este, este e este projeto.

Figura10_ProgramarDivertido Figura11_ProgramarDivertido Figura12_ProgramarDivertido

Existem muitos recursos divertidos para quem está procurando material de aprendizado focado em uma plataforma ou linguagem de programação específica. Na parte de livros podemos notar que algumas editoras resolveram investir em outras maneiras de explicar o conteúdo como, por exemplo, a série de livros Use a Cabeça (Head First) e também Os Guias Manga. Aqui uma recomendação pessoal: quem está estudando conceitos profundos de computação e quer um livro muito bom que explora a relação de algoritmos e matemática recomendo o ótimo Matemática Concreta. Além de ser co-escrito por um dos mais importantes professores da área da computação, Donald E. Knuth, o uso do recurso simples de anotações na margem das páginas faz dele o livro de matemática voltado para computação mais divertido que já li. Mas não se enganem: não é um livro de leitura fácil, seu conteúdo é complexo e os tópicos são fortemente baseados em equações, notações e elementos matemáticos que exigem muito do leitor que não está acostumado a enxergar a computação desta maneira. Contudo, isso não deixa o livro menos divertido do que qualquer comédia estrelada pela celebridade cômica da vez.

Figura13_ProgramarDivertido

Quem está procurando material didático no formato de curso online de programação se depara com diversas opções. O CodeAcademy segue uma linha interativa muito divertida. Já os vídeos do site FunProgramming são recomendados para designers, web masters e profissionais da área digital ou gráfica com tendência artística, pois todo o conteúdo é apresentado através da linguagem Processing. Outra abordagem é apresentado no site TheCodePlayer cujas animações simulam o cenário onde o aprendiz olha por cima do ombro de quem está programando.

Figura14_ProgramarDivertidoComo não poderia deixar de ser, o uso de sarcasmo, contra-exemplos, anomalias e bizarrices também pode representar uma alternativa divertida no aprendizado de programação. O blog Coding Horror é um exemplo deste tipo de recursos, assim como o concurso internacional de código em c ofuscado e outros. Há também uma boa dose das populares tirinhas e web comics, cujo tema é programação e que se não ensina como programar, ao menos faz os leitores rirem das situações no mínimo inusitadas pelas quais profissionais ligados à programação se deparam.

Há quem diga que para aprender de forma divertida basta encontrar um projeto que o aprendiz considera legal e sair codificando. Nesta filosofia, vale a pena dar uma olhada em sites especializados para desenvolvimento de jogos como o GameDev e o Open Source Arcade, pois eles possuem diversos recursos incluindo repositórios no Git Hub com o código fonte completo de jogos profissionais e semi-profissionais. Há também diversas listas com projetos que podem ser divertidos de programa (aqui, aqui e aqui).

O aprendizado de programação pode ser algo muito solitário. Às vezes brinco com os meus alunos dizendo que quem está começando a aprender precisa ter um índice HBC muito alto (HBC significa Horas de Bunda na Cadeira). Mas hoje em dia não precisa ser mais assim: existem diversas atividades em grupo que além de tornar o aprendizado de programação mais divertido também proporcionam um aspecto social muito e, quem sabe, num destes eventos o aprendiz encontre alguém para um projeto e deste encontro apareça uma semente para uma nova empresa?

Figura15_ProgramarDivertido

Um dos eventos que vêm ganhando muito destaque atualmente e que considero divertidíssimo é o conding dojo. Neste tipo de encontro geralmente um problema é proposto por um programador mais experiente e quem está participando é livre para trocar ideias e desenvolver a sua solução da maneira que achar melhor. O iMasters orgulhosamente fomenta, patrocina e conduz alguns dojos de programação para quem estiver interessado neste tipo de evento. Outra boa iniciativa é participar das maratonas de programação hacker, as já conhecidas hackatons. Neste contexto vale a pena participar com um grupo já formado e sair projetando a solução. Nem sempre atrativa a novatos, esta atividade é muito divertida e recomendada para quem está começando com a programação e quer aprender não só aspectos técnicos para também observar como programadores mais experientes trabalham e alcançam níveis de produtividade impressionantes.

Para finalizar, outra sugestão divertida que ajuda quem está começando a programa é ouvir podcasts que falam sobre este assunto. Sou suspeito para falar, mas o DatabaseCast possui alguns episódios para iniciantes como este aqui. Também recomendo este, esta série de episódios (parte 1, parte 2, parte 3, parte 4, parte 5  e parte 6)  e também este programa que não necessariamente ensinam passo a passo a programar, mas que com certeza ajudam a tirar um pouco a cara da frente do monitor e ainda se divertir durante o aprendizado de programação.