DojoRio@UFF – 29/06/2010

quarta-feira, 30 junho 2010

Fala pessoal,

Rolou hoje, como era esperado, mais um DojoRio@UFF. O problema que escolhemos foi o do Jogo da Velha. Dado um jogo terminado, deveríamos dizer se o X ou o O ganhou ou então se deu velha como resultado.

A linguagem escolhida foi Python e nós conseguimos andar bastante com o problema. Faltou somente a avaliação das diagonais para fecharmos. Entretanto, todos já tinham uma visão de como seria feito no final.

Haviam presentes 9 pessoas:

Os pontos positivos levantados foram:

  • Todos programaram mais de uma vez +++++++
  • Problema bem legal +++
  • Ter sido Python ++++
  • Bernardo falou menos
  • Pessoal mais seguro programando em Python
  • Brasil nas quartas
  • Quase resolver o problema +
  • Comparação ternária em Python
  • Uso de tuplas
  • Uso do Dojotools com commit automático ++
  • Ótimas refatorações +

Os pontos a serem melhorados:

  • Faltou o mouse ++++
  • Acabou no finalzinho do problema
  • Poucas refatorações
  • Código “pouco” refatorável
  • Pessoal que faltou
  • Cálculo tá foda
  • Uso abusivo de iterações
  • Horário
  • Vir sem ressaca

Deixaram de sugestão:

  • Fazer um próximo Ruby ou C ou PHP
  • Fazer em alguma linguagem que ainda não fizemos

Até a próxima,

Bernardo Fontes


dojoPetrópolis 19/06

terça-feira, 22 junho 2010

Depois de um tempo sem rolar Dojo em Petrópolis, devido ao feriado (3) e dia dos namorados (12), nós voltamos a nos reunir no sábado (19/06).

O problema resolvido foi o que deixamos pela metade no Dojo anterior, a contagem regressiva da Nasa, depois dele como de costume deixamos um problema pela metade :), que foi o problema dos números romanos.

Tivemos um tempo para verificar qual método é mais rápido para se gerar uma lista regressiva, usando o append e no final utilizando o reverse ou usando o insert no índice 0. Chegamos a conclusão que com o reverse no final é consideravelmente mais rápido. Vamos aos números (from time import time):

Com o reverse no final:

  • 0.000529050827026
  • 0.000532150268555
  • 0.000314950942993

Com o insert no índice 0:

  • 0.00117588043213
  • 0.00115299224854
  • 0.00116109848022

O que foi bom:

  • Tempo para 2 problemas diferentes.
  • Uma pequena criança de 12 anos programando com a gente (Miguel)
  • Chokete (chocolate)

O que pode melhorar:

  • Mouse
  • Novamente o teclado
  • Programadores apressadinhos

Participantes:


DojoUFF – Turma de Prog. 2!

terça-feira, 22 junho 2010

Hoje tivemos Dojo em Niterói. Mas não foi como estamos acostumados. Tivemos uma Aula-Dojo, na turma de Programação de Computadores II, do segundo período do curso de Ciência da Computação da UFF. Foi uma iniciativa do Prof. Dante Corbucci que, junto com o Daniel Castellani, levou o Dojo para turma. Como eu também sou aluno dessa turma, aproveitei para participar e incentivar o pessoal a entrar no jogo.

A maioria não conhecia testes automatizados, nunca tinha ouvido falar sobre TDD e muito menos BabySteps. Assim foi necessário um problema que não causasse preocupação inicial e possibilitasse que todos se ligassem mais no entendimento do jogo. Então escolhemos começar com o clássico problema de primeiro Dojo, o FizzBuzz, para depois avançarmos para um problema mais no nível da turma.

Tivemos 2 horas de aula de puro Dojo! A implementação foi em Java, que é a linguagem utilizada no curso, com JUnit para os testes. Tudo funcionando com o NetBeans, que também é utilizado no curso e todos estavam acostumados.

Após explicações iniciais tudo fluiu muito bem. O pessoal entendeu sobre a necessidade de não falar enquanto os testes estavam quebrando, participou depois dos testes passarem e as duplas foram muito bem na implementação. O professor também fez suas sugestões e deixou a turma conduzir a implementação.

Foram várias sugestões de refatoração. Algumas para deixar o código mais legível e reduzir a quantidade de if-else, por exemplo. Outras para usar melhor os recursos da linguagem, como substituir o uso de String por StringBuffer devido às várias concatenações.

Após resolvido o FizzBuzz, foi escolhido outro problema. Nesse era necessário partir de dois arquivos textos, onde em cada um deles teria um número inteiro por linha, e construir um terceiro arquivo texto, com o conteúdo dos dois anteriores mas sem repetição de números. Porém a aula já estava acabando e não foi possível evoluir muito.

A turma tem aproximadamente 25 alunos e a maioria estava presente. Quase todos programaram. Talvez reduzir o tempo de 5 para 4 minutos seja melhor para dar oportunidade a todos. Não lembrei de pegar o nome de todos os presentes e não houve retrospectiva também, pois a idéia de fazer esse post surgiu de repente. Nos próximos, já temos isso pra melhorar. O Daniel tirou fotos. Assim que ele me mandar eu coloco aqui no post junto com o código.

No final, ouvir a galera animada e dizendo: “queria ter tido isso desde que entrei na faculdade”, foi sensacional. Espero poder relatar aqui muitas outras aulas como essa.

