# Dojo
## Objetivo
Capacitar os participantes sobre temas do Dojo, também tem como objetivo a integração de participantes e auxilio no processo de melhoria continua.
A troca de conhecimento estimulada pelo coding dojo, serve não só para o ambiente acadêmico, como forma de facilitador/acelerador de aprendizado como também serve no âmbito das empresas. Sabe-se que várias pessoas com conhecimentos e experiências diferentes trabalham na mesma equipe e utilizar o dojo nestes ambientes gera um compartilhamento de conhecimento, agregando maior valor as equipes e com isto beneficiando tanto a empresa como o colaborador.
## Descrição
A palavra Dojo vem do japonês dojô que é o local de onde se desenvolve o treino de uma arte marcial japonesa. Pegamos esta palavra Dojo emprestada e colocamos a palavra Coding, logo temos um Coding Dojo /o/. No Coding Dojo somos apresentados a temas, treinamos de maneira colaborativa para absorção de um determinado conhecimento.
Requisitos
Para realização do Coding Dojo, precisamos de:
- Tema do Dojo
*Exemplo: Unit Test, Programação Funcional, Realidade aumentada...*
- Escolha do Sensei
O Sensei é a pessoa que ajudará na passagem do conhecimento, a pessoa com mais profundidade sobre o tema, o Sensei deve criar os seguintes materiais para o dia do Coding Dojo
- Acesso a VPN
- Acesso ao GIT
- Conhecimento de programação em react native
- Acesso ao repositório XYZ
- Visual Code
- Homebrew
- Yarn
- O material da apresentação deve estar disponível no Confluence para futuras consultas
- O desafio deve estar disponível no repositório git de Coding Dojo ou poderá ser utilizado o git de um determinado repositório caso o Coding Dojo seja de um projeto pontual :)
- Criar apresentação sobre o tema
Esta apresentação deve ser utilizada para alinhar conceitos e entendimento sobre o tema. Para auxiliar no time box uma sugestão é que a apresentação tenha no máximo 20min.
- Definição de Pré Requisitos Técnicos
O Sensei deve informar qual será o Pré Requisito, como o Coding Dojo tem mão na massa, é necessário que os participantes tenham um conhecimento mínimo , equipamentos e software para acesso ao Dojo. Exemplo de pré requisitos, o participante deve ter:
- Criar um desafio com handsOn entre os participantes relacionado ao tema
Durante o Coding Dojo todos os participantes auxiliarão na resolução deste desafio. Exemplos de desafio: Criar um componente com um layout XYZ, criar um projeto simples na linguagem ABC... Observação, cuidado no tamanho do esforço e complexidade do desafio.
- Compartilhar
- Participantes
Os participantes devem preencher os requisitos mínimos estabelecidos no Dojo
- O desafio
O desafio deverá ter um objetivo bem definido, exemplo: Criação do componente usando um framework XYZ, logo, os participantes terão a capacitação necessária para criar e dar manutenção aos componentes.
- Agenda
Tendo em mãos todos os pontos, criamos uma agenda para o dia do Dojo \o\ a idéia é que o Dojo seja em média de 1h a 2h
## Como funciona
Existem 3 formatos de Coding Dojo:
1. O Dojo Kata foi a primeira técnica a ser elaborada, por Dave Thomas. Um membro do time, chamado de apresentador, escolhe um problema a ser resolvido e apresenta para os outros membros do time, chamados de plateia. Neste método a plateia não interage entre si ou com o apresentador, atua somente como ouvinte. O apresentador pode ser uma dupla programando em par. Mas o importante é que o evento seja divulgado previamente para os membros do time.
2. O Dojo Randori surgiu para ser executado em equipes onde o conhecimento já foi adquirido e é necessário aprofundá-lo. Neste método, a plateia não é somente ouvinte. O evento inicia com um piloto que está executando uma série de comandos e por um navegador que está explicando o que está acontecendo na plateia, também pode ajudar o piloto. Ao fim de cada ciclo de 7min, o piloto volta para a plateia, o navegador assume como piloto e um membro da plateia assume o papel de navegador.
3. Por último, o Dojo Kake. Antes de iniciar o evento, um problema será levantado para que todos busquem uma solução. Cada dupla irá atuar utilizando um método diferente de resolução para o problema. A cada determinado tempo as duplas serão trocadas: o piloto irá para outra dupla, o navegador irá assumir como piloto sem mudar de dupla e assim sucessivamente até o término do evento. Pode existir uma plateia que não irá interagir com o código que está sendo desenvolvido, mas poderá observar a programação que está sendo feita.
Independente do formato de dojo escolhido, ao final de cada reunião é realizada uma retrospectiva a fim de levantar e avaliar os pontos positivos e negativos, compartilhar as lições aprendidas com o grupo.
## Ferramentas
Para facilitar o andamento do Coding Dojo, principalmente em tempos de pandemia, pode ser utilizado as seguintes ferramentas:
- Para a Retro no Final do Dojo
- Entre em https://easyretro.io/dashboard
- Crie um board com o template - Went Well - To Improve - Action Items
- Onde devem ser colocados em Went Well o que foi bom, to Improve o que deve ser melhorado e em Action Items quais são ações que faremos para melhorar
- Para Compartilhamento de Source
- Git
- Para Pair Programming
- Extensão Live Share no Visual Code - https://visualstudio.microsoft.com/services/live-share/
- White Board
- Utilize o Miro https://miro.com
## Processos para métricas
O ideal é que todos os participantes tenham capacity durante a Sprint com tasks cadastradas no Jira, ou seja, o planejamento para participação é importante para não impactar a Sprint dos times. Caso seja muito necessário o Dojo para o time, lembre de realizar o cadastro das tasks no Jira com a descrição do objetivo do Dojo.
Relacione os itens do Dojo nas User Stories, tasks ou subtasks que serão beneficiadas pelo Dojo.