SlideShare uma empresa Scribd logo
1 de 92
Baixar para ler offline
The curse of the
Agile Software Factory
        Phillip Calçado
        ThoughtWorks
           http://fragmental.tw
       http://blog.fragmental.com.br
       http://www.thoughtworks.com
Who?


Phillip Calçado
Who?

    Consultant



Phillip Calçado
Who?

Coach   Consultant



Phillip Calçado
Who?

Coach   Consultant



Phillip Calçado
           Blogger
Who?

Coach   Consultant   ~8 Years in this Industry

Phillip Calçado
           Blogger
Who?

Coach   Consultant   ~8 Years in this Industry

Phillip Calçado



                                    5 Agile years
           Blogger
Who?

               Coach                ~8 Years in this Industry
ThoughtWorks
                       Consultant



               Phillip Calçado



                                                   5 Agile years
                          Blogger
Who?

               Coach                    ~8 Years in this Industry
ThoughtWorks
                           Consultant



               Phillip Calçado



                                                       5 Agile years
               Australia      Blogger
Who?

               Coach                    ~8 Years in this Industry
ThoughtWorks
                           Consultant



               Phillip Calçado



                                                       5 Agile years
                           Developer
               Australia      Blogger
A CONSULTANT’S LIFE
Project #1
•“Traditional” Company
•High skilled developers
•Adopting agile saved the
project years ago
TO DO          Doing   Done
como usuario
 eu quero fa


como usuario
 eu quero fa


como usuario
 eu quero fa
TO DO          Doing   Done
como usuario
 eu quero fa


como usuario
 eu quero fa


como usuario
 eu quero fa
TO DO          Doing   Done
como usuario
 eu quero fa


como usuario
 eu quero fa
TO DO          Doing           Done
                como usuario
                 eu quero fa


como usuario
 eu quero fa


como usuario
 eu quero fa
TO DO          Doing           Done
                como usuario
                 eu quero fa


como usuario
 eu quero fa


como usuario
 eu quero fa
TO DO          Doing           Done
                como usuario
                 eu quero fa


como usuario
 eu quero fa


como usuario
 eu quero fa
TO DO          Doing   Done
                        como usuario
                         eu quero fa


como usuario
 eu quero fa


como usuario
 eu quero fa
TO DO          Doing   Done
como usuario
 eu quero fa


como usuario
 eu quero fa


como usuario
 eu quero fa
TO DO          Doing   Done
como usuario
 eu quero fa


como usuario
 eu quero fa


como usuario
 eu quero fa
0 1 2 3 4 5 6 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9 10 11
Project #2
•Not-that-good team
•Strict deadline
•2 Architects
•“A little bit” of up-front design to
“reduce refactoring needs”
TO DO          Doing   Done
como usuario
 eu quero fa


como usuario
 eu quero fa


como usuario
 eu quero fa
TO DO          Doing   Done
como usuario
 eu quero fa


como usuario
 eu quero fa
TO DO          Doing   Done
como usuario
 eu quero fa


como usuario
 eu quero fa
TO DO          Doing           Done
                como usuario
                 eu quero fa


como usuario
 eu quero fa


como usuario
 eu quero fa
TO DO          Doing           Done
                como usuario
                 eu quero fa


como usuario
 eu quero fa


como usuario
 eu quero fa
TO DO          Doing           Done
                como usuario
                 eu quero fa


como usuario
 eu quero fa


como usuario
 eu quero fa
TO DO          Doing           Done
                como usuario
                 eu quero fa


como usuario
 eu quero fa


como usuario
 eu quero fa
0 1 2 3 4 5 6 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9 10 11
Version 1.0
•All scope delivered
•Ahead of schedule
Version 1.0
•All scope delivered
•Ahead of schedule


Version new thingies
•Couple of
           1.1
•After two iterations the team gives
up: code is unreadable. Big rewrite
coming next.
Causa Mortis?
Broken Cycles




        como usuario
         eu quero fa
Broken Cycle #1
Broken Cycle #1
Broken Cycle #1

      =1 X/day
Broken Cycle #1

      =1 X/day
Broken Cycle #1

      =1 X/day


          heaps of
      =    X/day
Quebra de Ciclo #1
  Constant
Communication
       +
     Tests
       +
Expressive Code
Quebra de Ciclo #1
  Constant
Communication
       +
     Tests
       +
Expressive Code
Quebra de Ciclo #1
  Constant
Communication
       +                   Shared Vision
     Tests
       +
Expressive Code
Quebra de Ciclo #1
  Constant
Communication
       +                   Shared Vision
     Tests
       +
Expressive Code
Quebra de Ciclo #1
  Constant
Communication
       +                   Shared Vision
     Tests
       +
Expressive Code


                             Minimal
                          Documentation
Quebra de Ciclo #1
  Constant
Communication
       +                   Shared Vision
     Tests
       +
Expressive Code


       Waste Avoided         Minimal
                          Documentation
Quebra de Ciclo #1
  Constant
