Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Coding Dojo

Coding Dojo

Palestra dos Seminários sobre Software Livre

Avatar for Danilo Cabello

Danilo Cabello

December 05, 2011
Tweet

More Decks by Danilo Cabello

Other Decks in Programming

Transcript

  1. Palestrante  Danilo Cabello <danilo.cabello at gmail.com>  Estudante do

    décimo semestre de Engenharia de Computação  Desenvolvedor na Empreendemia
  2. Definição  Coding Dojo é um encontro em que um

    grupo de programadores se reune para programar em cima de um desafio. Eles estão lá para se divertir e praticar a fim de melhorar suas habilidades. (Tradução livre de http://codingdojo.org/)
  3. Objetivo  Aprendizado contínuo  Treinar, Praticar  Programar melhor

     Ensinar  Discutir sobre o código  Comunidade
  4. Princípios  Ambiente seguro  Não competitivo  Colaborativo 

    Inclusivo  Todos devem entender o código atual  Sempre começa do zero  Baby steps  Contra Big Design Up Front
  5. O que não faremos  Competir  Resolver problemas reais

     Correr para terminar o problema  Deixar pessoas para trás  Entrar em "flamewars"
  6. Formatos - Kata  Apresentação de uma solução  Todos

    devem conseguir reproduzir  Interrupções permitidas para tirar dúvidas
  7. Formatos - Kake  Novo  Quase Randori  Nível

    mais avançado  Vários pares simultâneos  Pessoas trocam entre máquinas a cada turno
  8. Formatos - Randori  Projetor + Computador  Pair Programming

    (piloto e co-piloto)  Turnos “time-boxed” (5 - 7 minutos):  O co-piloto vira piloto  O piloto volta para a platéia  Um novo co-piloto é convidado da platéia  TDD  Comentários e críticas somente no verde  Silêncio no vermelho
  9. Retrospectiva  Sugestões e críticas  O que aprendemos? 

    O que gostamos?  O que pode melhorar?  Comentários
  10. Testes unitários  Método de verificação e validação do funcionamento

    de pequenos porções de código  xUnit: framework que visa facilitar a criação, agrupamento e execução de testes unitários, exemplos:  assertEquals(eleva_quadrado(3), 9)  assertTrue(numero_par(4))  assertEquals(inverte('texto'), 'otxet')  assertEquals(fatorial(3), 6)
  11. TDD (Test Driven Development)  Técnica de desenvolvimento que estimula

    o uso constante de testes unitários e refatoração  Quebra de paradigamas!  O teste é escrito antes do código  Escrever mais não é desperdício de tempo e sim um investimento  A implementação não é tão importante  Feedback instantâneo sobre falhas de software
  12. TDD (Test Driven Development)  Fluxo  1. Escreve o

    teste  2. Teste falha  3. Implementa a solução  4. Teste passa  5. Refatoração  6. Repetir 1. até que se esgotem os requisitos
  13. TDD (Test Driven Development)  Falhas descobertas tarde custam muito

    caro!  Ajuda a desenvolver menos, de forma mais simples e focada  Os testes servem como documentação atualizada do funcionamento do código e do projeto  Aumenta a confiança do desenvolvedor na hora de refatorar, e evita o problema da falta de cobertura
  14. Testes na sua linguagem  Python: unittest  Ruby: Test::Unit

     PHP: SimpleTest  Javascript: jsUnit  jQuery: QUnit  .NET: nUnit  Java: jUnit  Perl, C, C++, etc...  Dica: pesquise por <linguagem> unit testing
  15. Onde  Unicamp em alguma sala entre o IC3 e

    IC3,5  1 vez por semana a partir da semana que vem  Sugestões de horário em http://bit.ly/cdunicamp
  16. Exemplos de problemas  Cheque em extenso  Converter um

    valor monetário para o texto correspondente  Exemplo:  assertEquals(str(Money(“15532.14”)), “quinze mil quinhentos e trinta e dois reais e catorze centavos”)
  17. Exemplos de problemas  Amigo Oculto  Entrada: lista de

    nomes e emails  Luke Skywalker <luke@theforce.net>  Leia Skywalker <leia@therebellion.org>  Toula Portokalos <toula@manhunter.org>  Gus Portokalos <gus@weareallfruit.net>  Bruce Wayne <bruce@imbatman.com>  Virgil Brigman <virgil@rigworkersunion.org>  Lindsey Brigman <lindsey@iseealiens.net>  Enviar um email para cada participante informando qual o seu amigo oculto  Restrição: o amigo oculto não pode ser da mesma família
  18. Exemplos de problemas  O jogo de xadrez possui várias

    peças com movimentos curiosos: uma delas é a dama, que pode se mover qualquer quantidade de casas na mesma linha, na mesma coluna, ou em uma das duas diagonais, conforme exemplifica a figura  Dada a posição de uma dama em um tabuleiro de xadrez vazio (ou seja, um tabuleiro 8 × 8, com 64 casas), de quantos movimentos, no mínimo, ela precisa para chegar em outra casa do tabuleiro?
  19. Referências  http://codingdojo.org/  http://dojorio.org/  Test-Driven Development: By Example

    – Kent Beck http://www.amazon.com/Test-Driven-Development-  http://improveit.com.br/xp/praticas/tdd  http://en.wikipedia.org/wiki/Big_Design_Up_Front