Integração Discreta @ WebDay

Integração Discreta @ WebDay

Como melhorar o desenvolvimento de software através da comunicação

7c12adb8b5521c060ab4630360a4fa27?s=128

Plataformatec

July 20, 2013
Tweet

Transcript

  1. Integração Discreta melhorando o desenvolvimento de software através da comunicação

  2. George Guimarães co-fundador da Plataformatec entrega de projetos impedimentos

  3. None
  4. 4 Desenvolvimento personalizado Consultoria Resgate de projetos

  5. Posicionamento único em RoR Atualmente somos a única empresa a

    ter 3 membros integrando o Rails Core Team ao redor do globo 5 Carlos Antonio Rafael França José Valim Co-fundador da Plataformatec Rails Core Team website: http://rubyonrails.org/core
  6. Posicionamento único em RoR Atualmente somos a única empresa a

    ter 3 membros integrando o Rails Core Team ao redor do globo 5 Carlos Antonio Rafael França José Valim Co-fundador da Plataformatec Rails Core Team website: http://rubyonrails.org/core
  7. Integração Contínua parte do extreme programming (XP) veio para resolver

    o “integration hell”
  8. Força a pensar em testes automatizados Ajudou muitas equipes nas

    entregas de projetos Atualmente vista como pré-requisito de equipes
  9. Existe algo que estamos deixando de lado? Podemos melhorar?

  10. novas práticas nesses ∼15 anos metodologias ágeis git

  11. Evolução, não disrupção O que podemos manter do CI?

  12. Tem certeza que o software funciona? 1. Testes automatizados

  13. Build early, build often 2. Build a cada commit

  14. Chato e barulhento 3. Servidor de CI

  15. E então o que melhorar?

  16. Não jogue código direto no master ou mainline, ou trunk...

  17. se tornou um requisito implícito

  18. “crença” de que branches são ruins

  19. “Don’t use feature branches. Integrate early and often.” “Feature branches

    usually live for months” — Martin Fowler
  20. Evita conflitos no merge Branches separadas ficam desatualizadas Porque integrar

    imediatamente?
  21. “The problem I worry more about is a semantic conflict.

    A simple example of this is that if Professor Plum changes the name of a method that Reverend Green's code calls. Refactoring tools allow you to rename a method safely, but only on your code base. So if G1-6 contain new code that calls foo, Professor Plum can't tell in his code base as he doesn't have it. You only find out on the big merge.”
  22. “This fear of big merges also acts as a deterrent

    to refactoring” “The result we see is that teams using feature branches shy away from refactoring which leads to uglier code bases.”
  23. “CI is effective at removing the problem of big merges,

    but it's also a vital communication mechanism” “Communication is one of the key factors in software development and one of CI's most important features is that it facilitates human communication.”
  24. 1. não são uma ferramenta de comunicação entre desenvolvedores Commits

    no master
  25. Existe algo melhor como desenvolvedores de um mesmo time podem

    colaborar eficientemente?
  26. Pull Requests não são uma idéia nova git send-email git

    request-pull código + contexto + discussão
  27. código + contexto + discussão comunicação entre desenvolvedores

  28. None
  29. None
  30. None
  31. O que é discutido num Pull Request? Code review

  32. O que é discutido num Pull Request? Sintaxe

  33. O que é discutido num Pull Request? Arquitetura do software

  34. O que é discutido num Pull Request? Problemas de escalabilidade

  35. O que é discutido num Pull Request? Disseminação de conhecimento

    do projeto
  36. Collective ownership

  37. “So unless feature branches only last less than a day,

    running a feature branch is a different animal to CI. I've heard people say they are doing CI because they are running builds, perhaps using a CI server, on every branch with every commit. That's continuous building, and a Good Thing, but there's no integration, so it's not CI.”
  38. Mas a gente está integrando... quando está pronto!

  39. Integração Discreta Integre quando está pronto

  40. Integração Discreta Abuse de Pull Requests para comunicação

  41. Integração Discreta Commite coisas pequenas no master (typos, syntax fix)

  42. Integração Discreta Features devem ser pequenas

  43. Integração Discreta Conheça suas ferramentas

  44. Integração Discreta Não trave os desenvolvedores. Explorem um método de

    trabalho.
  45. None
  46. None
  47. 2. “Shippando” features inacabadas Commits no master

  48. E se eu usar feature toggles? É uma maneira de

    desacoplar features de deploys/releases
  49. Toggles trazem problemas Qual é mesmo o toggle que eu

    tenho que ligar?
  50. Toggles trazem problemas O que seu software faz? Vai depender

    dos toggles ligados
  51. Toggles trazem problemas 2^n combinações possíveis

  52. Toggles trazem problemas Precisa ser removido (débito técnico)

  53. CSS não tem toggle — @shiota

  54. ...nem JavaScript — @fnando

  55. Migração de bancos com toggle? Tarefas assíncronas com toggle?

  56. ...fizer rollout incremental de features Use toggles se...

  57. ...testes A/B (são essencialmente toggles) Use toggles se...

  58. ...PO tiver acesso ao toggle Use toggles se...

  59. ou seja, use feature toggles se ele possuir valor!

  60. Código WIP é bagunça mesmo, não se envergonhe E não

    para esconder o WIP
  61. Concluindo...

  62. 1. Testes automatizados

  63. 2. Build a cada commit/branch

  64. 3. Pull Requests

  65. 4. Comunique-se

  66. a Plataformatec orgulha-se em dizer

  67. Não usamos CI

  68. usamos Integração Discreta

  69. http://www.flickr.com/photos/47863131@N08/7940580038 http://martinfowler.com/bliki/FeatureBranch.html http://dymitruk.com/blog/2012/02/05/branch-per-feature/ http://arialdomartini.wordpress.com/2011/11/02/help-me-because-i-think-martin- fowler-has-a-merge-paranoia/

  70. george@plataformatec.com.br @georgeguimaraes Obrigado!