Blog da Improve It

Apelo: parem de "ensinar" Comp. I nas faculdades!

Publicado por Vinicius Manhães Teles há mais de 3 anos.

Faço um apelo aos cursos universitários de computação: parem de ensinar "Comp. I". Ao invés disso, usem o horário que seria da aula para os alunos fazerem Dojo de programação. Essa é uma ideia que certamente será ignorada, mas, estou certo de que poderia elevar demais a qualidade da formação dos "calouros" de computação, se fosse adotada.

Todo curso de computação tem uma matéria introdutória para os alunos "aprenderem" a arte da programação. Em alguns lugares chama-se Computação I, em outros Introdução à Programação e assim por diante. Com raríssimas exceções, o aluno começa o semestre sabendo pouco de programação e termina sabendo tão pouco quanto, mas com a falsa sensação de saber um pouquinho mais. Em outras palavras, é tempo mal investido, tanto para os professores, quanto para os alunos. Em alguns casos, é o suficiente para o aluno abandonar a Computação.

Isso não reflete a falta de esforço do professor em fazer os alunos aprenderem. Mas, sim a ineficácia do método, em comparação a outros mais poderosos e prazerosos. Estou me referindo ao Dojo, naturalmente. E para mostrar o porquê, citarei o exemplo do que está acontecendo na UFF.

Ontem estive no Dojo de programação da UFF, que acontece toda quinta à noite e é aberto a toda a comunidade de desenvolvimento do Rio de Janeiro, Niterói e adjacências. Desde a semana passada, estamos contando com a presença de muitos calouros, o que é excelente. Só que ontem foi especial.

O problema escolhido foi o Jokenpo, ou Pedra, papel e tesoura. O enunciado do problema é simples, mas a solução tem uns detalhezinhos que deixam espaço para a galera pensar um bocado.

Como acontece em todo Dojo, os participantes programaram em par, em períodos de tempo bem curtos (4 ou 5 minutos).

Programação em par no Dojo

Programação em par no Dojo

O pessoal sempre começa fazendo um teste automatizado e, em seguida, a implementação mais simples que possa passar no teste recém projetado. Tudo no melhor estilo baby steps. E a linguagem escolhida para ontem foi Javascript, com o uso do framework de BDD JSSpec.

Dojo na UFF

A solução começou simples, mas rapidamente avançou para um código que estava desagradando a todos. Em um certo momento, havia umas vinte linhas de código com inúmeros if-then-else pelo caminho. Os testes passavam, mas o código estava horrível de entender. Eu já não conseguia mais olhar para ele. Doía demais.

Foi quando parei de olhar o código e comecei a olhar o enunciado do problema novamente. Tinha que haver uma forma decente de fazer aquilo e comecei a criar alternativas na mente. Lá pelas tantas, tive uma ideia que permitiria limpar toda aquela bagunça e reduzir aquele monte de condições a uma única condição de exceção, aliada a uma outra estratégia de solução.

Dojouff

Quando chegou o momento da platéia se manifestar com sugestões, dei a minha ideia. A galera viu que fazia sentido, mas antes que pudessem começar a implementar, outra pessoa deu sua ideia. E a boa notícia é que era muito melhor que a minha. Seguindo a estratégia sugerida, não teríamos mais nenhum *if* e o código ficaria incrivelmente claro e fácil de compreender.

A nova estratégia foi explicada no quadro, não porque fosse complicada, mas porque envolvia o uso de um mecanismo que não era tão familiar a todos os calouros. Nada específico de programação. Apenas um recurso simples da matemática, que não vou mencionar aqui para não estragar o prazer de quem vier a participar de um Dojo com este tema. Feito isso, aqueles que estavam pilotando o computador começaram a alterar a implementação.

Minutos depois, a nova implementação estava pronta e rodaram os testes. Todos passaram gloriosamente! E nesse momento fez-se a luz. E o código antigo foi deletado. E o povo aplaudiu! De verdade! :-)

Rafael, o autor da solução, é aluno de Computação da UFF. Está no terceiro período e bolou uma estratégia que deixou todos nós, inclusive os mais experientes, estupefatos. No meu caso, por exemplo, devo ter mais tempo "mexendo" com computadores que o Rafael tem de vida. Mas, ainda assim, ele criou uma estratégia que nem eu, nem nenhum dos demais, foi capaz de bolar. E esse é o tipo de coisa que acontece direto nos Dojos.

E então a ficha caiu para mim. Comecei a olhar para os calouros com inveja. Por que não tive acesso a esta técnica (Dojo) quando eu era calouro? Aliás, nem em toda a graduação, nem durante o mestrado! Aí percebi quanto tempo foi investido em formas menos eficazes de aprendizado.

O Dojo é um ambiente de aprendizado impressionante. As pessoas aprendem em grupo, o que é sempre muito legal. O exercício é colaborativo, então, ninguém sai perdendo. Todos saem ganhando. Os participantes programam em par e aprendem a apreciar o valor dessa técnica. Além disso, têm que fazer testes automatizados antes de implementar cada funcionalidade, portanto, aprendem a trabalhar com TDD ou BDD. De quebra, aprendem a usar o framework de teste da linguagem que está em uso. Ah sim, eles eventualmente aprendem um pouco sobre a linguagem escolhida para a sessão do Dojo. Tudo isso é muito bacana, mas é só o começo.

Uma das coisas mais legais que acontecem em um Dojo é que os participantes são expostos a diferentes abordagens para resolver o mesmo problema. Portanto, eles têm acesso a inúmeras estratégias novas para modelar o problema. Se comparássemos o aprendizado da arte de programar com o aprendizado de um novo idioma, diria que estamos ampliando nosso vocabulário, toda vez que somos expostos a novas formas de modelar o mesmo problema, por mais simples que seja o problema.

