scrum is not enough - being a successful agile engineer

38
Anton Keks [email protected] Scrum is not enough: being an Agile engineer Agile Days Moscow, 4.03.2011

Upload: anton-keks

Post on 22-Apr-2015

1.634 views

Category:

Technology


0 download

DESCRIPTION

The recipe for developers to perform in agile software development environment is to use technical practices, many of which are coming from XP.

TRANSCRIPT

Page 1: Scrum is not enough - being a successful agile engineer

Anton [email protected]

Scrum is not enough:being an Agile engineer

Agile Days Moscow, 4.03.2011

Page 2: Scrum is not enough - being a successful agile engineer

2

Anton KeksAnton KeksCo-founder of Co-founder of

Lecturer at Lecturer at Tallinn Technical UniversityTallinn Technical University

Member of the board of Member of the board of Agile EstoniaAgile Estonia●

Author of Author of Angry IP ScannerAngry IP Scanner

Strong believer inStrong believer inAgileAgile and and Open-sourceOpen-source

Page 3: Scrum is not enough - being a successful agile engineer

Iterative &Iterative &IncrementalIncrementalNOT Big-BangNOT Big-Bang

Page 4: Scrum is not enough - being a successful agile engineer

AdaptableAdaptableNOT PredictableNOT Predictable

Page 5: Scrum is not enough - being a successful agile engineer

TeamworkTeamworkNOT Lone RangerNOT Lone Ranger

Page 6: Scrum is not enough - being a successful agile engineer

TestingTestingNOT PrayingNOT Praying

Page 7: Scrum is not enough - being a successful agile engineer

SimplicitySimplicityMaximizing the amount of work not doneMaximizing the amount of work not done

Page 8: Scrum is not enough - being a successful agile engineer

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”

Page 9: Scrum is not enough - being a successful agile engineer

?

Page 10: Scrum is not enough - being a successful agile engineer

The good stuff

Co-locationVerbal communication

Continuous improvementWorking increment of the

software!

Page 11: Scrum is not enough - being a successful agile engineer

But can But can code cowboyscode cowboysactually do this?actually do this?

Page 12: Scrum is not enough - being a successful agile engineer

Or even worse, Or even worse, bureaucratsbureaucrats??

Page 13: Scrum is not enough - being a successful agile engineer

Top-Down Adoption

Page 14: Scrum is not enough - being a successful agile engineer

Ken Schwaber left Scrum Allianceto work on the

Professional Scrum Developer program

Page 15: Scrum is not enough - being a successful agile engineer

Thinking

Guessing

Patching

Coding

WTF

Page 16: Scrum is not enough - being a successful agile engineer

Developers need tools to perform in an agile environment

practices = = di

scip

line

Page 17: Scrum is not enough - being a successful agile engineer

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

Page 18: Scrum is not enough - being a successful agile engineer

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

● Simplicity (YAGNI)● Pair programming● Collective code ownership● Unit tests● Test-driven development (TDD)● Automated acceptance tests● Repeatable builds & releases● Continuous integration

Best practices

Page 19: Scrum is not enough - being a successful agile engineer

Swedbank

● The major bank in Baltics and Scandinavia● Agile since 2005● Started with XP (bottom-up)● Voted the best Internet Bank in Europe

Page 20: Scrum is not enough - being a successful agile engineer

Productivity● Decent version control● Master your IDE● One-click builds● DRY – Don't repeat yourself● Script any repetitive tasks

Page 21: Scrum is not enough - being a successful agile engineer

Avoid hopeless meetings

Page 22: Scrum is not enough - being a successful agile engineer

Unit tests● Standardize!● Continuous integration● Keep them “unit”● Keep track of coverage %

● Never let it fall!

Page 23: Scrum is not enough - being a successful agile engineer

Measuring

You get what you measure

Page 24: Scrum is not enough - being a successful agile engineer

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!

Page 25: Scrum is not enough - being a successful agile engineer

The Truck FactorThe Truck Factor

● Avoid overspecializationAvoid overspecialization● Collective code ownershipCollective code ownership

● Coding standardsCoding standards● TEX* meetingsTEX* meetings

* TEX = Technology EXchange* TEX = Technology EXchange

Page 26: Scrum is not enough - being a successful agile engineer

Pair programmingPair programming

TDD - Ping pong – Concentration - QualityTDD - Ping pong – Concentration - Quality

Page 27: Scrum is not enough - being a successful agile engineer

27

Software Design vs Software Design vs ArchitectureArchitecture

● Software designSoftware design is the structure of code is the structure of code and relations between its elementsand relations between its elements

● Software architectureSoftware architecture is the same as is the same as software design, but used when people software design, but used when people want to make it look importantwant to make it look important(after Martin Fowler)(after Martin Fowler)– Architecture is the part of design that is Architecture is the part of design that is

difficult to change difficult to change – Therefore it is undesired :-)Therefore it is undesired :-)

Page 28: Scrum is not enough - being a successful agile engineer

28

Design vs ConstructionDesign vs Construction● In civil and mechanical engineeringIn civil and mechanical engineering

– Cost distribution Cost distribution ~ 10% / 90%~ 10% / 90%– Design: intelligently skilled, creative Design: intelligently skilled, creative

peoplepeople– Construction: manually skilledConstruction: manually skilled

● In softwareIn software– Code is the design, not UML, etcCode is the design, not UML, etc– Construction: compilation, builds, etc – Construction: compilation, builds, etc –

almost freealmost free

~ 100% / 0% distribution!~ 100% / 0% distribution!

Page 29: Scrum is not enough - being a successful agile engineer

Sustainable pace

Page 30: Scrum is not enough - being a successful agile engineer

Software Software CraftsmanshipCraftsmanship

Page 31: Scrum is not enough - being a successful agile engineer

http://manifesto .softw

a recraft smansh ip.org

Page 32: Scrum is not enough - being a successful agile engineer

Software Software Craftsmanship...Craftsmanship...

...the ...the CodeborneCodeborne way way

Page 33: Scrum is not enough - being a successful agile engineer

UNPROFESSIONAL

Page 34: Scrum is not enough - being a successful agile engineer

Heavyweight

Lightweight

Page 35: Scrum is not enough - being a successful agile engineer

Complex

Simple

Page 36: Scrum is not enough - being a successful agile engineer

The order of adoption● Coding standard● Unit tests● Continuous integration (+ bells and whistles)● Collective code ownership● Pair programming● TDD● Automated acceptance tests

Page 37: Scrum is not enough - being a successful agile engineer

Technical debtTechnical debtAnd don't forget paying theAnd don't forget paying the

Page 38: Scrum is not enough - being a successful agile engineer

The “easy” way

Hire the right people!

“hire for attitude, train for skills”

Anton Keks, [email protected]