Communication
       +                   Shared Vision
     Tests
       +
Expressive Code


                             Minimal
                          Documentation
Quebra de Ciclo #1
  Constant
Communication
       +                   Shared Vision
     Tests
       +
Expressive Code


                             Minimal
                          Documentation
Quebra de Ciclo #1
  Constant
Communication
       +                   Shared Vision
     Tests
       +
Expressive Code


                             Minimal
                          Documentation
Quebra de Ciclo #1
  Constant
Communication
       +                   Shared Vision
     Tests
       +
Expressive Code
Broken Cycle #2
Broken Cycle #2
= $100
= $1
Broken Cycle #2
= $100
= $1
Broken Cycle #2
= $100
                   =   No Way!
= $1
Broken Cycle #2
= $100
                   =   No Way!
= $1
Broken Cycle #2
= $100
                   =   No Way!
= $1
Broken Cycle #2

Refactoring
     +
   Tests
Broken Cycle #2

Refactoring
     +
   Tests
Broken Cycle #2

Refactoring
     +              Code Quality
   Tests
Broken Cycle #2

Refactoring
     +              Code Quality
   Tests
Broken Cycle #2

Refactoring
     +              Code Quality
   Tests




                       No need
                      for BDUF
Broken Cycle #2

Refactoring
     +               Code Quality
   Tests




   Waste Avoided        No need
                       for BDUF
Broken Cycle #2

Refactoring
     +              Code Quality
   Tests




                       No need
                      for BDUF
Broken Cycle #2

Refactoring
     +              Code Quality
   Tests




                       No need
                      for BDUF
Broken Cycle #2

Refactoring
     +              Code Quality
   Tests




                       No need
                      for BDUF
Broken Cycle #2

Refactoring
     +              Code Quality
   Tests
So... should we
go Agile or not?
Yep, but you better
 pay attention to
what you are doing.
...pay attention.

  Experience is
  the best guide
  you can get.
...pay attention.


  Learn the
  concepts.
...pay attention.


   No pain no
   gain.
...pay attention.

  Remeber:
  this is about
  software.
...pay attention.

   Try before
   removing
   practices.
...pay attention.

   Understand
   before
   removing
   practices.
...pay attention.

  Except if you
  are doing
  baby steps.
...pay attention.

  Be careful
  with agile
  consultants.
...pay attention.

  Only
  Continuous
  Improvement
  will save you.
?
Obrigado!

http://blog.fragmental.com.br
    http://fragmental.tw
http://www.thoughtworks.com

Mais conteúdo relacionado

Mais de Phil Calçado

don't try this at home: self-improvement as a senior leader
don't try this at home: self-improvement as a senior leaderdon't try this at home: self-improvement as a senior leader
don't try this at home: self-improvement as a senior leaderPhil Calçado
 
The Economics of Microservices (redux)
The Economics of Microservices (redux)The Economics of Microservices (redux)
The Economics of Microservices (redux)Phil Calçado
 
From microservices to serverless - Chicago CTO Summit 2019
From microservices to serverless - Chicago CTO Summit 2019From microservices to serverless - Chicago CTO Summit 2019
From microservices to serverless - Chicago CTO Summit 2019Phil Calçado
 
The Not-So-Straightforward Road From Microservices to Serverless
The Not-So-Straightforward Road From Microservices to ServerlessThe Not-So-Straightforward Road From Microservices to Serverless
The Not-So-Straightforward Road From Microservices to ServerlessPhil Calçado
 
Ten Years of Failing Microservices
Ten Years of Failing MicroservicesTen Years of Failing Microservices
Ten Years of Failing MicroservicesPhil Calçado
 
The Next Generation of Microservices
The Next Generation of MicroservicesThe Next Generation of Microservices
The Next Generation of MicroservicesPhil Calçado
 
The Next Generation of Microservices — YOW 2017 Brisbane
The Next Generation of Microservices — YOW 2017 BrisbaneThe Next Generation of Microservices — YOW 2017 Brisbane
The Next Generation of Microservices — YOW 2017 BrisbanePhil Calçado
 
The Economics of Microservices (2017 CraftConf)
The Economics of Microservices  (2017 CraftConf)The Economics of Microservices  (2017 CraftConf)
The Economics of Microservices (2017 CraftConf)Phil Calçado
 
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...Phil Calçado
 
Finagle @ SoundCloud
Finagle @ SoundCloudFinagle @ SoundCloud
Finagle @ SoundCloudPhil Calçado
 
A Brief Talk On High-Performing Organisations
A Brief Talk On High-Performing OrganisationsA Brief Talk On High-Performing Organisations
A Brief Talk On High-Performing OrganisationsPhil Calçado
 
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015Phil Calçado
 
Rhein-Main Scala Enthusiasts — Your microservice as a Function
Rhein-Main Scala Enthusiasts — Your microservice as a FunctionRhein-Main Scala Enthusiasts — Your microservice as a Function
Rhein-Main Scala Enthusiasts — Your microservice as a FunctionPhil Calçado
 
