Todos times deveriam ter um momento de prática. Um momento para desligar e viver situações diferentes. Treinar programação. Compartilhar pensamentos que não apareceriam no dia a dia de projeto.
Um Dojo é o lugar do caminho, é a casa dos praticantes de artes marciais. Desenvolvimento de Software além de ser uma atividade criativa, é uma arte. E como tal, deve ser estudada, praticada, e melhorada de forma constante.
A troca de experiências que ocorre em uma sessão de treinamento, entre pessoas com mais experiência e iniciantes é algo único, uma oportunidade de aprender e de ensinar. De colaborar e ajudar na formação de melhores desenvolvedores.
É um ambiente de colaboração. Competição não possui lugar. É um ambiente de treinamento, onde práticas do eXtreme Programming como Desenvolvimento Orientado a Testes (TDD), Design Simples, Programação em Pares e Posse Coletiva podem ser compartilhadas. As ideias devem ser provadas com código. E todo novo código precisa aparecer evoluindo dentro do ciclo do TDD (Red-Green-Refactor). Explico: primeiro se faz a criação de um teste falhando um determinado cenário em foco, depois criar o mínimo necessário de código para fazer o teste passar e por fim aplicar técnicas de refatoração para melhorar a estrutura do código fonte, deixando ele mais simples. Ciclos curtos fazendo isto até fazer o que precisa ser feito.
Normalmente para se fazer um dojo se precisa de:
- Um problema a ser resolvido. É normalmente um problema de lógica, onde através de técnicas de design, evolução constante do código através da criação de testes e pequenos passos, este problema vai sendo trabalhado e evoluído. Eventualmente se pode chegar na solução do problema, mas o propósito do Dojo é estudar situações e oportunidades de projetar e resolver um determinado problema.
- Datashow ou forma de compartilhar o que está ocorrendo com os participantes.
- Uma estratégia para tocar o Dojo. Existem algumas, como o (a) Prepared Kata, onde um especialista resolve o problema do início ao fim. O que mais uso, o (b) Randori Kata, possui um timer tocando a cada 5-7 minutos, indicando uma nova rotação a ser feita. Temos apenas um computador sendo usado nesta abordagem, assim como é com o Prepared Kata. A cada rotação o desenvolvedor que ficou na máquina tem a tarefa de passar o conhecimento e situar quem está chegando. Aqui estão as oportunidades perfeitas para parear pessoas com grande diferença de conhecimento. Assim o aprendizado funciona muito melhor. Ainda temos o conceito de (c) Kake Kata, onde pequenos grupos se formam e resolvem o mesmo problena. As rotações ocorrem dentro do grupo e entre grupos. O desafio neste caso comparado com o Randori, é que a cada ciclo, estaremos visualizando código diferente e que não foi tocado anteriormente pelo time. Então o processo de aprendizado tem mais desafios.
- Pessoas. Pelo menos 1 pessoa. Se pode fazer um Prepared Kata e gravar para publicar online. 🙂
- E o tempo? Uma hora pode ser o suficiente para passar a mensagem e fazer o time trabalhar junto. Gosto de usar 60-80mins de tempo de trabalho.
E quer saber qual a parte mais legal? Esta estrutura de pareamento e colaboração pode ser usada para diversas abordagens! Desenvolvimento de um Business Canvas, escrita de requisitos em um dojo de análise de negócios, e por aí vai.
Extras:
- Fotos sobre CodingDojo no Flickr.
- CodingDojo.org com a explicação do que é um CodingDojo (em inglês).
- Diferentes Katas a serem usados nos exercícios.
Dúvida para o seu primeiro Dojo? Pegue um problema simples como o FizzBuzz, escolha uma linguagem, um framework de teste e mande ver!
15 respostas a “Quer praticar programação? Coding Dojo!”
[…] 24 de junho fizemos um Coding Dojo lá na PUC-RS, reunindo a galera. O Dionatan Moura selecionou um problema bem legal e fizemos um […]
[…] Coding Dojos são excelentes oportunidades para a prática do código limpo. Seja de um problema do zero como de […]
[…] e chegando em Design Patterns. Após este momento, que durou cerca de 30 minutos, iniciamos um Coding Dojo trazendo um código legado com uma qualidade péssima, mas testado. A idéia era justamente pegar […]
[…] prática, o treino, é necessário e essencial para melhorar. O post sobre CodingDojo também teve seu destaque no ano de 2014 e sempre é referência quando […]
[…] Exemplo clássico são as sessões de Coding Dojo. […]
[…] um desenvolvedor de software: A cada semana resolver um problema de CodingDojo. Resultados Esperados: Manter um ritmo de programação vivo com aprendizado de novas ferramentas e […]
[…] processo vai ser legal para saber mais sobre Open Source, sobre Coding Dojo, ferramentas que podem apoiar no processo de aprendizado, como se fosse um jogo. Tanto é verdade […]
[…] já falei aqui no blog sobre CodingDojo e como acredito neste tipo de ação/cerimônia. Temos a oportunidade de desenvolver mais […]
[…] que é construído em conjunto, também com palestras, mas com discussões, reflexões, CodingDojos, e promovendo novas pessoas para contribuir e colaborar com sua comunidade. Todas comunidades […]
[…] pode pensar em problemas a serem resolvidos. Lembrar também do post que fiz no passado sobre Coding Dojos. Deixo outras duas referências para você ver mais sobre aplicar Katas ou simplesmente praticar […]
[…] já fiz um post sobre Coding Dojo, aproveite para ver outros recursos para seu aprendizado. E saiba que o Coding Dojo pode ser uma […]
[…] Participe de Coding Dojos, faça sessões de programação, crie grupos que se reúnem para praticar […]
[…] Dojos, aproveitando a característica natural de uma série de atividades que podem ser realizadas em pares. Oportunidade de trabalhar aspectos como humildade, respeito, e permitir que pessoas de equipes diferentes interajam. […]
[…] Coding Dojo. Quando precisar organizar um processo de aprendizagem pareada junto com uma equipe, você pode operar em modelo de Coding Dojo. Como o nome diz existe uma relação direta com código, mas já apliquei a mesma estrutura para aprendizados de outros assuntos, como análise de negócios. Poderia ser usada para construção de textos, poesias e até para aprender a fazer peças de desenho em um photoshop por exemplo. […]
[…] pessoa candidata pode usar no máximo 1 hora para fazer o teste. E é como um exercício de coding dojo. Não estamos com a preocupação de terminar o problema. Estamos buscando entender o desafio e […]