Blog da Improve It

Code Kata

Publicado por Vinicius Manhães Teles há aproximadamente 1 ano.

Kata

Durante a viagem para o Paraná, aproveitei para escutar diversos podcasts que estavam há tempos no notebook. Um dos mais interessantes foi a entrevista que Dan Benjamin fez com Dave Thomas. Dave falou sobre como virou editor de livros "acidentalmente". Aliás, editor de alguns dos melhores livros de computação da atualidade. Além disso, falou sobre Ruby e Rails, naturalmente. Mas, o que mais me chamou a atenção foi o conceito de Code Kata.

O Ivan Sanchez toca uma bela iniciativa nesse sentido através do Coding Dojo Floripa. Eu já tinha uma noção do significado de Dojo e Kata através de seu site. Mas, ouvindo as explicações do Dave Thomas, a idéia ficou mais clara ainda e compreendi o quanto é poderosa.

Ele explica que seu filho luta Karatê, onde se aprende diversos tipos de Kata. O Kata é uma seqüência de movimentos que o lutar repete inúmeras vezes à medida que se exercita. São movimentos de ataque e defesa que o lutar faz para "simular" uma luta real. Provavelmente nenhuma luta irá se assemelhar ao Kata, mas o objetivo não é esse.

A idéia é fazer com que os movimentos sejam "internalizados" pelo lutador. Ou seja, eles precisam sair do nível consciente para o subconsciente. Precisam "entrar no sangue" e se tornar tão naturais que o corpo passe a agir de forma reflexiva, sem que a mente consciente tenha que entrar em ação. De tanto repetir os movimentos, o corpo acaba aprendendo e o lutador passa a executá-los sem se dar conta do que está fazendo. É como passar marcha, acelerar e frear. São ações feitas de forma praticamente subconsciente quando estamos dirigindo.

O Code Kata é um exercício de programação que o desenvolvedor executa para treinar suas habilidades de desenvolvimento. A idéia é, de tempos em tempos, refazer o exercício, mas sempre se esforçando para criar uma solução diferente para o mesmo problema. Isso ajuda a explorar novos pontos de vistas e pesquisar abordagens alternativas.

Há também o formato de reuniões, onde um ou dois desenvolvedores trabalham na solução de um exercício de programação, com uma platéia assistindo e fazendo perguntas, como o que fizemos no XP Rio há alguns meses: o XP Rio on Rails.

Adorei esse conceito e hoje mesmo o utilizei durante o treinamento Imersão Ágil aqui em Fracisco Beltrão. O único detalhe é que misturei isso com programação em par e o resultado parece ter sido bem proveitoso, sobretudo para ajudar os alunos a fixar alguns dos conceitos mais importantes de TDD.

OBS: Figura retirada do Wikipedia.

Tags , , ,  | 1 comentário

O que você achou? Coloque seus comentários e sugestões abaixo!

Acompanhe o RSS dessa página.

Comentários (1 até o momento)

  1. Marcos Tapajós disse 1 dia depois:

    Vinícius, quando comecei a andar de moto um amigo me ensinou um conceito que só aprendi o nome com esse seu post. Kata !

    Ele me explicou que o grande segredo de dirigir uma moto com segurança é tornar determinadas reações instintivas e ele me deu um exemplo e me mandou fazer um exercício que até hoje eu pratico.

    Todo motociclista sabe que nunca se deve freiar forte com a moto inclinada numa curva pois qualquer pequeno travamento em alguma das rodas fará você cair na mesma hora. O problema é que na hora que você toma um susto a primeira reação é instintiva e é freiar tudo.

    O segredo desse tipo de situação é levantar a moto e freiar tudo que é possível até parar ou até quando não se puder mais manter a moto reta sem sair da pista quando se deve deitar novamente e continuar a curva acelerando.

    O exercício que ele me ensinou é bem simples e consiste em quando eu estiver passeando de moto, sem nada para fazer, simular essa situação várias vezes nas mais diversas curvas para tornar esse movimento instintivo. Na época achei que isso fazia muito sentido e pratiquei muito (ainda hoje faço isso).

    Recentemente essa pratica me fez escapar de um acidente razoavelmente grave onde eu estava com várias motos indo de Teresópolis para Petrópolis quando em uma curva cheia de areia um casal de amigos cometeu esse erro caindo na minha frente. O que me salvou foi eu estar com essa pratica bem treinada eu conseguir levantar, freiar e só bater de leve na moto desse amigo.

    Em software as coisas são um pouco melhores pois não envolve atrito com asfalto mas o conceito é o mesmo e cada vez mais vejo que realmente a pratica pode fazer uma grande diferença.