SlideShare uma empresa Scribd logo
1 de 65
Métodos Ágeis:
O que é folclore
 e o que é real?
         Mauricio Aniche
 mauricio.aniche@caelum.com.br
        @mauricioaniche
Nós amamos
métodos ágeis!
No mestrado...
Mas tudo faz sentido...
Será que vale a pena
  estudar melhor?
Homens de nível educacional mais alto apresentaram
maior quantidade de sintomas pseudoneuróticos do
que aqueles que haviam recebido menos instrução;

Homens do meio rural mantiveram-se mais bem-
humorados durante a guerra do que os soldados
recrutados nas cidades;

A capacidade dos homens do Sul (dos EUA) para
suportar o calor era maior do que as dos soldados do
Norte.
         Lazarsfeld, P. "The American Soldier - An Expository Review", 1949.
Nossa intuição
pode estar errada!
Mas nós conhecemos
bem de software, não
tem como errarmos!
Programador 10x!
• Sackman, Erikson, Grant (1968): experimento
  controlado com programadores depurando;
• Curtis (1981) também depurando;
• Mills (1983) apenas um relato de opiniões;

Só um relacionado:

• Valett (1989) achou razões de 1 pra 8 em
  projetos pequenos e 1 pra 20 em projetos
  grandes (mas mediu em produtividade com
  número de linhas escritas)


          Bossavit.The Leprechauns of Software Engineering, 2011.
Pode ser
  verdade,
mas a ciência
não mostrou!
Mas tem um monte
 de trabalhos sobre
   métodos ágeis!

        Diversos questionários
da VersionOne, Scott Ambler, e outras
         evidências anedotais!
De 1996 trabalhos,
 só 36 possuem
 rigor científico

   (Dyba,T., Dingsoyr,T. Empirical studies of agile software
              development: A systematic review)
• Grande parte dos estudos feitos com XP
  (76%);
• Single-Case (39%) e Multiple-Case (33%)
• 73% dos estudos com iniciantes em agile; só
  12% com times maduros;
• 73% dos estudos com profissionais;
       (Dyba,T., Dingsoyr,T. Empirical studies of agile software
                  development: A systematic review)
Vocês sabem, aliás,
        como nasceu a XP?
“The best software development team
      on the face of the earth”.


                 “As of the first of February, 2000, the C3
                 project has been terminated without a
                 successful launch of the next phase”.

    Stephens, Roseberg. Extremme Programming Refactored: A Case Against XP, 2003.
Vamos analisar
 alguns desses
    mitos...
Sem TDD, meu código
 não terá qualidade!
Por quê?


• TDD faz o programador criar melhores
  projetos de classes.
A maioria dos
     estudos foram
feitos com estudantes!
Efeitos no projeto
    de classes?
       - Pouco conclusivos
    - Projetos mal escolhidos
- Focados em métricas de código
Outras pessoas
           já perceberam que
           os efeitos de TDD
          não são tão naturais
                  assim!
M. Siniaalto and P. Abrahamsson, “Does test-driven development improve the program code?
Alarming results from a comparative case study,” Balancing Agility and Formalism in Software
                            Engineering, vol. 5082, pp. 143–156, 2008.
            [Online]. Available: http://dx.doi.org/10. 1007/978- 3- 540- 85279- 7_12
A pergunta é:
 usar ou não
 usar TDD?
a prática de TDD não guia o
    desenvolvedor para um bom
   projeto de classes de forma
           automática!

Aniche, Gerosa. Como a Prática de TDD Influencia o Projeto de Classes em Sistemas Orientados a
                   Objetos: Padrões de Feedback para o Desenvolvedor. 2012
TDD dá retorno
   constante sobre os possíveis
    problemas existentes no atual
     projeto de classes. É tarefa
        do desenvolvedor
     perceber esses problemas e
   melhorar o projeto de acordo.
