Coding Dojo

Origem: Wikipédia, a enciclopédia livre.
Saltar para a navegação Saltar para a pesquisa
Coding Dojo no Garoa Hacker Clube

[1]Coding Dojo é um método de aprendizagem para desenvolvimento de projetos em computação, é uma reunião entre várias pessoas que desejam trabalhar coletivamente em um desafio de programação. O desafio pode ser um problema algorítmico a ser resolvido ou uma necessidade de implementação. Cada Coding Dojo se concentra em um assunto específico e representa o objetivo da sessão. Esse assunto deve permitir que aprendamos coletivamente tecnicamente e como enfrentar o desafio com sucesso. O exercício pode ser realizado entre pessoas da mesma empresa, de uma escola ou de diferentes origens.Os primeiros grupos de coding dojo surgiram em 2009.

Dojo é uma palavra de origem japonesa e significa “local de treinamento”, e coding vem do inglês e significa codificação. Portanto, o Coding Dojo nada mais é que do um “local de treinamento de código”, ou “local de treinamento de programação”.

Nessa dinâmica, todas as pessoas constroem juntas a solução, alternando a posição reflexiva da plateia com as posições mais ativas dos pilotos, construindo a partir do trabalho acumulado dos pilotos anteriores.

Desenvolvimento[editar | editar código-fonte]

Inspirado nas práticas dos dojos de artes marciais japonesas, um Coding Dojo inicia-se tipicamente com o seguinte arranjo:[2][3][4]

  • ao menos um computador conectado a um projetor
  • uma tela de projeção que todos possam ver
  • um piloto, um copiloto e um mestre
  • demais participantes em plateia

O mestre oferece um desafio ao grupo. O piloto, sentado ao computador, é a única pessoa que pode utilizá-lo para concluir o desafio. O copiloto permanece ao seu lado, mas somente para observar o piloto em ação e oferecer indicações. Todos os demais observam e podem discutir entre si e com o copiloto e o piloto.

Qualquer um pode ainda fazer perguntas ao mestre, mas este só pode responder com outra pergunta.

Independente do desafio ser resolvido, a cada cinco minutos o atual piloto volta à plateia, o copiloto torna-se o próximo piloto, e alguém da plateia assume como copiloto.

A cada desafio cumprido, o mestre oferece um outro, ligeiramente mais complexo.

Ao final do Coding Dojo, normalmente, os participantes realizam uma retrospectiva do evento.

Nessa retrospectiva, que pode ser realizada utilizando diversas técnicas, de maneira geral são respondidas três perguntas básicas:

  • O que aprendemos com o Coding Dojo de hoje;
  • O que podemos melhorar para a realização dos próximos Coding Dojos;
  • O que devemos continuar fazendo nos próximos Coding Dojos.

A retrospectiva é extremamente importante, pois condensa todo o aprendizado do Coding Dojo.

O dojo pode ser organizado também com apenas dois participantes, ou em grupos de dois participantes, quando não há necessidade de projetor. Também chamada programação em pares, nessa forma os participantes alternam-se nas funções de piloto e copiloto.

Uma ênfase dos dojos são os passos de bebê, garantindo que todos os participantes estejam acompanhando todo o progresso. Outra ênfase pode ser no desenvolvimento orientado a testes (Test Driven Development).


Como funciona um Coding Dojo?[editar | editar código-fonte]

Para ter um coding dojo que funcione bem, alguns ingredientes são necessários:

1. Criar um ambiente adequado e com os equipamentos necessários[editar | editar código-fonte]

Novamente, um dojo é um ambiente sem competição e colaborativo. Então, criar um ambiente seguro, confortável e propício ao compartilhamento de conhecimento é mandatório.

De acordo com o formato escolhido, também precisamos ter à disposição uma quantidade de computadores compatível com a quantidade de pessoas que irão codificar. Também temos um projetor para que todos possam visualizar os códigos e um quadro branco para discutir soluções.

2. Definir a periodicidade e o objetivo das reuniões[editar | editar código-fonte]

A ideia de ter um dojo é que as pessoas se reúnam com certa periodicidade — não se trata de apenas uma única reunião. Preferencialmente, os encontros acontecem em um mesmo local e no mesmo horário.

Formatos[5][editar | editar código-fonte]

