Disciplina Dojo para os calouros na UENF!

sexta-feira, 13 agosto 2010

Sensacional! Essa é a palavra que resume o que aconteceu na quarta-feira, 04 de Agosto de 2010, na primeira aula Dojo registrada como matéria na UENF. O projeto foi uma iniciativa dos alunos do 8º período: Eduardo Hertz, Herond Robaina e Hugo Maia Vieira que se inspiraram neste post do Vinicius Teles e no fato de já realizarmos um Dojo e conhecermos seus benefícios. Nós três ficamos como monitores voluntários da disciplina, que é ministrada pela Professora Annabell Tamariz (também coordenadora do curso).

A tarefa tratava-se de um desafio para nós, pois os alunos, por serem do 2º período, haviam visto apenas a matéria Programação I em Pascal e em nossos Dojos apenas o pessoal mais experiente tinha participado! Portanto, mesmo utilizando Ruby, conceitos como orientação a objetos deveriam ser abstraídos e nós teríamos que saber empolgar o pessoal.

A aula iniciou com uma apresentação do Hugo Maia sobre o Dojo. Foram explanados quais são os objetivos do Dojo, como deve ser o ambiente para atingir tais objetivos e as técnicas utilizadas.
Em seguida foi explicado o problema, onde este deveria ser algo simples, para os alunos entenderem como funciona um Dojo. Então, escolhemos o problema padrão de primeiros Dojos, o FizzBuzz.

Como era de se esperar, os calouros ficaram meio atônitos com a quantidade de informação passada num primeiro momento. O TDD e uma nova linguagem eram coisas totalmente novas para eles. Aos poucos a aula foi se desenvolvendo com participação ativa do pessoal.

A função de piloto e copiloto era alternada entre os alunos e nós, para haver uma troca de experiência maior e para eles se sentirem um pouco mais seguros nesse primeiro Dojo. O mais interessante a se observar era que o pessoal trocava informação entre si em relação ao problema, fazendo com que todos raciocinassem perante a solução que estávamos desenvolvendo. Isso mostra que, a maior deficiência dos alunos de computação não é a tecnologia ou processo utilizado, e sim a forma como o problema é abordado. O aluno, no modelo de ensino tradicional, não é acostumado a raciocinar, pois não é estimulado a buscar novas alternativas para um problema. Além disso, no Dojo, todos que estão presentes são implicitamente convidados a participar e a interagir, pois a dinâmica do Dojo torna a “aula” empolgante e divertida.

Durante todo o desenrolar do Dojo, fomos soltando para eles boas práticas de programação, como fazer o código falar por si através de nomes de variáveis e funções que façam sentido, melhorar a legibilidade e manutenibilidade do código com a identação correta, dentre outras coisas.

Conversamos também sobre outros assuntos como a importância do Inglês, a importância de saber pesquisar, sobre de sistemas controles de versão, sobre utilizar o Linux para desenvolvimento e algumas outras coisas.

Ao final, fizemos a retrospectiva onde os seguintes pontos foram levantados pelos alunos:

=)

  • A proposta do problema
  • Foi descontraído e ficamos a vontade
  • Não foi como uma aula convencional (o que é legal!)
  • Não houve monopólio do controle da aula, com os 3 monitores complementando a explicação

