Slide 1

Slide 1 text

Coding Dojo Seminários sobre Software Livre 11/Agosto/2010

Slide 2

Slide 2 text

Palestrante  Danilo Cabello  Estudante do décimo semestre de Engenharia de Computação  Desenvolvedor na Empreendemia

Slide 3

Slide 3 text

Público alvo  Programadores sem distinção de linguagem  Entusiastas  Estudantes de computação

Slide 4

Slide 4 text

Motivação  Ausência de treinamento  Por que programadores não treinam? Treinar pra quê, peixe?

Slide 5

Slide 5 text

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/)

Slide 6

Slide 6 text

Objetivo  Aprendizado contínuo  Treinar, Praticar  Programar melhor  Ensinar  Discutir sobre o código  Comunidade

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

O que não faremos  Competir  Resolver problemas reais  Correr para terminar o problema  Deixar pessoas para trás  Entrar em "flamewars"

Slide 9

Slide 9 text

Foco  Nas pessoas  Nos processos, não no fim

Slide 10

Slide 10 text

Formatos  Kata  Kake  Randori

Slide 11

Slide 11 text

Formatos - Kata  Apresentação de uma solução  Todos devem conseguir reproduzir  Interrupções permitidas para tirar dúvidas

Slide 12

Slide 12 text

Formatos - Kake  Novo  Quase Randori  Nível mais avançado  Vários pares simultâneos  Pessoas trocam entre máquinas a cada turno

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

Retrospectiva  Sugestões e críticas  O que aprendemos?  O que gostamos?  O que pode melhorar?  Comentários

Slide 15

Slide 15 text

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)

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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 unit testing

Slide 20

Slide 20 text

Comunidade

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

O que levar  Boa vontade  Bom humor  Lanche

Slide 23

Slide 23 text

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”)

Slide 24

Slide 24 text

Exemplos de problemas  Amigo Oculto  Entrada: lista de nomes e emails  Luke Skywalker  Leia Skywalker  Toula Portokalos  Gus Portokalos  Bruce Wayne  Virgil Brigman  Lindsey Brigman  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

Slide 25

Slide 25 text

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?

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

Dúvidas ?