# 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.