=(

  • Não conhecer a linguagem
  • Não teve hora extra (vamos fazer!)

O resultado superou todas as expectativas e com certeza será de grande valia para todos nós. Nas próximas sessões eles vão assimilar melhor as ideias e práticas. Com certeza o curso será muito mais divertido e proveitoso para eles que estão conhecendo no 2° período coisas que nós fomos conhecer no 6°. Foi muito legal ver no rosto deles a expressão de empolgação.

Fica a dica e um incentivo para que as pessoas que ainda estão na universidade possam ter essa iniciativa de introduzir e socializar o Dojo na Universidade, onde todos só tem a ganhar.

E como quase formandos, após o Dojo, falamos entre nós: “Ah se tivéssemos isso na nossa época…”

Código no github: FizzBuzz

Anúncios

Dojo UENF/IFF [9]

domingo, 8 agosto 2010

No dia 24/07/2010 aconteceu um Dojo UENF/IFF fora das terras Campistas. Estávamos em Porto Alegre participando do FISL 11. Como as palestras da parte da tarde no dia não eram das melhores, resolvemos voltar mais cedo para o hotel, mas antes passamos no supermercado para comprar algumas coisas para comer. Combinamos de após tomarmos banho e prestarmos conta à nossas respectivas namoradas, nos encontrarmos no meu quarto para fazer um Dojo e lancharmos.

Resolvemos usar os problemas propostos pelo Code Golf da IG, que estava rolando no evento e utilizamos Ruby. O objetivo era resolver o problema e depois refatorar para deixar o arquivo com o menor tamanho possível. Foi sensacional!!! Divertido demais! Como era o último dia em Porto Alegre, pensamos até em fazer um outro Dojo no avião, mas não tinham acentos juntos disponíveis =P

Participantes

Até a próxima! Abraços!


Dojo UENF [8]

sábado, 7 agosto 2010

No dia 01/06/2010 aconteceu mais um Dojo UENF. Depois de uma boa experiência, porém não viável, com um formato alternativo de Dojo, voltamos a utilizar o formato original do Dojo. Mudamos também de linguagem e utilizamos Python. Antes apenas havíamos utilizado Ruby.

O problema escolhido foi o de modelar a canção infantil “Atirei o pau no gato”, ideia tirada de um Dojo que vimos no 15° EDTED (onde conversamos com o Henrique e decidimos iniciar nosso Dojo).

Essa edição do Dojo foi uma das mais legais! O problema foi bem divertido e fluiu de forma muito natural. Tivemos também a oportunidade de testar algumas ferramentas para testes com Python: o should-dsl e specloud. Isso fez com que os testes fossem escritos de forma semelhante ao que fazemos no Ruby (ou seja, legibilidade extrema), além de ficar verde e vermelho quando os teste passavam ou quebravam. Utilizamos também uns snippets que criei para o Gedit que ficaram bem legais, principalmente o de definição de métodos e os de metchers do should-dsl.

Participantes

Retrospectiva

🙂

  • Python rocks!
  • Todos participaram
  • Problema muito legal e divertido
  • Shoud-dsl e Specloud estão muito bons!
  • Snippets irados!

😦

  • Pessoal chegou tarde

É isso aí. Abraços à todos!


Dojo UENF [7]

sábado, 7 agosto 2010

No dia 25/05/2010 (sim, tem muito tem já, rsrs) realizamos mais um Dojo UENF. Seguimos com a abordagem do ShuryoKata, continuamos com o problema do dominó.

Nos primeiros minutos fizemos uma retrospectiva sobre a atual situação do código.

No início tivemos dificuldade em refletir sobre a modelagem corrente do problema, existiam divergências sobre como ocorreria a comunicação entre os objetos e de como organizaríamos as especificações para que pudessem refletir o fluxo de um jogo de dominó, foi neste momento que percebemos a necessidade de uma abordagem de teste de mais alto nível.

Percebemos que para continuar com esta modalidade de dojo é necessário uma ferramenta de integração que possa descrever num nível mais alto o fluxo do problema, contudo, isso fugiria completamente do objetivo do Dojo, muito mais do que já esta estávamos fugindo.

Usar o ShuryoKata foi uma boa experiência, porém, não se mostrou viável. Ninguém revisava o código antes de ir para o Dojo; nos dois primeiros o pessoal estava empolgado, mas no terceiro, quando começou a ficar grande o problema, ficou desanimador.

Assim, decidimos em retornar a abordagem convencional do Dojo, que é a que realmente funciona e se quisermos nos aprofundar em alguma coisa, faremos um Fork =)

Participantes

Retrospectiva

🙂

  • Gedit estava réupis

😦

  • A idéia sobre como implementar não ficou clara
  • Sentimos que para o problema mais complicado faltou uma ferramenta teste de aceitação
  • Pouca gente programou
  • Falatório no vermelho

Foi isso. Abraços.


Dojo UENF [6]

terça-feira, 25 maio 2010

No dia 18/05/2005 rolou o mais um Dojo UENF. Seguindo com a experiência do ShuryoKata, continuamos o problema do Dojo passado, o jogo de dominó.

Primeiro, em menos de 4 minutos, fizemos uma pequena retrospectiva sobre a implementação feita no Dojo anterior. Foi bom para quem não olhou o código antes de vir para o Dojo, dar uma relembrada e os dois participantes que não vieram ficarem situados.