Aniche, Gerosa. Como a Prática de TDD Influencia o Projeto de Classes em Sistemas Orientados a
                   Objetos: Padrões de Feedback para o Desenvolvedor. 2012
Eu uso TDD quando...


• Não sei bem como projetar minhas classes;
• Sei bem o quê quero fazer, mas não sei bem
  como fazer.
Eu não uso TDD quando...


 • Já tenho bem claro o projeto da classe que
   estou trabalhando;
 • É código que lida com infraestrutura.
Mas testo o tempo todo!
 • Mesmo quando não faço TDD, escrevo
   testes frequentemente.
Testes automatizados
     é um dos grandes
trunfos dos métodos ágeis
MITO!
Programação pareada é
     obrigatório!
Por quê?

• Código de maior qualidade
• Maior produtividade
• Distribuição de conhecimento
Veio antes da XP...

• “Fellow graduate student Bill Wright and I first
  tried pair programming when I was a grad
  student (1953-1956).We produced 1500 lines
  of defect-free code; it ran correctly first try”
  Fred Brooks
Talvez uma das áreas
com a maior quantidade
   de estudos feitos


 [Begel and Nagappan 2008], [Dyba et al. 2007], [Jensen 2003], [Luck 2004],
                     [Vanhanen and Korpi 2007], ...
Programação
  pareada
  100% do
   tempo?
Quando usar PP?

       • Quando a tarefa é complexa;
       • Quando há conhecimento para ser
            compartilhado.




Aniche, Silveira. Increasing Learning in an Agile Environment: Lessons Learned in an Agile Team, 2011.
Quando não usar PP?

       • Quando a tarefa é simples e não há
            conhecimento a ser compartilhado;
       • Tarefas de estudo.


Aniche, Silveira. Increasing Learning in an Agile Environment: Lessons Learned in an Agile Team, 2011.
Desafios da PP
 • Não é fácil parear
 • Luta contra o hábito
 • Ponto de vista financeiro
  • “If I have a choice, I can employ one star
         programmer instead of two programmers
         who need to code in a pair” [Begel and
         Nagappan, 2008]
 • Coordenação e times distribuídos
Laurie Williams em “Making Software:What Really Works, and Why We Believe it” -- Oram,Wilson
MITO!
Documentação não
 serve pra nada!
Por quê?


• Documentações raramente
  representam a realidade.
Na ciência...

    • Corrigir um problema durante o
         levantamento de requisitos custa 100x
         menos do que corrigir o mesmo problema
         quando o software já está em produção.
        • Em projetos pequenos, a escala é de 5:1
Barry Boehm em “Making Software:What Really Works, and Why We Believe it” -- Oram,Wilson
Mas sabemos que é
impossível levantar
todos os requisitos
      antes!
“XPers are not afraid of
 oral documentation”
      Uncle Bob
Podemos então
   usar única e
  exclusivamente
documentação oral?
  “Do as much or as little requirements
documentation as you feel is necessary, but
   personally we do as little as we can”
Como documentar?

• Levante requisitos e os valide
  constantemente
• Maximize comunicação: papel, bate-papo,
  feedback constante.
MITO!
Big Design Up Front?
   Seu cascateiro!
Por quê?

• Complexidade desnecessária
• Desperdício de tempo, pois na
  prática, sabemos que as coisas
  mudam
UML é um veneno!
                         Será mesmo?




2007, Mario Cherubini, Gina Venolia, Rob DeLine and Andrew Ko
Pense em
         arquitetura sim!

• O problema é “TENTAR PENSAR EM
  TODOS OS DETALHES DE
  PRIMEIRA”, e não “TENTAR
  PENSAR”


              Veja os dados encontrados por Barry Boehm em
 “Making Software:What Really Works, and Why We Believe it” -- Oram,Wilson
MITO!
Correlação x Causa
Meu irmão passou em
todas universidades!
A ciência não erra?
Muitos estudos diziam que mulheres que faziam terapia de
substituição de hormônios tinham menos chance de ter
uma doença do coração;

