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

Coding Dojo

Coding Dojo

Palestra dos Seminários sobre Software Livre

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 <[email protected]>  Leia Skywalker <[email protected]>  Toula Portokalos <[email protected]>  Gus Portokalos <[email protected]>  Bruce Wayne <[email protected]>  Virgil Brigman <[email protected]>  Lindsey Brigman <[email protected]>  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