Como tinham ficado dúvidas (dublês e exceção) do Dojo passado, a primeira coisa a ser feita foi colocar em prática o que aprendemos. Vimos que ainda não havia necessidade de utilizarmos dublês, mas fizemos ser levantada uma exceção na tentativa de se criar um dominó com menos de 2 ou mais de 4 jogadores.

Chegamos a conclusão de que realmente deveria existir uma classe peças, já que agora além de características, peça tinha comportamento. Assim, criamos essa classe e tivemos que fazer um refactoring legal.

Participantes

Retrospectiva

🙂

  • O problema está ficando mais legal
  • Participação da galera foi boa
  • Matamos as dúvidas do dojo passado

😦

  • Galera falando muito quando teste estava quebrado
  • Gedit mal configurado (Hugo tinha acabado de formatar o note e esqueceu de configurar o gedit no afterFormat)

Percebemos que ao crescer, o problema está ficando cada vez mais interessante, o design evolutivo está sendo maneiro e o refactoring está comendo solto.

Legal também foi ver que o pessoal que não estava no Dojo anterior conseguiu se situar bem e rápido, mesmo não tendo passado o olho no código antes.

Por enquanto a experiência esta sendo bem legal!

É isso ai! Até o próximo Dojo e rumo ao hexa!

[]’s


Dojo UENF [5]

domingo, 16 maio 2010

No dia 11/05/10 aconteceu o quinto Dojo UENF. Sempre seguimos o RandoriKata, mas desta vez propus algumas mudanças, o pessoal achou legal, e fizemos um Dojo diferente. Decidimos que vamos fazer o teste de usar esse formato de dojo como experiência. Se ficar legal continuamos a utilizá-lo, se não, voltamos a fazer o RandoriKata tradicional.

Continuamos com ruby e escolhemos fazer o jogo de dominó. Começamos definindo as regras do jogo, sem muitos problemas. Foi levantada a questão de criar uma classe peça ou não, e chegamos ao consenso de que a classe peça só teria características e não teria comportamentos, o que não caracteriza uma classe. Em um momento, pensamos em fazer um stub, mas não sabíamos como fazer. Decidimos criar o objeto real para darmos continuidade e refatorar na próxima sessão. Como fazer dublês em Ruby entrou na lista de dúvidas.
De acordo com as regras, um jogo de dominó só existe se tiverem no mínimo 2 e no máximo 4 jogadores. Decidimos então que ao instanciar um jogo, deveria ser feita essa validação e caso ela não fosse válida uma exceção seria levantada. Contudo não sabíamos como fazer isso em ruby, o que foi adicionado na lista de dúvidas e fizemos de uma outra maneira para na próxima sessão refatorarmos.

A primeira impressão de utilizar a modalidade diferente foi boa. Ficamos com a expectativa de aprendermos o que não sabíamos para aplicar no Dojo seguinte e como o problema é legal, ficamos realmente com vontade de terminá-lo o que aumenta a vontade de que chegue logo o próximo Dojo.

Galera no Dojo UENF

Participantes

Retrospectiva

🙂

  • Nível do Problema e o problema em si
  • Todos participaram
  • O problema se desenvolveu num ritmo legal

😦

  • Passaram na porta e acharam que era pascal! Porra, pascal é sacanagem!

Dúvidas

  • Dublês (mock e stub)
  • Tratamento de exceção

Valeu galera! Até o próximo Dojo!

[]’s


Dojo UENF [4]

domingo, 16 maio 2010

No dia 04/05/10 aconteceu o quarto Dojo UENF. Continuamos a usar Ruby e o pessoal escolheu o problema da linguagem alienígena retirado do Google Code Jam.

Discutimos por algum tempo se iríamos usar regex ou não. Ficamos batendo cabeça por bastante tempo sobre detalhes da linguagem e fazendo muitos testes no irb para ver como as coisas funcionavam. Apesar do problemas ser bem legal, o desenvolvimento ficou muito amarrado e acabamos encerrando o Dojo mais cedo.

Galera presente até o fim

Participantes

Retrospectiva

🙂

  • Problema legal

😦

  • Não existia o master e ficamos batendo cabeça em detalhes da linguagem
  • Pouca gente

Bom, é isso ai. Até a próxima!

[]’s