Mas alguns estudos controlados mostraram que a terapia
AUMENTAVA a chance;

A re-análise dos primeiros estudos mostrou que as
mulheres que passavam pelo tratamento pertenciam a
classes mais altas, que tinham uma alimentação melhor e
praticavam exercícios, e por isso o resultado.
        http://en.wikipedia.org/wiki/Correlation_does_not_imply_causation
Precisamos ser
pragmáticos e analisar
      a situação
    corretamente
Ainda bem que
a medicina não
   faz assim!
O que eu faço
                com isso?
"We identified a number of reported benefits and limitations of
agile development within each of these themes. However, the
strength of evidence is very low, which makes it difficult to offer
specific advice to industry. Consequently, we advise readers from
industry to use this article as a map of findings according to
topic, which they can use to investigate relevant studies further
and compare the settings in the studies to their own situation."

       (Dyba,T., Dingsoyr,T. Empirical studies of agile software
                  development: A systematic review)
Separe fatos
de folclore!
Não posso mais
 blogar então?
Compartilhe
                    experiências e
                      “transfira”
                    conhecimento!

Aniche, Silveira. Increasing Learning in an Agile Environment: Lessons Learned in an Agile Team, 2011.
                              Fernandes.There and Back Again, 2012.
Desirability bias
           41% dos brasileiros já tiveram uma
             interação virtual que pode ser
                  considerada traição.
                             [Fonte: Instituto Qualibest]



Aniche, Ferreira, Gerosa..What Concerns Beginner Test-Driven Development Practitioners:
             A Qualitative Analysis of Opinions in an Agile Conference, 2011.
Como unir o quê a
ciência faz de melhor
com o quê a indústria
   faz de melhor?
Obrigado!
mauricio.aniche@caelum.com.br
       @mauricioaniche

Mais conteúdo relacionado

Semelhante a Métodos Ágeis: O que é folclore e o que é real? (QCON SP 2012)

Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Maurício Aniche
 
Euquipe, evoluindo como dev
Euquipe, evoluindo como devEuquipe, evoluindo como dev
Euquipe, evoluindo como devAlan Zanatta
 
Workshop - Introdução aos métodos ágeis de desenvolvimento de software
Workshop - Introdução aos métodos ágeis de desenvolvimento de softwareWorkshop - Introdução aos métodos ágeis de desenvolvimento de software
Workshop - Introdução aos métodos ágeis de desenvolvimento de softwareJaime Schettini
 
O ciclo da vida
O ciclo da vidaO ciclo da vida
O ciclo da vidaLuiz Borba
 
Startup Engineering - Aspectos sobre o desenvolvimento de software em empresa...
Startup Engineering - Aspectos sobre o desenvolvimento de software em empresa...Startup Engineering - Aspectos sobre o desenvolvimento de software em empresa...
Startup Engineering - Aspectos sobre o desenvolvimento de software em empresa...Marvin Ferreira
 
Uma abordagem às Metodologias Ágeis em Gerência de Projetos
Uma abordagem às Metodologias Ágeis em Gerência de ProjetosUma abordagem às Metodologias Ágeis em Gerência de Projetos
Uma abordagem às Metodologias Ágeis em Gerência de ProjetosGiovani Elísio Silva
 
Projeto reginaldo e cia lb1
 Projeto reginaldo e cia lb1 Projeto reginaldo e cia lb1
Projeto reginaldo e cia lb1Reginaldo Neto
 
The Mythical Man-Month
The Mythical Man-MonthThe Mythical Man-Month
The Mythical Man-Monthpizzol
 
The Mythical Man-Month
The Mythical Man-MonthThe Mythical Man-Month
The Mythical Man-Monthpizzol
 
Fmemoria projetando alem-da-usabilidade-29362
Fmemoria projetando alem-da-usabilidade-29362Fmemoria projetando alem-da-usabilidade-29362
Fmemoria projetando alem-da-usabilidade-29362Bruno Joka
 
Apresentando Extreme Programming
Apresentando Extreme ProgrammingApresentando Extreme Programming
Apresentando Extreme ProgrammingMilfont Consulting
 
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Raphael Paiva
 
Testador Tipo T
Testador Tipo TTestador Tipo T
Testador Tipo TGTS-CE
 

Semelhante a Métodos Ágeis: O que é folclore e o que é real? (QCON SP 2012) (20)

Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?
 
Extreme Programming XP
Extreme Programming XPExtreme Programming XP
Extreme Programming XP
 
Euquipe, evoluindo como dev
Euquipe, evoluindo como devEuquipe, evoluindo como dev
Euquipe, evoluindo como dev
 
Crystal
CrystalCrystal
Crystal
 
Workshop - Introdução aos métodos ágeis de desenvolvimento de software
Workshop - Introdução aos métodos ágeis de desenvolvimento de softwareWorkshop - Introdução aos métodos ágeis de desenvolvimento de software
Workshop - Introdução aos métodos ágeis de desenvolvimento de software
 
Extreme programming explicada
Extreme programming explicadaExtreme programming explicada
Extreme programming explicada
 
Extreme Programming Explicada
Extreme Programming ExplicadaExtreme Programming Explicada
Extreme Programming Explicada
 
O ciclo da vida
O ciclo da vidaO ciclo da vida
O ciclo da vida
 
Como desenvolver-software
Como desenvolver-softwareComo desenvolver-software
Como desenvolver-software
 
Startup Engineering - Aspectos sobre o desenvolvimento de software em empresa...
Startup Engineering - Aspectos sobre o desenvolvimento de software em empresa...Startup Engineering - Aspectos sobre o desenvolvimento de software em empresa...
Startup Engineering - Aspectos sobre o desenvolvimento de software em empresa...
 
Uma abordagem às Metodologias Ágeis em Gerência de Projetos
Uma abordagem às Metodologias Ágeis em Gerência de ProjetosUma abordagem às Metodologias Ágeis em Gerência de Projetos
Uma abordagem às Metodologias Ágeis em Gerência de Projetos
 
Projeto reginaldo e cia lb1
 Projeto reginaldo e cia lb1 Projeto reginaldo e cia lb1
Projeto reginaldo e cia lb1
 
The Mythical Man-Month
The Mythical Man-MonthThe Mythical Man-Month
The Mythical Man-Month
 
The Mythical Man-Month
The Mythical Man-MonthThe Mythical Man-Month
The Mythical Man-Month
 
Tdc2019 teambuilding3tecnicasv03
Tdc2019 teambuilding3tecnicasv03Tdc2019 teambuilding3tecnicasv03
Tdc2019 teambuilding3tecnicasv03
 
Fmemoria projetando alem-da-usabilidade-29362
Fmemoria projetando alem-da-usabilidade-29362Fmemoria projetando alem-da-usabilidade-29362
Fmemoria projetando alem-da-usabilidade-29362
 
Apresentando Extreme Programming
Apresentando Extreme ProgrammingApresentando Extreme Programming
Apresentando Extreme Programming
 
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?
 
Testador Tipo T
Testador Tipo TTestador Tipo T
Testador Tipo T
 
Testador tipo t
Testador tipo tTestador tipo t
Testador tipo t
 

Mais de Maurício Aniche

Can ML help software developers? (TEQnation 2022)
Can ML help software developers? (TEQnation 2022)Can ML help software developers? (TEQnation 2022)
Can ML help software developers? (TEQnation 2022)Maurício Aniche
 
Tracing Back Log Data to its Log Statement: From Research to Practice
Tracing Back Log Data to its Log Statement: From Research to PracticeTracing Back Log Data to its Log Statement: From Research to Practice
Tracing Back Log Data to its Log Statement: From Research to PracticeMaurício Aniche
 
Pragmatic software testing education - SIGCSE 2019
Pragmatic software testing education - SIGCSE 2019Pragmatic software testing education - SIGCSE 2019
Pragmatic software testing education - SIGCSE 2019Maurício Aniche
 
Software Testing with Caipirinhas and Stroopwafels
Software Testing with Caipirinhas and StroopwafelsSoftware Testing with Caipirinhas and Stroopwafels
Software Testing with Caipirinhas and StroopwafelsMaurício Aniche
 
Code smells in MVC applications (Dutch Spring meetup)
Code smells in MVC applications (Dutch Spring meetup)Code smells in MVC applications (Dutch Spring meetup)
Code smells in MVC applications (Dutch Spring meetup)Maurício Aniche
 
A Collaborative Approach to Teach Software Architecture - SIGCSE 2017
A Collaborative Approach to Teach Software Architecture - SIGCSE 2017A Collaborative Approach to Teach Software Architecture - SIGCSE 2017
A Collaborative Approach to Teach Software Architecture - SIGCSE 2017Maurício Aniche
 
Code quality in MVC systems - BENEVOL 2016
Code quality in MVC systems - BENEVOL 2016Code quality in MVC systems - BENEVOL 2016
Code quality in MVC systems - BENEVOL 2016Maurício Aniche
 
A Validated Set of Smells for MVC Architectures - ICSME 2016
A Validated Set of Smells for MVC Architectures - ICSME 2016A Validated Set of Smells for MVC Architectures - ICSME 2016
A Validated Set of Smells for MVC Architectures - ICSME 2016Maurício Aniche
 
SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...
SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...
SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...Maurício Aniche
 
DNAD 2015 - Métricas de código, pra que te quero?
DNAD 2015 - Métricas de código, pra que te quero?DNAD 2015 - Métricas de código, pra que te quero?
DNAD 2015 - Métricas de código, pra que te quero?Maurício Aniche
 
Como eu aprendi que testar software é importante?
Como eu aprendi que testar software é importante?Como eu aprendi que testar software é importante?
Como eu aprendi que testar software é importante?Maurício Aniche
 
Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web
Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações WebProposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web
Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações WebMaurício Aniche
 
Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...
Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...
Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...Maurício Aniche
 
O que estamos temos feito com mineração de repositório de código no IME?
O que estamos temos feito com mineração de repositório de código no IME?O que estamos temos feito com mineração de repositório de código no IME?
O que estamos temos feito com mineração de repositório de código no IME?Maurício Aniche
 
MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013
MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013
MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013Maurício Aniche
 
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...Maurício Aniche
 
Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011Maurício Aniche
 
MTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary Study
MTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary StudyMTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary Study
MTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary StudyMaurício Aniche
 
[TDC 2014] Métricas de código, pra que te quero?
[TDC 2014] Métricas de código, pra que te quero?[TDC 2014] Métricas de código, pra que te quero?
[TDC 2014] Métricas de código, pra que te quero?Maurício Aniche
 

Mais de Maurício Aniche (20)

Can ML help software developers? (TEQnation 2022)
Can ML help software developers? (TEQnation 2022)Can ML help software developers? (TEQnation 2022)
Can ML help software developers? (TEQnation 2022)
 
Tracing Back Log Data to its Log Statement: From Research to Practice
Tracing Back Log Data to its Log Statement: From Research to PracticeTracing Back Log Data to its Log Statement: From Research to Practice
Tracing Back Log Data to its Log Statement: From Research to Practice
 
Pragmatic software testing education - SIGCSE 2019
Pragmatic software testing education - SIGCSE 2019Pragmatic software testing education - SIGCSE 2019
Pragmatic software testing education - SIGCSE 2019
 
Test Automation Day 2018
Test Automation Day 2018Test Automation Day 2018
Test Automation Day 2018
 
Software Testing with Caipirinhas and Stroopwafels
Software Testing with Caipirinhas and StroopwafelsSoftware Testing with Caipirinhas and Stroopwafels
Software Testing with Caipirinhas and Stroopwafels
 
Code smells in MVC applications (Dutch Spring meetup)
Code smells in MVC applications (Dutch Spring meetup)Code smells in MVC applications (Dutch Spring meetup)
Code smells in MVC applications (Dutch Spring meetup)
 
A Collaborative Approach to Teach Software Architecture - SIGCSE 2017
A Collaborative Approach to Teach Software Architecture - SIGCSE 2017A Collaborative Approach to Teach Software Architecture - SIGCSE 2017
A Collaborative Approach to Teach Software Architecture - SIGCSE 2017
 
Code quality in MVC systems - BENEVOL 2016
Code quality in MVC systems - BENEVOL 2016Code quality in MVC systems - BENEVOL 2016
Code quality in MVC systems - BENEVOL 2016
 
A Validated Set of Smells for MVC Architectures - ICSME 2016
A Validated Set of Smells for MVC Architectures - ICSME 2016A Validated Set of Smells for MVC Architectures - ICSME 2016
A Validated Set of Smells for MVC Architectures - ICSME 2016
 
SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...
SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...
SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...
 
DNAD 2015 - Métricas de código, pra que te quero?
DNAD 2015 - Métricas de código, pra que te quero?DNAD 2015 - Métricas de código, pra que te quero?
DNAD 2015 - Métricas de código, pra que te quero?
 
Como eu aprendi que testar software é importante?
Como eu aprendi que testar software é importante?Como eu aprendi que testar software é importante?
Como eu aprendi que testar software é importante?
 
Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web
Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações WebProposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web
Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web
 
Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...
Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...
Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...
 
O que estamos temos feito com mineração de repositório de código no IME?
O que estamos temos feito com mineração de repositório de código no IME?O que estamos temos feito com mineração de repositório de código no IME?
O que estamos temos feito com mineração de repositório de código no IME?
 
MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013
MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013
MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013
 
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...
 
Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011
 
MTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary Study
MTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary StudyMTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary Study
MTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary Study
 
[TDC 2014] Métricas de código, pra que te quero?
[TDC 2014] Métricas de código, pra que te quero?[TDC 2014] Métricas de código, pra que te quero?
[TDC 2014] Métricas de código, pra que te quero?
 

Métodos Ágeis: O que é folclore e o que é real? (QCON SP 2012)

  • 1. Métodos Ágeis: O que é folclore e o que é real? Mauricio Aniche mauricio.aniche@caelum.com.br @mauricioaniche
  • 2.
  • 5. Mas tudo faz sentido... Será que vale a pena estudar melhor?
  • 6. Homens de nível educacional mais alto apresentaram maior quantidade de sintomas pseudoneuróticos do que aqueles que haviam recebido menos instrução; Homens do meio rural mantiveram-se mais bem- humorados durante a guerra do que os soldados recrutados nas cidades; A capacidade dos homens do Sul (dos EUA) para suportar o calor era maior do que as dos soldados do Norte. Lazarsfeld, P. "The American Soldier - An Expository Review", 1949.
  • 8. Mas nós conhecemos bem de software, não tem como errarmos!
  • 10. • Sackman, Erikson, Grant (1968): experimento controlado com programadores depurando; • Curtis (1981) também depurando; • Mills (1983) apenas um relato de opiniões; Só um relacionado: • Valett (1989) achou razões de 1 pra 8 em projetos pequenos e 1 pra 20 em projetos grandes (mas mediu em produtividade com número de linhas escritas) Bossavit.The Leprechauns of Software Engineering, 2011.
  • 11. Pode ser verdade, mas a ciência não mostrou!
  • 12. Mas tem um monte de trabalhos sobre métodos ágeis! Diversos questionários da VersionOne, Scott Ambler, e outras evidências anedotais!
  • 13. De 1996 trabalhos, só 36 possuem rigor científico (Dyba,T., Dingsoyr,T. Empirical studies of agile software development: A systematic review)
  • 14. • Grande parte dos estudos feitos com XP (76%); • Single-Case (39%) e Multiple-Case (33%) • 73% dos estudos com iniciantes em agile; só 12% com times maduros; • 73% dos estudos com profissionais; (Dyba,T., Dingsoyr,T. Empirical studies of agile software development: A systematic review)
  • 15. Vocês sabem, aliás, como nasceu a XP? “The best software development team on the face of the earth”. “As of the first of February, 2000, the C3 project has been terminated without a successful launch of the next phase”. Stephens, Roseberg. Extremme Programming Refactored: A Case Against XP, 2003.
  • 16. Vamos analisar alguns desses mitos...
  • 17. Sem TDD, meu código não terá qualidade!
  • 18. Por quê? • TDD faz o programador criar melhores projetos de classes.
  • 19.
  • 20. A maioria dos estudos foram feitos com estudantes!
  • 21. Efeitos no projeto de classes? - Pouco conclusivos - Projetos mal escolhidos - Focados em métricas de código
  • 22. Outras pessoas já perceberam que os efeitos de TDD não são tão naturais assim! M. Siniaalto and P. Abrahamsson, “Does test-driven development improve the program code? Alarming results from a comparative case study,” Balancing Agility and Formalism in Software Engineering, vol. 5082, pp. 143–156, 2008. [Online]. Available: http://dx.doi.org/10. 1007/978- 3- 540- 85279- 7_12
  • 23. A pergunta é: usar ou não usar TDD?
  • 24. a prática de TDD não guia o desenvolvedor para um bom projeto de classes de forma automática! Aniche, Gerosa. Como a Prática de TDD Influencia o Projeto de Classes em Sistemas Orientados a Objetos: Padrões de Feedback para o Desenvolvedor. 2012
  • 25. TDD dá retorno constante sobre os possíveis problemas existentes no atual projeto de classes. É tarefa do desenvolvedor perceber esses problemas e melhorar o projeto de acordo. Aniche, Gerosa. Como a Prática de TDD Influencia o Projeto de Classes em Sistemas Orientados a Objetos: Padrões de Feedback para o Desenvolvedor. 2012
  • 26. Eu uso TDD quando... • Não sei bem como projetar minhas classes; • Sei bem o quê quero fazer, mas não sei bem como fazer.
  • 27. Eu não uso TDD quando... • Já tenho bem claro o projeto da classe que estou trabalhando; • É código que lida com infraestrutura.
  • 28. Mas testo o tempo todo! • Mesmo quando não faço TDD, escrevo testes frequentemente.
  • 29. Testes automatizados é um dos grandes trunfos dos métodos ágeis
  • 30. MITO!
  • 31. Programação pareada é obrigatório!
  • 32. Por quê? • Código de maior qualidade • Maior produtividade • Distribuição de conhecimento
  • 33. Veio antes da XP... • “Fellow graduate student Bill Wright and I first tried pair programming when I was a grad student (1953-1956).We produced 1500 lines of defect-free code; it ran correctly first try” Fred Brooks
  • 34. Talvez uma das áreas com a maior quantidade de estudos feitos [Begel and Nagappan 2008], [Dyba et al. 2007], [Jensen 2003], [Luck 2004], [Vanhanen and Korpi 2007], ...
  • 35. Programação pareada 100% do tempo?
  • 36. Quando usar PP? • Quando a tarefa é complexa; • Quando há conhecimento para ser compartilhado. Aniche, Silveira. Increasing Learning in an Agile Environment: Lessons Learned in an Agile Team, 2011.
  • 37. Quando não usar PP? • Quando a tarefa é simples e não há conhecimento a ser compartilhado; • Tarefas de estudo. Aniche, Silveira. Increasing Learning in an Agile Environment: Lessons Learned in an Agile Team, 2011.
  • 38. Desafios da PP • Não é fácil parear • Luta contra o hábito • Ponto de vista financeiro • “If I have a choice, I can employ one star programmer instead of two programmers who need to code in a pair” [Begel and Nagappan, 2008] • Coordenação e times distribuídos Laurie Williams em “Making Software:What Really Works, and Why We Believe it” -- Oram,Wilson
  • 39. MITO!
  • 41. Por quê? • Documentações raramente representam a realidade.
  • 42. Na ciência... • Corrigir um problema durante o levantamento de requisitos custa 100x menos do que corrigir o mesmo problema quando o software já está em produção. • Em projetos pequenos, a escala é de 5:1 Barry Boehm em “Making Software:What Really Works, and Why We Believe it” -- Oram,Wilson
  • 43. Mas sabemos que é impossível levantar todos os requisitos antes!
  • 44. “XPers are not afraid of oral documentation” Uncle Bob
  • 45. Podemos então usar única e exclusivamente documentação oral? “Do as much or as little requirements documentation as you feel is necessary, but personally we do as little as we can”
  • 46. Como documentar? • Levante requisitos e os valide constantemente • Maximize comunicação: papel, bate-papo, feedback constante.
  • 47. MITO!
  • 48. Big Design Up Front? Seu cascateiro!
  • 49. Por quê? • Complexidade desnecessária • Desperdício de tempo, pois na prática, sabemos que as coisas mudam
  • 50. UML é um veneno! Será mesmo? 2007, Mario Cherubini, Gina Venolia, Rob DeLine and Andrew Ko
  • 51. Pense em arquitetura sim! • O problema é “TENTAR PENSAR EM TODOS OS DETALHES DE PRIMEIRA”, e não “TENTAR PENSAR” Veja os dados encontrados por Barry Boehm em “Making Software:What Really Works, and Why We Believe it” -- Oram,Wilson
  • 52. MITO!
  • 54. Meu irmão passou em todas universidades!
  • 56. Muitos estudos diziam que mulheres que faziam terapia de substituição de hormônios tinham menos chance de ter uma doença do coração; Mas alguns estudos controlados mostraram que a terapia AUMENTAVA a chance; A re-análise dos primeiros estudos mostrou que as mulheres que passavam pelo tratamento pertenciam a classes mais altas, que tinham uma alimentação melhor e praticavam exercícios, e por isso o resultado. http://en.wikipedia.org/wiki/Correlation_does_not_imply_causation
  • 57. Precisamos ser pragmáticos e analisar a situação corretamente
  • 58. Ainda bem que a medicina não faz assim!
  • 59. O que eu faço com isso? "We identified a number of reported benefits and limitations of agile development within each of these themes. However, the strength of evidence is very low, which makes it difficult to offer specific advice to industry. Consequently, we advise readers from industry to use this article as a map of findings according to topic, which they can use to investigate relevant studies further and compare the settings in the studies to their own situation." (Dyba,T., Dingsoyr,T. Empirical studies of agile software development: A systematic review)
  • 61. Não posso mais blogar então?
  • 62. Compartilhe experiências e “transfira” conhecimento! Aniche, Silveira. Increasing Learning in an Agile Environment: Lessons Learned in an Agile Team, 2011. Fernandes.There and Back Again, 2012.
  • 63. Desirability bias 41% dos brasileiros já tiveram uma interação virtual que pode ser considerada traição. [Fonte: Instituto Qualibest] Aniche, Ferreira, Gerosa..What Concerns Beginner Test-Driven Development Practitioners: A Qualitative Analysis of Opinions in an Agile Conference, 2011.
  • 64. Como unir o quê a ciência faz de melhor com o quê a indústria faz de melhor?

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n