Timing: 1+ hours

Ingredients:

  • IDE + Unit Testing tool
  • Timer

Directions:

Programmer 1 writes a test and challenges Programmer 2 to make it pass. Programmer 2 attempts to make it pass in as short of time as possible and then writes another test to try to stump Programmer 1. This test could be to fill any gaps that were exploited in the previous test, or to test another part of the system. This continues until all features have been implemented. A winner can be chosen based on total time taken to make tests pass. After each test passes, both programmers collaborate to refactor the solution. This time does not count towards the final score.

Learning Points:

  • This game highlights the essence of Test-Driven Development, by only writing code for failing tests.
  • Programmers end up producing the simplest solution that works. They then must have the discipline to refactor the solution when code-smells emerge.

Tempo: 1+ horas

Ingredientes:

  • IDE + ferramenta de testes unitários
  • Cronômetro

Receita:

O Programador 1 escreve um teste e desafia o Programador 2 a fazer o teste passar. O Programador 2 tenta fazer o teste passar no menor tempo possível e depois escreve outro teste para tentar bater o Programador 1. Este teste pode servir para completar alguma brecha explorada no teste anterior, ou testar alguma outra parte do sistema. Isso continua até que todas as funcionalidades sejam implementadas. Um ganhador pode ser escolhido com base no tempo total utilizado para fazer os testes passarem. Depois de cada teste passar, ambos programadores trabalham juntos para refatorar a solução. Este tempo não conta para a pontuação final.

Pontos de aprendizado:

  • Este jogo enfatiza a essência do Desenvolvimento Guiado a Testes (TDD – Test-Driven Development), apenas criando código para que falhem os testes.
  • Programadores acabam produzindo a solução mais simples que funciona. Depois eles devem ter a disciplina de refatorar a solução quando um código ruim emerge.

Duración: más de 1 hora

Ingredientes:

  • IDE + herramienta de Unit Testing
  • Cronómetro

Indicaciones:

El Programador 1 escribe un test unitario y desafía al Programador 2 a hacerlo pasar. El Programador 2 intenta hacer pasar el test en el menor tiempo posible y entonces escribe otro test unitario con la intención de confundir al Programador 1. Este test podría completar algún hueco que hubiera quedado del test anterior, o para probar otra parte del sistema. La dinámica se repite hasta que todas las características hayan sido implementadas. Se puede determinar al ganador basándose en el tiempo total que les llevó hacer pasar los tests. Después que se resuelve cada test, ambos programadores colaboran para refactorizar la solución. Este tiempo no es tenido en cuenta para la puntuación final.

Puntos de Aprendizaje:

  • Este juego resalta la escencia del Test-Driven Development, con solo escribir código para los tests fallidos.
  • Los programadores terminan produciendo la solución más simple que funcione. Entonces ellos deben tener la disciplina de refactorizar la solución cuando emerge mal código.

Время: 1 час +

Материалы:

  • Среда разработки + инструмент для запуска Unit тестов
  • Секундомер

Правила:

Первый программист пишет тест. Второй должен за кратчайшее время добиться того, чтобы он прошёл успешно, а затем написать свой тест, прохождение которого становится задачей первого программиста. Новый тест может заполнять пробелы, оставленные предыдущим тестом, или просто проверять другую часть системы. Так продолжается, пока не будет реализована вся нужная функциональность. Победитель может быть выбран на основании общего времени, затраченного на написание кода. После успешного прохождения каждого теста программисты вместе оптимизируют решение. Время, потраченное на это, не засчитывается в общий результат.

Выводы:

  • Эта игра подчеркивает суть разработки через тестирование (Test-Driven Development), посредством написания только того кода, который нужен для прохождения тестов.
  • Программисты в конечном итоге создают наиболее простое из работающих решений. Здесь также важна дисциплина, т.к. программисты должны вместе оптимизировать полученный код, чтобы быстрое решение было еще и качественным.

Перевод Tatyana Yanush