O resultado inevitável disso é a refatoração. Os participantes aprendem uma nova estratégia ao longo da sessão do Dojo, refatoram o código e, com os testes, verificam se tudo continua funcionando. Portanto, refatoração é mais um tema aprendido. E ainda não acabou.

Sempre há uma retrospectiva no final de cada Dojo, na qual as pessoas avaliam o que funcionou bem e o que poderia ser melhorado. Retrospectiva é uma técnica aclamada em todos os métodos ágeis de desenvolvimento de software. Está presente no XP, no Scrum e em qualquer abordagem bem sucedida de desenvolvimento.

Retrospectiva

Para que não haja dúvidas, vamos fazer uma rápida revisão de tudo o que é aprendido no Dojo:

E tudo isso em apenas 2 horas de Dojo, exatamente o mesmo tempo que dura uma aula convencional nas universidades. Compare o aproveitamento dessas duas horas com o aproveitamento de duas horas de uma aula tradicional de programação! A diferença é escandalosa.

Em muitos cursos de computação os calouros têm alguma matéria do tipo "Comp. I" com duas aulas por semana, cada uma com duas horas de duração. Imagine se não houvesse aula, mas apenas Dojo. Então, teríamos duas sessões de Dojo por semana, durante um semestre inteiro. Se isso fosse adotado, tenho absoluta certeza de que os calouros chegariam no final do semestre sabendo programar mais e melhor que 90% daqueles que se formam em computação. E não só isso, eles saberiam programar mais e melhor que a maioria dos professores universitários que "ensinam" programação!

Afinal, quantos professores dominam TDD e BDD, boas práticas de orientação a objetos, técnicas de refatoração, tudo isso em diferentes linguagens e ainda têm o hábito de programar em par e fazer retrospectivas? Garanto que poucos. E é aí que a minha ideia começa a ir por água abaixo.

Porque para que ela fosse adotada, seria preciso, primeiro, vencer uma barreira cultural que me parece intransponível. A ineficiência do "cuspe e giz" aliada à insanidade das "provas" que não avaliam absolutamente nada, compõem uma muleta atrativa demais para deixar de ser usada. Mas, ainda que fosse possível vencer essa barreira, teríamos que lidar com um mar de professores que simplesmente não sabem programar bem.

Quando penso em tudo isso, não consigo deixar de lembrar da Fábula dos Porcos Assados. E vejo o quanto as universidades "queimam florestas" para "ensinar" muito pouco, ao longo de muito tempo, quando há atualmente uma abundância de técnicas de ensino mais úteis, quase sempre envolvendo algum tipo de jogo.

Aliás, cada vez mais me dou conta da importância de trazer jogos para o processo de aprendizado. Eles são muito poderosos, tanto no sentido de transmitir a mensagem, como fazer com que ela fique gravada para sempre. Quando fazia consultoria de XP, costumava usar instrumentos como o Jogo da Comunicação, o XP Game, o Extreme Hour, entre outros. Todos eram muito eficazes, embora consumissem pouco tempo e fossem muito divertidos.

Seria fantástico se pudéssemos remodelar o sistema de ensino em torno de jogos como esses. Estou certo de que todos aprenderíamos muito mais, em menos tempo e nos divertiríamos demais no processo.

Participe de um dos muitos Dojos do estado do Rio. Acesse o site do Dojo Rio, entre na lista de discussão e apareça no Dojo mais próximo de você! De quebra você ainda vai ter a chance de curtir o pós-Dojo, que torna tudo ainda mais divertido.

4100612024 6dbe 2cf 27d

4145300999 540b 0de 0cd

Escrito por: Vinícius Manhães Teles (Twitter).

Obs: a maioria das fotos deste artigo são de autoria do Pedro Menezes que as disponibiliza como Creative Commons. O vídeo foi feito pelo Henrique Bastos.

Tags ,  | 63 comentários

O que você achou? Coloque seus comentários e sugestões abaixo!

Acompanhe o RSS dessa página.

Comentários (63 até o momento)

  1. tiago disse aproximadamente 4 horas depois:

    posta o problema e a solução genial, uai =p

  2. Fabricio Buzeto disse aproximadamente 5 horas depois:

    Nossa,

    Esse post me deu vontade de parar de lamentar ter dado aula de CB no mestrado e tentar novamente.

  3. Fernando Pinheiro disse aproximadamente 5 horas depois:

    Muito bacana a proposta de utilização no ensino. Durante a graduação também fiquei "apavorado" com o nível de conhecimento em programação, mesmo nas fases avançadas! Aproveitando o canal, divulgo, ao pessoal de Floripa e região, o Dojo Floripa: http://groups.google.com/group/dojofloripa

  4. Rogerio disse aproximadamente 6 horas depois:

    Alguem sabe se existe um dojo em Belo horizonte ?

  5. Tiago A. disse aproximadamente 6 horas depois:

    Adorei a idéia. Também acho muito fraco o ensino. Vou propor para o coordenador dos cursos de computação na faculdade.

  6. Eloi Jr disse aproximadamente 7 horas depois:

    Muito interessante! Sou responsável pelas disciplinas de estrutura de dados I e II de uma faculdade da minha região e vejo que falta essencialmente aos alunos muita noção de algoritmo. É muito difícil ver que o aluno até tem vontade mas não consegue construir um código simples devido a ausência desse tipo de exercício mental. Eis a questão: como ensinar programação de fato?

  7. Alex disse aproximadamente 7 horas depois:

    Que fotos bizarras... Só tem nerd, rsss

  8. Adolfo Neto disse aproximadamente 7 horas depois:

    Concordo em parte.

    Sim, o Dojo parece ser uma atividade de aprendizagem maravilhosa. Digo "parece" porque nunca participei de nenhum (aqui em Curitiba vai ter um hoje na UFPR mas não poderei estar lá).

    Não podemos nos esquecer que o objetivo num Dojo é somente que os participantes aprendam. Num curso universitário, há um outro requisito: verificar se o aluno aprendeu. Para grandes turmas, com mais de 40 alunos, não consigo pensar em um instrumento melhor (do pinto de vista de tempo gasto para elaborar e corrigir) do que a tradicional prova. Aceito sugestões...

  9. Rafael Carvalho disse aproximadamente 7 horas depois:

    Muito show o post! E o dojo em Niterói ontem foi de fato extraordinário!

    Esse ambiente que o dojo cria, proporciona experiências incríveis entre o grupo que não se vê em outro lugar.

    Ver a galera aceitar uma sugestão, apagar todo o trabalho e fazer de novo em busca de um código mais claro foi sensacional!

  10. Vinícius Manhães Teles disse aproximadamente 7 horas depois:

    Adolfo,

    Infelizmente só é possível compreender exatamente o que quero dizer com esse post depois de participar de algumas seções de Dojo. Senão, fica "faltando alguma coisa". Então, vamos fazer um combinado.

    Assim que você tiver participado de alguns Dojos e tiver vivenciado o que nós temos vivenciado, por favor, reveja o artigo e avalie até que ponto o que coloquei aqui faz sentido. É absolutamente vital participar do Dojo, senão não dá para a gente ter a dimensão.

    Eu mesmo, "conheci" o Dojo durante anos do ponto de vista conceitual. Mas, só este ano comecei a frenquentar. E aí a ficha caiu! ;-)

    Garanto que, vendo seus alunos participarem de um Dojo, durante meses, você não sentirá nenhuma falta de aplicar uma prova. E, em todo caso, vamos ser honestos: desde quando prova mede alguma coisa? E ainda dá o maior trabalho para corrigir!

    Grande abraço,

    Vinícius Teles

  11. Kássio Machado disse aproximadamente 8 horas depois:

    caraca, tem gente de Belém do Pará aí participando do DoJo, que bacana!

  12. Jônatas Davi Paganini disse aproximadamente 8 horas depois:

    Já fiz a minha parte e encaminhei o link deste post para os meus professores!

  13. Charleno Pires disse aproximadamente 8 horas depois:

    Opa Vinícius,

    Você disse tudo o que gostaria de dizer. Sai da área privada, e agora tenho feito parte do time de professores do Instituto Federal no Piauí e venho buscado exatamente isso, formas mais didáticas pra ensino de lógica e programação i, disciplinas que estão sob a minha responsabilidade.

    Quero fazer um adendo ao seu post.

    1) O Portugol atual usado no ensino de Lógica, ao meu ver está defasado, com base em Pascal, C, ou seja, nada de Orientação a Objetos. Poderia ser unificado, um padrão nacional, com base em linguagens como Ruby e Python.

    2) Uma outra realidade que poderia ser abordada é referente ao ensino da matemática no ensino fundamental e médio que em muitos lugares no Brasil, é empurrado com a barriga, fazendo com que alunos cheguem menos preparados para entender conceitos em lógica, e ...

    Para o ensino em si, concordo totalmente com vc, quando diz que o aprendizado através de jogos, flui melhor. Tenho testado alguns conceitos didáticos com base conhecimento como algo coletivo, se aprendendo de forma social, como no dojo, e tem surtido um efeito positivo.

    Quero parabenizá-lo pelo post, e dizer que pode contar comigo pra fazer o apelo no meio acadêmico. ;)

  14. Daniel Wildt disse aproximadamente 9 horas depois:

    Vinicius,

    Aos Dojos, sim!!! Eles devem ser usados dentro dos cursos de computação! Muito válido!

    As disciplinas que ministro na faculdade, todas elas envolvem o trabalho rotacionado e a questão de compartilhar conhecimento.

    Faço isto acontecer nas disciplinas de programação avançada onde os alunos estão aprendendo a trabalhar com Ruby e usamos isto também na disciplina focada em métodos ágeis, onde os alunos agora estão colocando em prática o que aprenderam na teoria, aplicando práticas de eXtreme Programming.

    O Dojo é a forma mais legal de fazer este conhecimento fluir.

    Outro exemplo, amanhã temos na @FACENSA a partir das 09h um dojo de Ruby, onde vamos fazer o kick-off de um projeto opensource para a Faculdade. E vamos iniciar programando, um pequeno problema que faz parte deste software, fazendo a galera que vai participar do projeto opensource se conhecer e programar em par.

    Sucesso para todos os que usam Dojos nas atividades acadêmicas. Aos que não usam, que usem este exemplo apresentado pelo Vinicius e outros que estão por aí.

    E claro, toda empresa também deveria ter um horário disponível para os funcionários realizarem Dojos.

  15. Bani disse aproximadamente 10 horas depois:

    Já participei de vários Dojos e acho a idéia de substituir a aula de introdução a computação por dojos total nonsense. Um mínimo de base teórica sobre o que acontece dentro do computador quando você roda um programa é essencial.

  16. Vinícius disse aproximadamente 11 horas depois:

    Oi. A partir de que ano os calouros são introduzidos ao DOJO?

    Pq, aparentemente, incluir javascript com frameworks não me parece muito possível para pessoas do primeiro ano (ou talvez apenas nos últimos meses).

    E o que um terceiro anista estava fazendo por lá? Os DOJOs envolvem alunos de outros anos?

  17. Fernando Pinheiro disse aproximadamente 11 horas depois:

    Vejo que está gerando bastante discussão!

    Já participei de uma maratona de programação, onde vários problemas eram propostos, com as entradas e saídas esperadas, e basicamente você deveria desenvolver um algoritmo. Isto era um primórdio de TDD, a diferença crucial era que ao submeter a solução seu algoritmo era rodado com base em outras entradas e saídas esperadas, obviamente válidas se executadas com o algoritmo correto.

    Vencia a equipe que resolvesse mais problemas... porque não aplicar um sistema similar? Melhor: porque não elaborar um sistema livre (será que já não existe?), acessível a qualquer universidade, faculdade, professor e aluno, no qual o professor possa passar aos alunos os problemas e os mesmos submetam? Isto seria uma forma de avaliação APLICADA a TDD.

    Acredito que o assunto ainda possa ser explorado e, sim, devemos tentar aplicar ainda mais nas faculdades.

    Após 10 anos de programação tomei conhecimento do Dojo Floripa e, assim como o Vinícius, posso afirmar que a experiência é muito bacana, vai além de uma simples implementação.

    Abraços, ótimo ver que a comunidade acadêmica está tomando conhecimento e fazendo sugestões.

  18. MarcosX disse aproximadamente 11 horas depois:

    E desde quando Ciência da Computação é igual a Programação? Tirar aulas de introdução a computação pra estudar programação? Sem comentários. Temos que formar cientistas, não peões Java. Fazer um DOJO, com certeza é uma excelente ideia, mas calma lá pessoal.

  19. Jefferson de Carvalho disse aproximadamente 12 horas depois:

    Pensamento meio "pedreiro de software" mas muito válido. É interessante jogar um problema e colocar os alunos para pensarem numa solução, mesmo que feia. Porém, não sou de acordo de substituir as aulas tradicionais de programação pelo DOJO mas fazer um misto entre os dois.

    O autor fala da "insanidade" das provas mas ele nunca se coloca no lugar de um professor que tem um turma de 50 alunos, nem todos interessados e mesmo assim, no final do semestre, vc tem que dar uma nota individual para cada um. Avaliar é muito complicado. Tem aluno que pesca (cola), se escora em trabalho e consegue passar.

    No DOJO é muito bom. Pelas fotos vejo que os alunos são poucos e o mais importante: INTERESSADOS. Desse jeito é fácil colocar um problema e fazer brainstorming. Agora pega uma turma de 50~60 alunos, recém saídos do ensino médio (16~17 anos) e tenta fazer isso. É muito difícil, depende muito da turma.

    Nas minhas aulas eu uso muito a abordagem de jogos. Passei JO-KEN-PO, jogo da velha, forca e muitos outrso simples (até um robô em um labirinto). O uso de jogos para ensinar programação é uma idéia que eu defendo abertamente. Ponto para o autor.

  20. MarcRic disse aproximadamente 13 horas depois:

    É Vinicius,

    Tá na hora de criar um movimento "Comp 1com Dojo já"

    Bom ver a UFF tão bonitinha.

    Na minha época de calouro lá, era FORTRAN e GOTO pra todo lado. argh.

    É isso aí galera continuem mandando ver.

    Grande Abraço.

  21. Henrique Bastos disse aproximadamente 14 horas depois:

    Sensacional! O Dojo vem realmente fazendo a diferença, e o Dojorio está dando um show de comunidade! Parabéns pessoal.

    Concordo plenamente que falta um Dojo na graduação. É simplesmente impossível conquistar um aluno que acabou de entrar no curso de computação com teorias, que para ele, são abstratas e inalcançáveis.

    Entendo, quando o Jefferson fala das dificuldades em dar aulas. O ponto é que estas dificuldades existem porque o modelo de ensino está comprometido. A graduação foi resumida em uma fábrica de insumos para o "mercado de trabalho", perdendo o foco na educação dos estudantes.

    Para fechar, recomendo que vejam esta entrevista do Ricardo Semler.

  22. Igor disse aproximadamente 15 horas depois:

    E aí Vinicius, blz? Então, também fiquei curioso pra saber qual seria essa solução mágica pro problema ae! Teria como vc disponibilizar pra gente? Valeu!

  23. Anderson Severo disse aproximadamente 16 horas depois:

    Concordo integralmente com o Jefferson de Carvalho. Já tive a oportunidade de andar pelas disciplinas de programação das 3 universidades públicas aqui do Ceará e o principal problema é, sem dúvida, interesse dos alunos. Uma sala cheia, tem muita gente desinteressada.

    Nunca participei de um Dojo então não posso falar muito. Mas se existe uma possibilidade, é a de mesclagem disciplina ~ Dojo. Quando agente fica "grande", esquece que um laço mais elaborado é difícil de entender. E fazer um grupo assim, onde os calouros tenham realmente possibilidade de aprender é difícil; quem está mais adiantado às vezes deixa de ajudar pra se exibir. Ressaltando o MarcosX, ainda temos que formar cientistas.

    Concluindo: ótimo post, ressalva para o título. Acabar com a disciplina não dá. Pergunta se o pessoal gosta da cadeira "Introdução à Engenharia". Proporia o fim dela? Segundo: aqui tem nerd, mas esse pessoal das fotos parece que se arrumou todo pra ir pro Dojo. Avisaram que iam fotografar foi? Hehehe

    Parabéns ao autor pelo início de debate. Já está nas nossa principais listas de discussão da computação no estado.

  24. Danilo Cabello disse aproximadamente 16 horas depois:

    Vinicius, conhece alguém que pratica Dojo em São Paulo ou redondezas? Sou estudante da Unicamp (Campinas) e tenho muito interesse em aprender Dojo para aplicar aqui com o pessoal, queria trazer alguém pra exemplificar pra gente.

    Abraço,

  25. Leonardo disse 1 dia depois:

    Concordo com a colocação do Jefferson e gostaria que o Vinícius descorresse algumas palavras sobre isso.

    Abraço a todos.

  26. Jefferson de Carvalho disse 1 dia depois:

    Graças a esse artigo, aqui na UFC de Quixadá, eu e mais outro professor (tutor de maratona) iremos nos mobilizar para criarmos, como atividade extra-curricular, um DOJO.

    P.S.: A Galera vestiu a fantasia de nerd mesmo nessas fotos ein? De longe dá pra ver que programam em pelo menos duas linguagens. :) []s

  27. Jefferson de Carvalho disse 1 dia depois:

    Olá Henrique Bastos. Realmente o que você diz tem muita razão. E este modelo está comprometido desde o ensino fundamental e o ensino médio onde são formados alunos pra passarem no Vestibular. A Faculdade é uma realidade bem diferente. O jovem-adolescente chega com uma cabeça muito bitolada e mudar isso é muito complicado.

    Sobre insumo para o mercado de trabalho, concordo parcialmente com você. Infelizmente (ou felizmente) a realidade é essa: o mercado precisa de analistas, programadores, engenheiros e etc. E o egresso precisa de grana e emprego. A Universidade DEVE formar, sim, egressos preparados para enfrentar essa realidade. Imagina se a Universidade forma só pesquisadores e cientistas, a economia não se desenvolve. Pelo menos não a curto prazo.

    Por isso acho que um curso de TI deve tanto focar na parte científica como também preparar para o mercado. Só que fazer isso não é uma tarefa fácil, principalmente se o corpo de professores não entrar em acordo.

  28. Vinícius Manhães Teles disse 1 dia depois:

    Tiago, Igor e demais.

    O problema foi mencionado no próprio artigo. Quanto à solução, posso enviá-la a quem tiver interesse, nas seguintes condições:

    1. Implemente a sua própria solução para o problema.
    2. Em seguida, coloque sua solução no gist.
    3. Coloque aqui nos comentários o link para o gist de sua solução.
    4. Envia seu email para mim através do formulário de contato.
    5. Eu te envio a solução que foi criada no Dojo.

    Para compreender porque a solução criada no Dojo foi tão bacana, é essencial tentar resolver o problema primeiro e ver como as coisas se encaminham. Senão, você perde a maior parte do aprendizado. Então, como não quero ser estraga prazeres, só irei enviar a solução para os que pedirem, seguindo o roteiro acima. ;-)

    Grande abraço,

    Vinícius Teles.

  29. Jussara disse 1 dia depois:

    Muito bom!!!!

  30. Ismael Stahelin disse 1 dia depois:

    Vinícius,

    Simplesmente fantástico esse post! É sem dúvida uma grande contribuição e incentivo para as comunidades pelo Brasil se organizem em torno de Dojos e cresçam cada vez mais. Ótimo relato mesmo, faz o sujeito querer montar um Dojo na hora! Valeu! Abraço!

  31. Francisco Souza disse 2 dias depois:

    Totalmente sensacional. Tenho certeza que este artigo já virou uma referência para tentar demonstrar o quanto os Dojos são eficientes para o aprendizado de programação, e o quanto o nosso sistema de ensino é falho.

    Parabéns, Vinícius! ;)

  32. Andrei disse 2 dias depois:

    Impressão minha ou faltou dar o enunciado do problema aí? Só diz que o enunciado é simples. Entendo o conceito do jokenpo mas não o que o programa deve fazer.

  33. Andrei disse 2 dias depois:

    Com relação ao artigo: a ideia de integrar dojos nas disciplinas é muito boa, não só em disciplinas introdutórias. Mas que ninguém ache que isso vai resolver os problemas de ensinar Computação em universidades e faculdades por aí afora.

    Como já mencionaram, um grande problema é o interesse. Muitos alunos entram no curso sem saber o que é computação, ou sem estarem particularmente interessados no que o curso realmente é.

    Outra questão importante é que, independente do formato da aula, muita coisa no aprendizado de cada um acontece fora dela. Se o aluno não for estudar, praticar sozinho, e mesmo buscar aprender por conta própria sobre coisas que esteja interessado, não adianta. Boa parte do processo de aprendizado se dá fora da sala de aula.

    Mas é uma boa idéia para aplicar junto com outros formatos de aula, entendendo que não vai fazer milagre.

  34. Alessandro Martins disse 2 dias depois:

    Não, não posso concordar que um Dojo seja um formador de "peão de software". Esta mecanização esta associada ao fato de que, em muitas instituições, a matéria de Introdução não ter acompanhado a própria evolução. Se há peões é pelo simples fato de que tudo que é dado deverá ser provado numa folha ao final do semestre, ao ponto de vermos absurdos como alunos acreditarem (caso pessoal) que um for não funciona se a variável de contagem não for i ou j.
    Infelizmente há este problema, mas não somente em estrutura, mas em matemática, gramática, etc, enfim no método em si. Após 10 anos o governo resolve rever os PCN (Parâmetros curriculares Nacionais) e descobre falhas, que todo mundo percebeu logo de cara. Sim, os métodos estão defasados, mas não foram concebidos assim. Provavelmente ensinar a fazer um algorítimo de fritar um ovo era o correto a se fazer na década de 80, mas agora não. Quantos paradigmas utilizamos hoje? Porque tudo na academia ainda é estrutural? Não, não é um preceito histórico. Se fosse assim, haveria uma disciplina para cada paradigma. Faço uma comparação de cunho pessoal do Dojo aos conceitos célebres de Piaget e Paulo Freire. Porque ainda somos forçados a utilizar a inteligência simbólica se já passamos desta idade? Porque não vislumbrar o que é concreto (mesmo num micro)? Ou melhor, porque não experimentar? Se uma instituição pretende formar cientistas, porque ela mesma não ousa experimentar? Num dojo o que vale e o que fica é o aprendizado. Já fui a Dojos onde a linguagem me era completamente desconhecida; onde não foi possível concluir o proposto; onde 70% do tempo foi gasto na compreensão do problema. E o que foi possível tirar disto? Simples: aprendi a lidar com o novo, a ter paciência, a estudar a resolução, a ouvir opiniões, a entender o "swing" de cada um no desenvolvimento. Enfim, dojo didático e eficiente.

  35. Cleidival disse 3 dias depois:

    Realmente o Vinícius tem razão, incentivar futuros programadores a pensar mais e com mais qualidade logica é com toda certeza uma solução primordial. Como cita, Alessandro Martins, "...aprendi a lidar com o novo, a ter paciência, a estudar a resolução, a ouvir opiniões, a entender...", há uma evolução. Precisamos mudar a forma de pensar e agir nas universidades, principalmente quem esta neste momento com essa oportunidade, o professor. Que precisa antes de tudo, passar por uma experiencia dessas, pois realmente nem todos sabem programar bem, a grande maioria segue apenas o bom e velho manual, que só propõe ao aluno desenvolver soluções pra fritar ovos, e nossas florestas estão acabando...

  36. Jeveaux disse 3 dias depois:

    Talvez para um curso técnico ou tecnologo faça sentido. É óbvio que para quem está no mercado de desenvolvimento, quanto mais a galera souber programar: melhor! Só que temos que lembrar e rever o propósito de cada coisa, como por exemplo o de um curso de ciência da computação: este curso não é para formar programadores, mas cientistas. Na maioria das vezes, nós (empresas) estamos procurando programadores no lugar errado, a verdade é essa. Por isso essa sensação de que as faculdades não estão fazendo a coisa certa.

    A idéia não é ruim, de forma alguma, mas para mim não faz sentido deixar de ensinar introdução a computação para apenas fazer Dojos, mesmo que eu goste muito de Dojos eu não vejo como eles darão base teórica suficiente para um aluno de ciência da computação continuar com os estudos e pesquisas. Certamente o ensino nas faculdades precisa passar por uma atualização e algumas melhorias, talvez até inserir alguns Dojos em algumas disciplinas (como a introdução a computação) seja muito bom.

    Eu achei muito nonsense afirmar com tanta força para deixarem de ensinar "introdução a computação" nas faculdades, sem contar que foi muito piegas fazer isso como "apelo".

  37. Maurício Szabo disse 3 dias depois:

    Puxa, excelente post! Infelizmente, também acho difícil de implantar, ESPECIALMENTE numa universidade pública, aonde eles (ainda) acham que todo o conhecimento está nas mãos dos professores, e tudo o que eles falam é (ou se torna) Verdade Absoluta.

    Mas achei interessantíssima a idéia, nunca pensei nesse assunto, de verdade. Acho, sinceramente, que vou tentar aplicar isso aonde eu trabalho (uma universidade pública, by the way) e vejo se consigo algum resultado.

  38. Daniel disse 3 dias depois:

    Cacete olhando as fotos e as informações comparando com tudo que vivo na na faculdade de informatica digo:

    • Puta que pariu ! Pq quis fazer esta merda !
  39. Flavio Alves disse 3 dias depois:

    Muito interessante a técnica!

    Já passei um email para o meu mestre dos bons tempos de facul para ele dar uma olhada ;)

  40. Rafael disse 3 dias depois:

    Acho a ideia interessante, mas não como aula. Para mim, é mais uma atividade extra-curricular interessante. Pelo que pude perceber, nao existe teoria em uma aula como essa, o que me parece inadequado para a graduaçao. Existe a necessidade de apresentar a teoria, ensinar o basico... me parece interessante para complementar as aulas com pratica e raciocinio

  41. mariachi disse 3 dias depois:

    É sério essa história de Ciências da Computação servir para formar (apenas) cientistas? Quantos alunos por período teria um curso desses, então? Dez?

    Não consigo pensar em um único curso superior cujo propósito seja formar apenas cientistas. Idealmente, um aluno de CC receberia uma formação ampla, com componente teórico forte o suficiente para que ele pudesse seguir para a carreira acadêmica sem sobressaltos, mas com componentes práticos suficientes para que ele pudesse sair para o mercado também. Ou seja, o aluno de CC (idealmente) teria a opção de se tornar cientista, mas não seria a única possibilidade da formação. Claro que na prática não é sempre que acontece assim.

    Já o aluno de um curso técnico/tecnólogo teria uma formação mais rápida e mais prática, voltada basicamente para o mercado. Caso um aluno de curso tecnólogo queira se direcionar à pesquisa, ele terá que, de alguma forma, compensar a falta de uma formação teórica mais completa. O que é perfeitamente possível, mas para quem quer deixar a possibilidade de seguir para a academia e/ou pesquisa futuramente, fazer CC deveria ser a melhor opção.

  42. Kurt Kraut disse 3 dias depois:

    Concordo com o apelo feito aqui, por uma graduação que contemple de fato uma aprendizagem de programação e não uma repetição burocrática de uma tradição acadêmica. Mas tirem o cavalinho da chuva: isso não vai acontecer.

    As universidades são os espaços mais tradicionais de ensino e mesmo para os menos tradicionais, a transmissão horizontal, a relação de aluno com aluno é assustador para este mercado e seus profissionais. O medo que eles tem é em primeiro plano ter que aprender de novo como ensinar, estudar, refazer as aulas, enfim, se sujeitar a se reinventar.

    O segundo problema é o receito que instituições e professores TRADICIONAIS temam que os percebamos como dispensáveis ou acessórios frente ao poder da transmissão horizontal de ensino-aprendizagem (medo infantil e infundado, friso). Isso se manifesta desde a educação básica com a obrigatoriedade de trabalhos manscritos e no ensino superior com a proibição de uso da Wikipédia como bibliografia.

    A seleção dos conteúdos que se ensina em instituições não é uma escolha racional, mensurada, reavaliada e contextualizada. Na escola e na universidade, o currículo é uma repetição e uma imitação de uma tradição em que os próprios professores e gestores inventam mentirinhas para se convencerem de que o que fazem ou ensinam é importante e indispensável.

    Portanto, não é com argumentos e demonstração que professores e gestores educacionais serão convencidos da relevância do que é proposto aqui. Somente com muita pressão social, beirando expô-los ao ridículo ou evidenciando-os publicamente como retrógrados é que há o risco de acolherem uma mudança curricular desse naipe.

  43. Carlos Eduardo disse 4 dias depois:

    Gostei bastante do artigo, mas é bom que seja entendido que, para chegar nesse nível encontrado pelo Vinicius na "aula", provavelmente já tiveram muitos outros DOJOs com estes mesmos alunos, ou seja, o começo é difícil para todos.

    Mas, como professor universitário (em horários de folga) não vejo melhor maneira de ensinar e aprender ao mesmo tempo com as soluções propostas pelos alunos. Está de parabéns pela proposta e vou utilizá-la sempre que puder.

    grato

  44. Tiago Peczenyj disse 5 dias depois:

    Tentei fazer isso em 2008, na Gama Filho. Infelizmente o professor não acreditou na ideia.

    Na boa, para turmas pequenas é o ideial. Para turmas grandes ja não sei se seria pratico.

  45. Proteu Alcebidiano disse 5 dias depois:

    estou com a bani: total nonsense...e minha argumentação para isso é que turma básica de faculdade sempre terão pessoas de todos os níveis de conhecimento. O perfil de pessoas que vão em DOJO são aquelas que já ultrapassaram um certo tipo de ignorância no assunto.

    T+

  46. Rodrigo Flores disse 5 dias depois:

    Vinicius

    Há uma coisa que não concordo. Uma pessoa analfabeta em programação (sou aluno do IME-USP e vejo que isso é uma coisa relativamente normal nos nossos calouros) teria dificuldades em acompanhar um Dojo e sua participação ficaria meio comprometida afinal um bixo teria vergonha de levantar a mão e perguntar sobre uma solução no meio de um monte de veteranos. Não dá para excluir a base teórica que um curso de Computação 101 dá. Talvez é uma solução que deve aparecer em paralelo durante o primeiro ano do curso, mas substituir acho realmente difícil (caso você conheça algum relato de algum curso que fez isso e deu certo, por favor me avise).

  47. Felipe disse 6 dias depois:

    Acredito que teoria é fundamental e o Dojo vem como exercício prático complementar de treino, após ensinamento.

    Na arte marcial também é assim, há primeiro as lições de base, teoria e depois a prática do golpe, com pequenos movimentos.

    Colocaria como atividade complementar, parte da metodologia de aprendizado.

    PS: Adotarei também o estilo Dojo nos meus cursos, pois além de possuir uma dinâmica bacana, possibilita o aluno expandir sua networking.

  48. Tuca disse 6 dias depois:

    Caramba!! Impressão minha ou tinha uma garota lá no meio do video??

    Gostei da idéia, talvez não substituindo as aulas de programação, mas como um complemento, um extra.

    Pena que aqui não tem nada disso...

  49. Vinicius Castro disse 8 dias depois:

    Se tivesse dinheiro sobrando, abria uma faculdade de computação, icc, etc e colocava Vinicius Teles como um dos coordenadores. Tenho certeza que o ROI ia ser incrível. :)

  50. Rodolfo Carvalho disse 11 dias depois:

    Proteu,

    É de se esperar que você nunca tenha participado de um dojo. Não existe esse perfil conforme citaste.

    O dojo é inclusivo. No Rio, Dojo@Lapa, já tivemos presença de pessoas que nem sequer eram programadoras e participaram conosco fazendo parte integral do processo. Tivemos pessoas que não falavam português, o que deu origem a um dojo inglês/português, entre outros.

    Rodrigo Flores,

    Se feito da forma correta, o dojo não sofre do problema que disseste. Os calouros tem problemas em levantar a mão e dizer ao professor que não entenderam. Ou talvez pior, eles nem se deram conta que não entenderam, pois só viram uns slides e acharam que estava tudo bem, sem terem tentado por o conhecimento em prática. Repito, o dojo é inclusivo, e o ambiente formado não possibilita nenhuma inibição entre calouros e veteranos, sendo estes termos inexistentes no contexto de uma sessão de dojo.

  51. Brunno Gomes disse 21 dias depois:

    O pessoal já comentou bastante e não quero repetir o que já foi dito, mas que com certeza é algo que deveria ser NO MÍNIMO complementar a uma cadeira de Introdução a Programação, isso é certeza absoluta!

    Aproveitando para fazer uma propaganda, temos um Dojo de Python em Recife, nos encontros mensais do grupo de Python de Pernambuco.

  52. Rodolfo Carvalho disse 21 dias depois:

    Hoje estive passeando pelos vídeos da PyCon 2010 e cheguei a este universitário (assim como eu), o Alex Gaynor, e no seu blog ele publica um PDF sobre o que pensa da sua educação e de educação em geral: http://lazypython.blogspot.com/2009/12/few-thoughts-on-education.html

    É mais uma fonte que me deixa pensando... agora faltam só no mínimo 1,5 anos para terminar...

  53. Henrique Bastos disse 25 dias depois:

    Nesta semana, após mais de 50 comentários neste post, a 1ª DOJO-Aula aconteceu na UFF. O fantástico episódio foi relatado no blog do Dojorio.

    Um adendo aos comentários anteriores que sugerem separação entre ciência da computação e programação: Um cientista da computação que não sabe programar seria como um matemático que não sabe fazer conta, ou um engenheiro que no máximo faz edificações com lego.

  54. carlos disse 25 dias depois:

    os grau dos nerd.. SÓ nerd nessa porra!!

    concordo q as faculdades e universidades poderiam ensinar coisas mt mais úteis aos acadêmicos!!

  55. Nartos disse 26 dias depois:

    Olá, Já fiz algo parecido usando o jogo Sudoku nas aulas de lógica... afinal é uma forma de estimular os alunos a pensarem e tirar um pouco o peso das aulas q eram quinta e sexta à noite. Fica a sugestão. Abraços.

  56. Raphael Molesim disse 27 dias depois:

    Vinicíus,

    Meu nome é Raphael Molesim tenho parcipado a algum tempo do Dojo da USP, mas confesso que fiquei muito curioso pela sua solução, então fiz um codo aqui na Irlanda com Victor Hugo Germano (Conding Dojo Floripa) e o Declan McGrath (Ruby Ireland), segue a nossa solução (http://gist.github.com/451768) e os testes juntos e estou ansioso para receber a sua.

    []s

  57. Marcelo disse 28 dias depois:

    Sacanagem tu dizer que iniciou com Javascript.. pra quem nunca viu programação iniciar com isso acho até sacanagem, mas tudo é válido para quebrar esse paradigma da computação x problemas do mundo!!!

  58. Emmanuel Xavier disse aproximadamente 1 mês depois:

    Concordo que o Dojo seja uma ótima estratégia para aprofundamento em programação, todavia discordo que ele venha substituir a disciplina Introdução a programação, pois o propósito acadêmico não é apenas ensinar a fazer (programar), mas transmitir aos alunos conhecimentos sobre o porque programar e sobre quais as alternativas da programação (paradígmas). Acredito que o dojo tem potencial para proporcionar ao aluno essas respostas, contudo o Dojo fica aquém de uma sala de aula.

    Em síntese, o Dojo é uma excelente prática para o aperfeiçoamento e aprendizado do programador, entretanto ele não pode substituir uma disciplina acadêmica, uma vez que um profissional graduado não é constituído somente de prática.

    Leciono as disciplinas Linguagem de Programação I e II, Programação Web, Sistemas Paralelos e Distribuídos e a partir de hoje o Dojo será um tema constante de minhas aulas, incitarei os alunos e criarem um Dojo em minha cidade.

  59. Serge Rehem disse aproximadamente 1 mês depois:

    Olá Vinicius, parabéns pelo excelente post!

    Apesar de já ter ouvido, lido e até praticado, ele foi decisivo para sairmos da inércia. Resultado: Criamos o grupo Dojo Bahia e já temos nossa própria experiencia a relatar: http://groups.google.com/group/dojo-bahia/web/dojo1-supersenha

    Agora pretendemos ajudar a disseminar Coding-Dojo nas empresas e universidades baianas.

    Então passei aqui para dizer OBRIGADO por nos instigar!

  60. Márcio disse 4 meses depois:

    Como foi citado por alguns e como professor de nível universitário e técnico eu acho que a deficiência matemática compromete mais do que qualquer outra coisa.

    Também acho interessantíssima a idéia mas quem vive a realidade das salas de aulas, sabem que tem que existir prova sim e até hoje é a melhor forma de avaliar o conhecimento de um aluno, principalmente com turmas grandes.

    E concordo com o Emmanuel, o Dojo não substitui a disciplina e sim complementa.

    Muito obrigado

  61. Rodrigo disse 11 meses depois:

    Discordo. Talvez não seja assim em tudo que é lugar, mas tive Introdução a Computação e aprendi muito.

  62. Erico disse aproximadamente 1 ano depois:

    Sinceramente, gostei muito deste post. Meu professor de POO já havia nos falado sobre os Dojo's e foi ele que nos enviou o link para esta postagem. Bom, calma lá quem acha que o Dojo resolve todos os problemas da didática em programação. Como um novo paradigma deverá ser analisado com calma. Discordo em gênero, numero e grau do autor quando ele propõe o fim das matérias introdutórias. Ele diz isso porque ele já sabe programar. É necessário uma base, sólida, do que é um if, do que é um else, de passagem de parâmetros, arrays, tipos primitivos, etc. Senão, sem base, a pessoa fica voando total lá na hora. Porém, como complemento, é uma ótima idéia. Se fosse implantado nas aulas práticas então, ai sim seria uma grande coisa. Teoria e prática aliadas, uma completando a outra. O que o autor quis dizer é que quando se gosta realmente daquilo que se faz, o aluno não abandona, procura livros, dá um jeito de aprender por fora, etc. É necessário paixão por aquilo que se faz, senão a pessoa, se formar, será medíocre. Vocês já devem ter encontrado médicos que não são apaixonados pela profissão e médicos que são loucos pelo que fazem; a diferença é notória. E o dojo pode ajudar e muito a cativar os alunos.

  63. Rafael frozen disse aproximadamente 1 ano depois:

    Genial... eu estou no quarto período de ADS e coma nítida sensação de não saber quase nada de programação "na vida real". É bem frustrante. Eu gostaria de participar de dojos assim aqui em Minas =/