Capa para posts sobre Coding Dojo

1º Dojo da disciplina de Aplicações Ricas para Internet (2º sem. de 2016)

Toda vez que se faz um Coding Dojo, é praxe escrever um relatório sobre a atividade. Segue aqui o do último que fizemos em aula!

Ficha Técnica

  • Data: 25/11/2016
  • Horário: 19:30
  • Linguagem: JavaScript
  • Problema: O problema proposto foi a Conjectura de Collatz: para definir uma seqüência a partir de um número inteiro positivo, temos as seguintes regras:
    n → n/2 (se n é par)
    n → 3n + 1 (se n é ímpar)
    Usando a regra acima e iniciando com o número 13, geramos a seguinte seqüência:
    13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1
    Podemos ver que esta seqüência (iniciando em 13 e terminando em 1) contém 10 termos. Embora ainda não tenha sido provado (este problema é conhecido como Problema de Collatz), sabemos que, com qualquer número que você começar, a seqüência resultante chega no número 1 em algum momento.
    Desenvolva um programa que descubra qual o número inicial entre 1 e 1 milhão que produz a maior seqüência.
  • Formato: Randori
  • Participantes: Alexandre Trino Martinez, Andre Koiti Torigoe, Cinthia Da Silva Inhaia, Gabriel Lopes Gomes, Henrique Prieto Rigio, Lais Lima De Oliveira, Laura Christina Cunha E Cruz, Mateus Martins Ferreira, Rafael Ferraz De Camargo Cibim, Tobias Valdivieso Ponce, Tonielton Rodrigues Da Mota, Vinicius De Oliveira Alves e Ramon Chiara.
  • Código: GitHub

Narrativa

Esse foi o primeiro Dojo da turma. Por isso, o professor utilizou o começo da aula para explicar o que é um Dojo. Logo após, foi usado o site DojoPuzzles para se escolher um problema. Depois de passar por uns dois ou três, a turma escolheu o da Conjectura de Collatz.

Os primeiros testes foram implementados pelo professor como forma de apresentar o desenvolvimento orientado a testes (TDD – Test Driven Development) no JavaScript usando os frameworks Mocha e Chai.

Por experiências anteriores, foram usados turnos de 7 minutos e, após terminado o primeiro deles, os alunos foram se revezando. Como tentativa de minimizar distrações enquanto as duplas codificavam, o professor foi discutindo o código, perguntando se os alunos estavam entendendo o que estava acontecendo.

O professor “pegou bastante no pé” com relação aos baby steps (programação em pequenos incrementos de código) e em fazer os testes passarem rapidamente para ir para o próximo. Em determinado momento, um par acabou avançando demasiadamente e resolveu o problema em um passo muito grande. Essa situação foi discutida, relembrando os objetivos do Dojo e a turma voltou um pouco para retornar aos passos menores.

Com um pouco de paciência e persistência, após uns 10 ou 15 testes, o código começou a apresentar um padrão que “pedia” uma recursão. Nesse momento, alguns refactorings foram feitos para introduzir essa ideia. Com isso, o padrão ficou ainda mais claro e a solução se “desenhou” naturalmente.

Isso aconteceu bem no fim do tempo disponível. Ou seja, conseguiu-se criar uma função que retornava a sequência numérica, mas não deu tempo de se fazer uma que descobria a maior delas. Mas, isso não tem problema, pois terminar o problema não é o objetivo de um Coding Dojo. Dito isso, passou-se para a retrospectiva.

Fotos

Retrospectiva

  • O que deu certo? / O que aprendemos?
    • Legal / Poderíamos fazer mais vezes / Legal o desenvolvimento.
    • Aprendizado sobre TDD (bibliotecas Mocha e Chai para JS) / Orientação de uma pessoa com experiência na ferramenta e em Dojo / Interessante entender um pouco sobre testes / Aprender a pensar orientado a testes, fazendo o código em baby steps.
    • Gostei do estilo da aula e do exercício; coloca a gente para pensar mais rápido / Dinâmica funcionou / Bacana proporcionar a busca por novas maneiras de encontrar uma saída.
    • Clareza na explicação do problema.
  • O que pode melhorar? / O que dificultou o aprendizado?
    • Faltou ponto positivo / Faltou cerveja / Faltou a breja, mas foi bom entender um pouco do TDD / Faltou a pizza!
    • Faltou concentração da nossa parte!
    • Seria bom um “narrador” do código.
    • Tempo.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *