Scrum is not enough:
    being an Agile engineer


Anton Keks
anton@codeborne.com

                      Agile Days Moscow, 4.03.2011
Anton Keks
     Co-founder of
Lecturer at Tallinn Technical University
  Member of the board of Agile Estonia
                                      ●




            Author of Angry IP Scanner

                      Strong believer in
                Agile and Open-source


                                          2
Iterative &
Incremental
NOT Big-Bang
Adaptable
 NOT Predictable
Teamwork
NOT Lone Ranger
Testing
NOT Praying
Simplicity
Maximizing the amount of work not done
Scrum
●   Nowadays, Agile is more popular than
    Waterfall
●   84% of Agile organizations are doing
    Scrum
●
    Only 50% of them are doing iterations
●   Even fewer use developers' practices
●   “Flaccid Scrum”
?
The good stuff




!
                 Co-location
      Verbal communication
    Continuous improvement
    Working increment of the
                   software
But can code cowboys
  actually do this?
Or even worse,
bureaucrats?
Top-Down Adoption
Ken Schwaber left Scrum Alliance
              to work on the
  Professional Scrum Developer program
Thinking


             Coding

Guessing




                      Patching


       WTF
in e
        pr
           a   ct




                            ipl
                  ic




                           is c
                    es
                =




                         =d
Developers need tools to perform in
       an agile environment
Mejores prácticas
●   Simplicidad (No se va a necesitar)
●   Programación en pareja
●   Propiedad del código compartida
●
    Pruebas unitarias
●
    Desarrollo basado en pruebas
●
    Pruebas de aceptación automáticas
●
    Construyes y lanzamientos repetibles
●
    Integración continua
Mejores prácticas
               Best practices
●   Simplicidad (No se va a necesitar)
    Simplicity (YAGNI)
●   Pair programming
    Programación en pareja
●   Collective code ownership
    Propiedad del código compartida
●
    Unit tests
    Pruebas unitarias
●
    Test-driven development (TDD)
    Desarrollo basado en pruebas
●
    Automated acceptance tests
    Pruebas de aceptación automáticas
●
    Repeatable builds & releases
    Construyes y lanzamientos repetibles
●
    Continuous continua
    Integración integration
Swedbank

●   The major bank in Baltics and Scandinavia
●   Agile since 2005
●   Started with XP (bottom-up)
●
    Voted the best Internet Bank in Europe
Productivity
●   Decent version control
●   Master your IDE
●   One-click builds
●
    DRY – Don't repeat yourself
●
    Script any repetitive tasks
Avoid hopeless meetings
Unit tests
●
    Standardize!
●
    Continuous integration
●
    Keep them “unit”
●   Keep track of coverage %
    ●
        Never let it fall!
Measuring




   You get what you measure
Vertical development
●
    Every user story must be vertical
     = independently add value
     = potentially shippable
●
    Strictly story-based development
     Never add a button to the UI that
     does nothing yet!
The Truck Factor

    ● Avoid overspecialization
  ●
    Collective code ownership
             ●
               Coding standards
                ● TEX* meetings



                  * TEX = Technology EXchange
Pair programming




TDD - Ping pong – Concentration - Quality
Software Design vs
            Architecture
●
    Software design is the structure of code
    and relations between its elements
●   Software architecture is the same as
    software design, but used when people
    want to make it look important
    (after Martin Fowler)
    – Architecture is the part of design that is
      difficult to change
    – Therefore it is undesired :-)                27
Design vs Construction
●   In civil and mechanical engineering
      – Cost distribution ~ 10% / 90%
      – Design: intelligently skilled, creative
        people
      – Construction: manually skilled

●   In software       ~ 100% / 0% distribution!
      – Code is the design, not UML, etc
      – Construction: compilation, builds, etc –
        almost free                                28
Sustainable pace
Software
Craftsmanship
http://manifesto.softwarecraftsmanship.org
...the Codeborne way




Software
Craftsmanship...
O N AL
          ESSI
      ROF
UN   P
Heavyweight


Lightweight
Complex


Simple
The order of adoption
●
    Coding standard
●
    Unit tests