Existem alguns formatos que são utilizados para a realização de Coding Dojos:

  • Kata:
    • Nesse formato existe a figura do apresentador. Ele deve demonstrar uma solução pronta, previamente desenvolvida.
      • O objetivo é que todos os participantes sejam capazes de reproduzir a solução alcançando o mesmo resultado, sendo permitido realizar interrupções para sanar dúvidas a qualquer momento;
        Evento de Dojo Kata

  • Randori:
    • Nesse formato há a participação de todos. É proposto um problema a ser resolvido e a programação é realizada em apenas uma máquina, por pares. Para esse formato é imprescindível a utilização de TDD e passos de bebê.
      • A pessoa que está codificando é o piloto, e seu par o co-piloto. A cada cinco minutos o piloto volta para a plateia e o co-piloto assume a condição de piloto. Uma pessoa da plateia passa a assumir a posição de co-piloto.
      • Somente são permitidas interrupções quando todos os testes estiverem no verde. É importante notar também que é a dupla quem decide o que será feito para solucionar o problema. Todos devem entender a solução, que deve ser explicada pelo piloto e pelo co-piloto ao final de seu ciclo de implementação;
  • Kake:
    • É um formato semelhante ao Randori, porém há várias duplas trabalhando simultaneamente. A cada turno as duplas são trocadas, promovendo a integração entre todos os participantes do evento. Nesse formato um conhecimento mais avançado dos participantes é necessário.

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.

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.

Vantagens[5][editar | editar código-fonte]

O Coding Dojo é um ambiente seguro para testar novas ideias, promover o networking e compartilhamento de ideias entre os membros da equipe. É muito comum empresas promoverem Dojos abertos. Dessa forma a empresa pode conhecer profissionais que possam se adequar ao seu ambiente e os profissionais também tem a oportunidade de conhecer o ambiente dessas empresas.

e também alguns valores são fortalecidos com a pratica do coding dojo como:

  • Coragem: É necessário coragem para sair da zona de conforto e enfrentar um desafio. O ambiente do Coding Dojo propicia que todos desenvolvam essa característica, trabalhando em projetos que permitem que aconteçam erros, sem estar diretamente envolvido na rotina normal de um projeto (prazo, custo, etc);
  • Cooperação: A solução para o problema proposto é construída com a cooperação de todos os participantes, o que cria um ambiente colaborativo;
  • Participação: Todos os participantes participam da resolução do problema, o que cria um sentimento de igualdade entre todos os envolvidos,fazendo com q n tenha nenhuma opinião mais importante q a outra.
  • Respeito: Todos os participantes devem respeitar a solução proposta pelos demais, mesmo conhecendo maneiras diferentes de resolver o problema. Como o intuito é aprender, o respeito pelo tempo de cada participante é fundamental;
  • Simplicidade: O Coding Dojo serve para compartilhar conhecimentos e experiências entre os participantes. Como cada participante pode estar em um nível técnico diferente, é importante que seja mantida a simplicidade tanto no problema composto como na solução implementada, de forma que todos consigam entender exatamente o que está sendo feito.

Testing Dojo[5][editar | editar código-fonte]

Testing dojos, ou dojos de teste, fornecem uma estrutura similar a de um dojo de programação. Os testers, porém, praticam habilidades individuais dentro de um grupo.

O desafio do dojo pode ser testar um produto, gerar ideias de teste para um software em particular, exercitar geração de relatórios de bugs, ou até mesmo avaliar ferramentas. Normalmente, tudo isso é feito através de testes exploratórios.

Em um dojo de testes, os papéis também sofrem algumas modificações. Agora teremos:

  • Tester: a pessoa que interage com o programa.
  • Registrador (recorder): a pessoa que registra informações relativas às atividades.
  • Facilitador: pessoa que define a missão para o dojo, facilita o feedback e garante que as regras sejam seguidas.
  • Observador(es): a platéia. Cada pessoa que observa a criação da solução deve fazer notas sobre o processo, o que inclui monitorar as atividades e as interações entre os participantes. Como não é possível observar tudo o que acontece, é importante focar em um ou dois pontos, tais como: ideias sobre cobertura, pausas na fala, monólogos, pausas no teste, gerenciamento do foco…

Passos de bebe[6][editar | editar código-fonte]

Quando um bebê está aprendendo a caminhar ele não arrisca dar passos grandes por aí. No Dojo acontece da mesma forma.

O código vai saindo devagar, ajudando para que todos estejam entendendo o que está acontecendo e que rumo tudo está tomando.

Sempre que alguém não estiver entendendo o que está acontecendo, esse tem o direito de perguntar e se encaixar nos trilhos novamente.

Utilização em outras áreas[5][editar | editar código-fonte]

A ideia de um dojo não pertence a uma única disciplina como artes marciais ou programação. Estes mesmos conceitos que você acabou de ler podem ser aplicados em outras áreas.

"Certo, mas como eu faço isso?"

Da mesma forma que um dojo funciona: com pessoas dispostas a colaborar para resolver problemas, aprender novas técnicas e compartilhar conhecimentos.

Trabalha em uma empresa que quer substituir o sistema atual por um novo software? Monte um dojo para aprender a utilizar esse software. Proponha reproduzir algumas atividades simples que eram feitas no sistema antigo (lembre-se, baby steps).

Já conseguiu reproduzir as atividades anteriores com sucesso e todo mundo entendeu como fazê-las? Analise funcionalidades agora. Vá atrás daqueles botões que ninguém usou e não sabe como funciona.