ScalaItaly 2015 - Your Microservice as a Function
ScalaItaly 2015 - Your Microservice as a FunctionScalaItaly 2015 - Your Microservice as a Function
ScalaItaly 2015 - Your Microservice as a FunctionPhil Calçado
 
Finagle-Based Microservices at SoundCloud
Finagle-Based Microservices at SoundCloudFinagle-Based Microservices at SoundCloud
Finagle-Based Microservices at SoundCloudPhil Calçado
 
An example of Future composition in a real app
An example of Future composition in a real appAn example of Future composition in a real app
An example of Future composition in a real appPhil Calçado
 
APIs: The Problems with Eating your Own Dog Food
APIs: The Problems with Eating your Own Dog FoodAPIs: The Problems with Eating your Own Dog Food
APIs: The Problems with Eating your Own Dog FoodPhil Calçado
 
Evolutionary Architecture at Work
Evolutionary  Architecture at WorkEvolutionary  Architecture at Work
Evolutionary Architecture at WorkPhil Calçado
 
Structuring apps in Scala
Structuring apps in ScalaStructuring apps in Scala
Structuring apps in ScalaPhil Calçado
 
From a monolithic Ruby on Rails app to the JVM
From a monolithic  Ruby on Rails app  to the JVMFrom a monolithic  Ruby on Rails app  to the JVM
From a monolithic Ruby on Rails app to the JVMPhil Calçado
 

Mais de Phil Calçado (20)

don't try this at home: self-improvement as a senior leader
don't try this at home: self-improvement as a senior leaderdon't try this at home: self-improvement as a senior leader
don't try this at home: self-improvement as a senior leader
 
The Economics of Microservices (redux)
The Economics of Microservices (redux)The Economics of Microservices (redux)
The Economics of Microservices (redux)
 
From microservices to serverless - Chicago CTO Summit 2019
From microservices to serverless - Chicago CTO Summit 2019From microservices to serverless - Chicago CTO Summit 2019
From microservices to serverless - Chicago CTO Summit 2019
 
The Not-So-Straightforward Road From Microservices to Serverless
The Not-So-Straightforward Road From Microservices to ServerlessThe Not-So-Straightforward Road From Microservices to Serverless
The Not-So-Straightforward Road From Microservices to Serverless
 
Ten Years of Failing Microservices
Ten Years of Failing MicroservicesTen Years of Failing Microservices
Ten Years of Failing Microservices
 
The Next Generation of Microservices
The Next Generation of MicroservicesThe Next Generation of Microservices
The Next Generation of Microservices
 
The Next Generation of Microservices — YOW 2017 Brisbane
The Next Generation of Microservices — YOW 2017 BrisbaneThe Next Generation of Microservices — YOW 2017 Brisbane
The Next Generation of Microservices — YOW 2017 Brisbane
 
The Economics of Microservices (2017 CraftConf)
The Economics of Microservices  (2017 CraftConf)The Economics of Microservices  (2017 CraftConf)
The Economics of Microservices (2017 CraftConf)
 
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
 
Finagle @ SoundCloud
Finagle @ SoundCloudFinagle @ SoundCloud
Finagle @ SoundCloud
 
A Brief Talk On High-Performing Organisations
A Brief Talk On High-Performing OrganisationsA Brief Talk On High-Performing Organisations
A Brief Talk On High-Performing Organisations
 
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
 
Rhein-Main Scala Enthusiasts — Your microservice as a Function
Rhein-Main Scala Enthusiasts — Your microservice as a FunctionRhein-Main Scala Enthusiasts — Your microservice as a Function
Rhein-Main Scala Enthusiasts — Your microservice as a Function
 
ScalaItaly 2015 - Your Microservice as a Function
ScalaItaly 2015 - Your Microservice as a FunctionScalaItaly 2015 - Your Microservice as a Function
ScalaItaly 2015 - Your Microservice as a Function
 
Finagle-Based Microservices at SoundCloud
Finagle-Based Microservices at SoundCloudFinagle-Based Microservices at SoundCloud
Finagle-Based Microservices at SoundCloud
 
An example of Future composition in a real app
An example of Future composition in a real appAn example of Future composition in a real app
An example of Future composition in a real app
 
APIs: The Problems with Eating your Own Dog Food
APIs: The Problems with Eating your Own Dog FoodAPIs: The Problems with Eating your Own Dog Food
APIs: The Problems with Eating your Own Dog Food
 
Evolutionary Architecture at Work
Evolutionary  Architecture at WorkEvolutionary  Architecture at Work
Evolutionary Architecture at Work
 
Structuring apps in Scala
Structuring apps in ScalaStructuring apps in Scala
Structuring apps in Scala
 
From a monolithic Ruby on Rails app to the JVM
From a monolithic  Ruby on Rails app  to the JVMFrom a monolithic  Ruby on Rails app  to the JVM
From a monolithic Ruby on Rails app to the JVM
 

The Curse of The Agile Software Factory