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

Coding Dojo: Um investimento para sua carreira

Coding Dojo: Um investimento para sua carreira

Participar de coding dojos pode ser uma excelente forma de melhorar suas habilidades técnicas, sociais e atender às exigências do mercado de tecnologia: ser um profissional preocupado com qualidade de código.

Testes automatizados, TDD e programação pareada são práticas que oferecem inúmeros benefícios e devem estar no radar de todo desenvolvedor.

Avatar for Rogério Zambon

Rogério Zambon

August 04, 2016

More Decks by Rogério Zambon

Other Decks in Programming

Transcript

  1. Agenda • Introdução • Mercado e exigências • Testes automatizados

    • Dinâmica coding dojo • Vídeo e dúvidas
  2. Introdução Como coding dojos são importantes para criar um raciocínio

    objetivo, aplicar conceitos de testes e praticar programação pareada
  3. Mercado e exigências O mercado de TI é um dos

    mercados que mais cresce e continua oferecendo muitas oportunidades
  4. Mercado e exigências Empresas de tecnologia que possuem seus próprios

    produtos ou que atuam em projetos tem uma mesma preocupação
  5. Mercado e exigências “Como entregar software que atendam as expectativas

    do cliente ou nicho, com baixo ou nenhum índice de falhas e baixo custo de manutenção?”
  6. Mercado e exigências O processo de desenvolvimento de software depende

    de vários fatores técnicos e não técnicos
  7. Mercado e exigências Um profissional (técnico) qualificado não é um

    profissional que entenda de uma linguagem de programação específica, framework ou ferramenta
  8. Mercado e exigências Os fatores técnicos que envolvem o processo

    de desenvolvimento de software estão mais relacionados com decisões de profissionais maduros e experientes
  9. Mercado e exigências “Quais são os impactos ao adotar esse

    conceito/princípio para essa regra de negócio?”
  10. Mercado e exigências O mercado precisa de profissionais que tenham

    vontade de aprender e agregar à empresa com sua experiência e conhecimento
  11. Mercado e exigências O mercado precisa de profissionais que assumam

    responsabilidades, enfrentem desafios e sejam maduros
  12. Qualidade de software também está relacionada com vários fatores e

    testes automatizados pode te ajudar muito nesse caminho Mercado e exigências
  13. • Desenvolvedor Java Sênior • Desenvolvedor Java Pleno • Desenvolvedor

    Java Trainee • Analista de Testes • Analista de Suporte • Gerente Devops/SysAdmin Mercado e exigências
  14. Participe de eventos, cursos e grupos de estudo. Mantenha suas

    informações profissionais atualizadas Mercado e exigências
  15. Escolha e contribua com projetos open source e diga as

    pessoas sobre seus engajamentos Mercado e exigências
  16. Testes automatizados As leis de Lehman fazem dos testes automatizados

    ainda mais importantes para o dia-a-dia do desenvolvedor
  17. Testes automatizados Meir Lehman diz que a tendência de um

    software é que “mudará continuamente, com maior complexidade e com qualidade inferior”
  18. Testes automatizados Por conta disso, há anos testes automatizados são

    usados com muita dedicação. Os programas espaciais são bons exemplos
  19. Por que escrever testes automatizados? • Redução de custos •

    Redução de erros • Regressões de código Testes automatizados
  20. Testes automatizados Redução de custos diz respeito ao tempo, dinheiro

    ou pessoas; o que escrevemos pode gerar um aumento de despesas e mais tempo gasto na mesma demanda
  21. Testes automatizados Redução de erros diz respeito a cobertura definida

    para detectar erros assim que uma modificação é realizada e que talvez você descubra muito tempo depois
  22. Testes automatizados Regressões de código diz respeito a garantia de

    que, por mais modificações necessárias, o comportamento do código existente não será modificado
  23. Testes automatizados Teste manual garante que dada uma ação, o

    resultado é algo que você espera. O teste automatizado só agiliza e diminui o tempo para se obter um feedback
  24. Existem várias “tipos de testes” • Testes de unidade •

    Testes de integração • Testes de aceitação • Testes de segurança • Etc... Testes automatizados
  25. Testes automatizados No entanto, para escrever um bom código é

    preciso entender o feedback que seus testes oferecem
  26. Testes automatizados O ciclo do desenvolvimento guiado por testes requer

    que se escreva um teste que falhe, depois faça-o passar escrevendo o mínimo de código possível e, por fim, refatore o código
  27. Testes automatizados Quando escrevemos testes antes, passamos a garantir que

    grande parte (ou todo) do software tem testes garantem o seu funcionamento
  28. Dinâmica coding dojo Kent Beck Engenheiro de software Criador da

    metodologia de desenvolvimento Extreme Programming e Test-Driven Development
  29. Consultor Autor de diversos livros sobre desenvolvimento orientado a testes,

    design evolutivo de código e boas práticas Dinâmica coding dojo Robert Martin (Uncle Bob)
  30. Cientista da computação Criador da linguagem Smalltak, precursor do paradigma

    da orientação a objetos e inventor da interface gráfica GUI Dinâmica coding dojo Alan Kay
  31. Dinâmica coding dojo Em coding dojos, reunimos as principais técnicas

    que podem fazer parte do dia-a-dia de todo desenvolvedor
  32. Dinâmica coding dojo Kata • Apresentação de uma solução •

    Todos devem conseguir reproduzir • Interrupções são permitidas para tirar dúvidas
  33. Dinâmica coding dojo Randori • Programação pareada • Turnos de

    5 ou 7 minutos • Comentários/dúvidas somente no verde • Silêncio total no vermelho
  34. Dinâmica coding dojo Randori Programação pareada é uma prática extraída

    da metodologia ágil Extreme Programming e não tem relação com mentoria ou transferência de conhecimento
  35. Dinâmica coding dojo Randori Programação pareada está voltada para a

    entrega de algo com mais qualidade. Há maior foco no desenvolvimento, já que duas pessoas estão pensando juntas em prol da solução
  36. Dinâmica coding dojo Randori Além disso, os turnos existem para

    que os participantes se revesem no desenvolvimento da dinâmica
  37. Dinâmica coding dojo Randori Normalmente, é divido em piloto e

    copiloto Após se encerrar o turno, o piloto sai e o copiloto assume como piloto. Nesse momento, um outro participante assume como copiloto
  38. Dinâmica coding dojo Randori O piloto tem a função de

    escrever todos os testes e os códigos e o copiloto auxilia no desenvolvimento do raciocínio
  39. Dinâmica coding dojo Kake • Semelhante ao Randori • Turnos

    e pares simultâneos • Participantes trocam de computador
  40. Dinâmica coding dojo • Aprendizado contínuo • Ambiente seguro •

    Não competitivo • Colaborativo • Inclusivo • Baby steps
  41. Dinâmica coding dojo Regras gerais: • Computador + monitor/projetor •

    TDD (Test-Driven Development) • Todos devem entender • Sempre recomeça do início
  42. Dinâmica coding dojo Alguma proibições: • Correr para finalizar o

    desafio • Usar problemas reais • Richas entre participantes • Deixar alguém sem entender
  43. Dinâmica coding dojo Ao final dos coding dojos: • O

    que aprendemos? • Existem pontos positivos? • Existem pontos a melhorar?