Todo mundo adquiriu um bom nível de proficiência no software? Pense em novas formas de utilizá-lo.

Entrevista[7][editar | editar código-fonte]

A melhor forma de conhecer e entender como funcionam os dojos e porque estão se multiplicando tanto, é participando você mesmo de um desses eventos. Outra boa opção é perguntar para quem já participou ou organizou. Foi o que fizemos, entrevistando Henrique Bastos, um veterano em Dojos e um dos fundadores do Dojorio. Henrique vem participando e organizando Dojos há quase três anos e usa as dinâmicas desses eventos em várias atividades, profissionais e acadêmicas.  

Rodrigo Urubatan (RU): Como foi o Início do Dojorio e quando você começou a participar?

Henrique Bastos (HB): Em outubro de 2008, no evento PythonBrasil 2008 que aconteceu no Rio, o amigo Rodolfo Carvalho montou um Dojo que chamou muita atenção. Em seguida, foi tentada a organização de um dojo semanal, mas foi difícil encontrar um espaço. Somente em dezembro de 2008, Rodolfo e Flávio Amieiro conseguiram estabelecer o Dojorio.

Só participei do Dojorio pela primeira vez no início de 2009. Rodolfo vinha insistindo no convite havia algum tempo, mas eu estava muito ocupado organizando a PythonCampus. Então ele propôs se juntar à organização do evento, para que sobrasse tempo para participarmos do Dojorio. Acho que nunca o agradeci o suficiente por isso!

RU: Qual sua opinião sobre a utilização de dojos como ferramenta de ensino em faculdades e cursos de programação em geral?

HB: Não há maneira melhor de ensinar! Temos levado o modelo do Dojorio para diversas universidades. Muitos professores estão obtendo resultados surpreendentes com a utilização das dinâmicas dos dojos para ensinar – principalmente em matérias de introdução à programação. E tenho tido bastante sucesso com o uso de dojos em meus treinamentos.

RU: Você já utilizou um dojo em uma empresa? Como foi a experiência?

HB: Com o sucesso do Dojorio, decidimos fazer dojos semanais na Myfreecomm (empresa nacional de softwares financeiros). Tem sido fantástico para compartilhar experiências e discutir diferentes visões, que, por razões diversas, acabam não emergindo no dia a dia. Uma curiosidade é que a dinâmica de compartilhamento dos dojos vence inclusive barreiras culturais. Em Orlando, na Flórida, Caike Souza, integrante da turma do Dojorio, tem tido muito sucesso com as iniciativas do OrlandoDojo. E após eu levar o Dojo para a PyCon 2010, uma participante da India gostou da ideia e levou a dinâmica para sua comunidade em Bangalore, Índia.

RU: Você gostaria de acrescentar algo sobre a experiência com dojos?

HB: Sim. Parece haver mais do que uma simples dinâmica nos fundamentos dos dojos. Por isso, um participante do Dojorio está escrevendo seu TCC em Ciência da Computação sobre o uso dos dojos como ferramenta de educação, e uma estudante de Ciências Sociais está desenvolvendo uma pesquisa sobre os fundamentos antropológicos e sociológicos do dojo no seu TCC. Ambos são na Universidade Federal Fluminense, onde – e não por acaso – temos três sessões semanais do Dojorio.

Referências

  1. «Coding dojo». Wikipédia (em francês). 27 de setembro de 2019 
  2. «O que é Coding Dojo?». Florianópolis: petcomputacao.paginas.ufsc.br. 15 de maio de 2014. Consultado em 22 de junho de 2016. Arquivado do original em 15 de maio de 2014 
  3. Pollice, Gary (2011). «Coding Dojo». web.cs.wpi.edu (em inglês). Dept. Computer Science, Worcester Polytechnic Institute. Consultado em 22 de junho de 2016 
  4. Vailati, Tiago (16 de novembro de 2010). «Aprenda mais com Coding Dojo -». imasters.com.br. Consultado em 22 de junho de 2016. Arquivado do original em 21 de agosto de 2016 
  5. a b c d Andrade, Sabrina (21 de novembro de 2018). «Coding Dojo: como melhorar suas habilidades». Medium (em inglês). Consultado em 30 de novembro de 2019 
  6. «Coding Dojo – O Que é ? E Como Participar ?» 
  7. «Coding Dojos: aprendizado, troca de informações e networking na programação». InfoQ. Consultado em 18 de dezembro de 2019 


Bibliografia[editar | editar código-fonte]

Ligações externas[editar | editar código-fonte]

Ícone de esboço Este artigo sobre computação é um esboço. Você pode ajudar a Wikipédia expandindo-o.
Ícone de esboço Este artigo sobre educação ou sobre um educador é um esboço relacionado ao Projeto Ciências Sociais. Você pode ajudar a Wikipédia expandindo-o.