Rafael Carvalho


DojoRio@Niterói – 17/06/2010

sábado, 19 junho 2010

Pessoal,

Rolou nessa última quinta-feira mais um DojoRio@Niterói! O Dojo, para variar, foi bastante proveitoso, mesmo contando com um menor número de pessoas do que as últimas três edições. Mas, ainda assim, várias pessoas compareceram. O problema foi o problema matemático dos Happy Numbers. Era bem simples, dado um inteiro, ele deveria dizer “I’m happy” no caso de ele ser feliz ou “I’m sad” no caso contrário.

A linguagem escolhida na hora foi Javascript. A escolha da linguagem foi bastante proveitosa em função das explicações sobre algumas peculiaridades dela e também do funcionamento do Jsspec (ferramenta que utilizamos para viabilizar o TDD). Fizemos uso do DojoTools com o commit automático e toda a evolução do código vocês podem ver aqui. Além isso, rolou uma discussão sobre desacoplamento de código e como desenvolver o código de maneira que no futuro ele se torne sustentável.

Bem, estavam presentes 12 pessoas:

Os pontos positivos que o  pessoal levantou foram:

  • Problema +++++++
  • Rolou a apresentação da galera antes do Dojo
  • Usar um problema matemático +
  • Todos programaram +++
  • Cleiver participou
  • Comida ++++
  • Paçoquinha
  • Javascript ++++
  • Aprender que Java não tem nada a ver com javascript
  • Conhecer o jsspec
  • Programar pela primeira vez no Dojo
  • Começou no horário
  • O pessoal que chegou cedo e arrumou a sala antes
  • Terminamos o problema ++
  • Refatoração com baby steps
  • Código desacoplado +++
  • Usar mais de uma suíte de testes
  • Discussões +++
  • Discussão na lista do DojoRio
  • Ar condicionado
  • Menos falação na plateia

Os pontos a serem melhorados foram:

  • Número menor de participantes +
  • Operador ^ do javascript
  • Final apressado +
  • Variáveis com nomes confusos no final +
  • Chegar atrasado +
  • As discussões da lista assustaram a galera? ++++
  • Ter que sair mais cedo +
  • Sintaxe do javascript
  • Convenções de javascript
  • Ver o problema antes
  • Plateia dando opinião sobre o código quando no vermelho

Como sugestões ficaram:

  • Fazer algum Dojo em Python ++
  • Fazer algum Dojo em Ruby
  • Fazer algum Dojo em C
  • Fazer algum Dojo em PHP
  • Ser em javascript de novo
  • Afastar o piloto e o copiloto do projetor

Depois rolou um pós-dojo na Cantareira com direito a cervejinha no Tio Cotó, chopp de graça depois, choppada de Educação Física e sambalanço no São Dom Dom. Provavelmente na próxima semana não teremos o Dojo porque vai ser feriado em Niterói. Mas, já estamos pensando em fazer alguma coisa no lugar. Arduino Hack ‘n’ Beer Day ou algum Sprint? Enfim, fica a ideia.

Até a próxima,

Bernardo Fontes


DojoRio@Lapa – 16/06/10

quinta-feira, 17 junho 2010

Ontem foi mais um dia de Dojo na Lapa.

A galera tem comparecido em massa, se não fosse pela sala nova estaríamos espremidos na sala debaixo.

Bem, vamos ao que interessa:

O problema foi o tesoura-papel-pedra. Dada duas jogadas, o retorno seria o vencedor.

ex: papel e tesoura, a saída é tesoura.

A linguagem utilizada foi Ruby, juntamente com o framework de teste RSpec. O BDD foi muito bem aceito pelo pessoal e foi sugerido utilizar o Cucumber da próxima vez.

O ponto alto do dia foi a sugestão da refatoração, onde conseguimos reduzir drasticamente o código que estava escrito. Associado a isso implementamos a refatoração utilizando integração contínua, que fez com que não quebrássemos o código.

A demora na escolha do problema nos levou a repensar como estamos realizando o Dojo e propomos levar sugestões de problemas para debater 10min antes de começar a sessão, com o intuito de ganhar mais tempo para mais pessoas programarem e/ou programarem mais vezes.

Um ponto interessante foi o site que uma das participantes abriu para sugerir problemas, o ProjectEuler, site só com problemas de matemática.

O que foi bom 🙂

  • Ruby+++++
  • RSpec+++
  • Problema
  • Sala nova
  • Aprender a programar com Ruby
  • Comida farta
  • Integração Contínua
  • Wireless
  • BDD
  • Pessoal novo
  • Refatoração
  • Casa cheia+++++
  • Interatividade
  • Posição ótima do Projetor
  • Recorde de mulheres
  • Discussão sobre DSL
  • Mexer em um Milestone
  • Liberdade para participar da forma que se sente bem

O que pode melhorar 😦

  • Demora na definição do problema+++++
  • Faltou Queijo
  • Local onde o quadro com a definição do problema está
  • Não utilizou Cucumber
  • Muito if no código
  • Quebrar o vermelho
  • Não prestar atenção na implementação
  • Atalhos do gedit
  • Não tenho carinha triste

Participaram:

E mais uma penca de pessoas que eu não sei o nome e/ou não se identificaram no papel. Estiveram presentes cerca de 24 pessoas.

é isso. Abs.

Fact:

  • Programo em .Net mas não sou bobo não.