●   Continuous integration (+ bells and whistles)
●   Collective code ownership
●   Pair programming
●   TDD
●
    Automated acceptance tests
And don't forget paying the
           Technical debt
The “easy” way


Hire the right people!

  “hire for attitude, train for skills”




  Anton Keks, anton@codeborne.com

Scrum is not enough - being a successful agile engineer

  • 1.
    Scrum is notenough: being an Agile engineer Anton Keks anton@codeborne.com Agile Days Moscow, 4.03.2011
  • 2.
    Anton Keks Co-founder of Lecturer at Tallinn Technical University Member of the board of Agile Estonia ● Author of Angry IP Scanner Strong believer in Agile and Open-source 2
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
    Scrum ● Nowadays, Agile is more popular than Waterfall ● 84% of Agile organizations are doing Scrum ● Only 50% of them are doing iterations ● Even fewer use developers' practices ● “Flaccid Scrum”
  • 9.
  • 10.
    The good stuff ! Co-location Verbal communication Continuous improvement Working increment of the software
  • 11.
    But can codecowboys actually do this?
  • 12.
  • 13.
  • 14.
    Ken Schwaber leftScrum Alliance to work on the Professional Scrum Developer program
  • 15.
    Thinking Coding Guessing Patching WTF
  • 16.
    in e pr a ct ipl ic is c es = =d Developers need tools to perform in an agile environment
  • 17.
    Mejores prácticas ● Simplicidad (No se va a necesitar) ● Programación en pareja ● Propiedad del código compartida ● Pruebas unitarias ● Desarrollo basado en pruebas ● Pruebas de aceptación automáticas ● Construyes y lanzamientos repetibles ● Integración continua
  • 18.
    Mejores prácticas Best practices ● Simplicidad (No se va a necesitar) Simplicity (YAGNI) ● Pair programming Programación en pareja ● Collective code ownership Propiedad del código compartida ● Unit tests Pruebas unitarias ● Test-driven development (TDD) Desarrollo basado en pruebas ● Automated acceptance tests Pruebas de aceptación automáticas ● Repeatable builds & releases Construyes y lanzamientos repetibles ● Continuous continua Integración integration
  • 19.
    Swedbank ● The major bank in Baltics and Scandinavia ● Agile since 2005 ● Started with XP (bottom-up) ● Voted the best Internet Bank in Europe
  • 20.
    Productivity ● Decent version control ● Master your IDE ● One-click builds ● DRY – Don't repeat yourself ● Script any repetitive tasks
  • 21.
  • 22.
    Unit tests ● Standardize! ● Continuous integration ● Keep them “unit” ● Keep track of coverage % ● Never let it fall!
  • 23.
    Measuring You get what you measure
  • 24.
    Vertical development ● Every user story must be vertical = independently add value = potentially shippable ● Strictly story-based development Never add a button to the UI that does nothing yet!
  • 25.
    The Truck Factor ● Avoid overspecialization ● Collective code ownership ● Coding standards ● TEX* meetings * TEX = Technology EXchange
  • 26.
    Pair programming TDD -Ping pong – Concentration - Quality
  • 27.
    Software Design vs Architecture ● Software design is the structure of code and relations between its elements ● Software architecture is the same as software design, but used when people want to make it look important (after Martin Fowler) – Architecture is the part of design that is difficult to change – Therefore it is undesired :-) 27
  • 28.
    Design vs Construction ● In civil and mechanical engineering – Cost distribution ~ 10% / 90% – Design: intelligently skilled, creative people – Construction: manually skilled ● In software ~ 100% / 0% distribution! – Code is the design, not UML, etc – Construction: compilation, builds, etc – almost free 28
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
    O N AL ESSI ROF UN P
  • 34.
  • 35.
  • 36.
    The order ofadoption ● Coding standard ● Unit tests ● Continuous integration (+ bells and whistles) ● Collective code ownership ● Pair programming ● TDD ● Automated acceptance tests
  • 37.
    And don't forgetpaying the Technical debt
  • 38.
    The “easy” way Hirethe right people! “hire for attitude, train for skills” Anton Keks, anton@codeborne.com