SlideShare une entreprise Scribd logo
1  sur  40
Creating change
from within
 The Agile Developer story
 By
 Dror Helper
About.Me
• Software Developer 9+ years

• Team’s technical lead

• TDD/Unit testing enthusiast

• Some SCRUM/Kanban background

• Blogger – http://blog.drorhelper.com
The problem with Agile
We don’t have time
                     It would never
                       work in this   I don’t want to do this!
                         project
So what can a single
    person do?
Let me tell you
 about the last
year and a half
The cast

                   Manager




Developer   Developer   Consultant   Me
Team’s methodology
• Unit tests – more or less

• Iteration tracking?

• Manual deploy builds – from developer’s PC

• Code reviews
My   1 st   week on the job
Let’s do TDD!
Analysis
• Took two days to fix 40% of tests and make all of the
  test run

• Find what are the main issues – and focus on them
   o   Not readable
   o   Using logic inside test
   o   Testing too much
   o   Hand rolled mocks
   o   Scenarios hiding as unit tests
   o   Highly coupled code
Teach the team




And decide on next steps
CI server                      Build Server

                           What’s new?

Commit
                          There you go

         Source Control




                   Build Agents
Immediate steps
•   Using MSTest
•   Write test before fixing bug
•   Fix existing tests when implementing new features
•   Delete obsolete tests
Code reviews
Then came mocking
• Hard to explain at the beginning
• Instead show them!
   o Free tools – low cost upfront
   o Commercial products

• Get rid of existing hand-rolled mocks
And excuses
•   “I didn’t have enough time so I didn’t write a test”
•   Crisis mode
•   I cannot test it – so I won’t…
•   There’s no need to test everything
•   It’s much better to have one big test

• Remember not to be discouraged
Today
•   More than 3000 tests
•   Good code coverage
•   Most features are developed using TDD
•   CI server run all tests on commit

• Change code without fear
How to decide
 what to do?
Total cost of change
                 Participants




  Maintenance                   Effort (Time)




                Cost of
                Change
  Emotional                         Cost
   Value                          (Money)




                  Previous
                 investment
The most difficult task

  Replace
existing tool
      or          Hard!
methodology
Your knowledge


               What
Subject
domain
                you        Gap
               know
Iteration
tracking
In the beginning
Post-it + wall
Excel in shared folder
TFS + Work item manager
Tips and tricks
The power of code reviews
Effective Code reviews
• Advise don’t force
• Review the code not the person
• It’s ok to discuss the good things as well

• You should get reviewed as well!
• After a while team members can review each other
Have the right attitude
•   Be positive
•   Don’t tell them what to so - suggest improvements
•   Don’t force – convince
•   Be ready to change if proven wrong
•   Don’t be “that guy”
Communicate!
•   Email
•   Phone call
•   Face to face
•   Presentation
•   Coder reviews
•   Pair programming
•   Daily meetings
Create success record
Enlist Help
Because You cannot do it all by yourself
Change is iterative
• Hard to perform big changes overnight
• Small incremental changes
• Teach the team about the “boy scout rule”.
Be pragmatic!
•   Every action should have a purpose
•   If it doesn’t work – change it!
•   Names are not important – just what you do
•   Practices can be adapted for the team
•   Don’t be a strict task master




     Know where to draw the line
Journey not a destination
Aftermath
Team growth
opportunity/challenge
The end?
•   TDD & unit tests
•   CI server
•   Code reviews before commit
•   Automatic deployment
•   Task board and iterations
•   Better estimations
•   Faster time to deploy
Thank you

Contenu connexe

Tendances

Agile testing experiments
Agile testing experimentsAgile testing experiments
Agile testing experiments
Baiju Joseph
 
Waterfalls for Agile in a bag
Waterfalls for Agile in a bagWaterfalls for Agile in a bag
Waterfalls for Agile in a bag
Steve Wells
 
Tester Challenges in Agile ?
Tester Challenges in Agile ?Tester Challenges in Agile ?
Tester Challenges in Agile ?
alind tiwari
 

Tendances (19)

Gearing Startups for Success through Product Engineering
Gearing Startups for Success through Product EngineeringGearing Startups for Success through Product Engineering
Gearing Startups for Success through Product Engineering
 
Become a Quality Enabler
Become a Quality EnablerBecome a Quality Enabler
Become a Quality Enabler
 
Lessons learnt in ten years of agile testing
Lessons learnt in ten years of agile testingLessons learnt in ten years of agile testing
Lessons learnt in ten years of agile testing
 
Agile testing experiments
Agile testing experimentsAgile testing experiments
Agile testing experiments
 
Spec By Example or How to teach people talk to each other
Spec By Example or How to teach people talk to each otherSpec By Example or How to teach people talk to each other
Spec By Example or How to teach people talk to each other
 
Bad metric, bad!
Bad metric, bad!Bad metric, bad!
Bad metric, bad!
 
Waterfalls for Agile in a bag
Waterfalls for Agile in a bagWaterfalls for Agile in a bag
Waterfalls for Agile in a bag
 
Waterfalls for agile cambridge
Waterfalls for agile cambridgeWaterfalls for agile cambridge
Waterfalls for agile cambridge
 
Agile San Diego: Testing as Exploration (Continuous Delivery w/o Automation)
Agile San Diego: Testing as Exploration (Continuous Delivery w/o Automation)Agile San Diego: Testing as Exploration (Continuous Delivery w/o Automation)
Agile San Diego: Testing as Exploration (Continuous Delivery w/o Automation)
 
Adventures in Agile Testing
Adventures in Agile TestingAdventures in Agile Testing
Adventures in Agile Testing
 
Mujeebur rahmansaher introduction-to-scrum_v2
Mujeebur rahmansaher introduction-to-scrum_v2Mujeebur rahmansaher introduction-to-scrum_v2
Mujeebur rahmansaher introduction-to-scrum_v2
 
Tester Challenges in Agile ?
Tester Challenges in Agile ?Tester Challenges in Agile ?
Tester Challenges in Agile ?
 
Shipping code is not the problem, deciding what to ship it is!
Shipping code is not the problem, deciding what to ship it is!Shipping code is not the problem, deciding what to ship it is!
Shipping code is not the problem, deciding what to ship it is!
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 
Making a Mock by Kelsey Shannahan
Making a Mock by Kelsey ShannahanMaking a Mock by Kelsey Shannahan
Making a Mock by Kelsey Shannahan
 
Agile testing practice
Agile testing practiceAgile testing practice
Agile testing practice
 
Communicated deadlines = bad quality
Communicated deadlines = bad qualityCommunicated deadlines = bad quality
Communicated deadlines = bad quality
 
Advancing Testing Using Axioms
Advancing Testing Using AxiomsAdvancing Testing Using Axioms
Advancing Testing Using Axioms
 

En vedette (6)

Safe Agilist
Safe AgilistSafe Agilist
Safe Agilist
 
Auditoria-metodologia agil-proyecto de auditoria-auditoria de escuela
Auditoria-metodologia agil-proyecto de auditoria-auditoria de escuelaAuditoria-metodologia agil-proyecto de auditoria-auditoria de escuela
Auditoria-metodologia agil-proyecto de auditoria-auditoria de escuela
 
Scrum: Waterfall Into Scrum
Scrum: Waterfall Into ScrumScrum: Waterfall Into Scrum
Scrum: Waterfall Into Scrum
 
Scrum user role modeling
Scrum user role modelingScrum user role modeling
Scrum user role modeling
 
AgileTour-2010, Noida : What it means to be "An Agile Developer"?
AgileTour-2010, Noida : What it means to be "An Agile Developer"?AgileTour-2010, Noida : What it means to be "An Agile Developer"?
AgileTour-2010, Noida : What it means to be "An Agile Developer"?
 
Enter the mind of an Agile Developer
Enter the mind of an Agile DeveloperEnter the mind of an Agile Developer
Enter the mind of an Agile Developer
 

Similaire à Creating change from within - Agile Practitioners 2012

Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven development
Einar Ingebrigtsen
 
Becoming a better programmer - unit testing
Becoming a better programmer - unit testingBecoming a better programmer - unit testing
Becoming a better programmer - unit testing
Duy Tan Geek
 
{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx
AmalEldhose2
 
Tester career path
Tester career pathTester career path
Tester career path
gaoliang641
 

Similaire à Creating change from within - Agile Practitioners 2012 (20)

Intro to TDD
Intro to TDDIntro to TDD
Intro to TDD
 
It's XP, Stupid
It's XP, StupidIt's XP, Stupid
It's XP, Stupid
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)
 
TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven development
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): Revisted
 
Becoming a better programmer - unit testing
Becoming a better programmer - unit testingBecoming a better programmer - unit testing
Becoming a better programmer - unit testing
 
TDD in Agile
TDD in AgileTDD in Agile
TDD in Agile
 
Effective engineer
Effective engineerEffective engineer
Effective engineer
 
{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx
 
Agile process
Agile processAgile process
Agile process
 
Recruiting the right people quickly public
Recruiting the right people quickly   publicRecruiting the right people quickly   public
Recruiting the right people quickly public
 
Tester career path
Tester career pathTester career path
Tester career path
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill Ayers
 
Presentation delex
Presentation delexPresentation delex
Presentation delex
 
A Brief Introduction to Test-Driven Development
A Brief Introduction to Test-Driven DevelopmentA Brief Introduction to Test-Driven Development
A Brief Introduction to Test-Driven Development
 
TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)
 
TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)
 
The Way of The Software Craftsman # Part One: The Beginning
The Way of The Software Craftsman # Part One: The BeginningThe Way of The Software Craftsman # Part One: The Beginning
The Way of The Software Craftsman # Part One: The Beginning
 
Getting By Without "QA"
Getting By Without "QA"Getting By Without "QA"
Getting By Without "QA"
 

Plus de Dror Helper

Plus de Dror Helper (20)

Unit testing patterns for concurrent code
Unit testing patterns for concurrent codeUnit testing patterns for concurrent code
Unit testing patterns for concurrent code
 
The secret unit testing tools no one ever told you about
The secret unit testing tools no one ever told you aboutThe secret unit testing tools no one ever told you about
The secret unit testing tools no one ever told you about
 
Debugging with visual studio beyond 'F5'
Debugging with visual studio beyond 'F5'Debugging with visual studio beyond 'F5'
Debugging with visual studio beyond 'F5'
 
From clever code to better code
From clever code to better codeFrom clever code to better code
From clever code to better code
 
From clever code to better code
From clever code to better codeFrom clever code to better code
From clever code to better code
 
A software developer guide to working with aws
A software developer guide to working with awsA software developer guide to working with aws
A software developer guide to working with aws
 
The secret unit testing tools no one has ever told you about
The secret unit testing tools no one has ever told you aboutThe secret unit testing tools no one has ever told you about
The secret unit testing tools no one has ever told you about
 
The role of the architect in agile
The role of the architect in agileThe role of the architect in agile
The role of the architect in agile
 
Harnessing the power of aws using dot net core
Harnessing the power of aws using dot net coreHarnessing the power of aws using dot net core
Harnessing the power of aws using dot net core
 
Developing multi-platform microservices using .NET core
 Developing multi-platform microservices using .NET core Developing multi-platform microservices using .NET core
Developing multi-platform microservices using .NET core
 
Harnessing the power of aws using dot net
Harnessing the power of aws using dot netHarnessing the power of aws using dot net
Harnessing the power of aws using dot net
 
Secret unit testing tools no one ever told you about
Secret unit testing tools no one ever told you aboutSecret unit testing tools no one ever told you about
Secret unit testing tools no one ever told you about
 
C++ Unit testing - the good, the bad & the ugly
C++ Unit testing - the good, the bad & the uglyC++ Unit testing - the good, the bad & the ugly
C++ Unit testing - the good, the bad & the ugly
 
Working with c++ legacy code
Working with c++ legacy codeWorking with c++ legacy code
Working with c++ legacy code
 
Visual Studio tricks every dot net developer should know
Visual Studio tricks every dot net developer should knowVisual Studio tricks every dot net developer should know
Visual Studio tricks every dot net developer should know
 
Secret unit testing tools
Secret unit testing toolsSecret unit testing tools
Secret unit testing tools
 
Electronics 101 for software developers
Electronics 101 for software developersElectronics 101 for software developers
Electronics 101 for software developers
 
Navigating the xDD Alphabet Soup
Navigating the xDD Alphabet SoupNavigating the xDD Alphabet Soup
Navigating the xDD Alphabet Soup
 
Building unit tests correctly
Building unit tests correctlyBuilding unit tests correctly
Building unit tests correctly
 
Who’s afraid of WinDbg
Who’s afraid of WinDbgWho’s afraid of WinDbg
Who’s afraid of WinDbg
 

Dernier

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Dernier (20)

Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

Creating change from within - Agile Practitioners 2012

  • 1. Creating change from within The Agile Developer story By Dror Helper
  • 2. About.Me • Software Developer 9+ years • Team’s technical lead • TDD/Unit testing enthusiast • Some SCRUM/Kanban background • Blogger – http://blog.drorhelper.com
  • 3. The problem with Agile We don’t have time It would never work in this I don’t want to do this! project
  • 4. So what can a single person do?
  • 5. Let me tell you about the last year and a half
  • 6. The cast Manager Developer Developer Consultant Me
  • 7. Team’s methodology • Unit tests – more or less • Iteration tracking? • Manual deploy builds – from developer’s PC • Code reviews
  • 8. My 1 st week on the job
  • 10. Analysis • Took two days to fix 40% of tests and make all of the test run • Find what are the main issues – and focus on them o Not readable o Using logic inside test o Testing too much o Hand rolled mocks o Scenarios hiding as unit tests o Highly coupled code
  • 11. Teach the team And decide on next steps
  • 12. CI server Build Server What’s new? Commit There you go Source Control Build Agents
  • 13. Immediate steps • Using MSTest • Write test before fixing bug • Fix existing tests when implementing new features • Delete obsolete tests
  • 15. Then came mocking • Hard to explain at the beginning • Instead show them! o Free tools – low cost upfront o Commercial products • Get rid of existing hand-rolled mocks
  • 16. And excuses • “I didn’t have enough time so I didn’t write a test” • Crisis mode • I cannot test it – so I won’t… • There’s no need to test everything • It’s much better to have one big test • Remember not to be discouraged
  • 17. Today • More than 3000 tests • Good code coverage • Most features are developed using TDD • CI server run all tests on commit • Change code without fear
  • 18. How to decide what to do?
  • 19. Total cost of change Participants Maintenance Effort (Time) Cost of Change Emotional Cost Value (Money) Previous investment
  • 20. The most difficult task Replace existing tool or Hard! methodology
  • 21. Your knowledge What Subject domain you Gap know
  • 25. Excel in shared folder
  • 26. TFS + Work item manager
  • 28. The power of code reviews
  • 29. Effective Code reviews • Advise don’t force • Review the code not the person • It’s ok to discuss the good things as well • You should get reviewed as well! • After a while team members can review each other
  • 30. Have the right attitude • Be positive • Don’t tell them what to so - suggest improvements • Don’t force – convince • Be ready to change if proven wrong • Don’t be “that guy”
  • 31. Communicate! • Email • Phone call • Face to face • Presentation • Coder reviews • Pair programming • Daily meetings
  • 33. Enlist Help Because You cannot do it all by yourself
  • 34. Change is iterative • Hard to perform big changes overnight • Small incremental changes • Teach the team about the “boy scout rule”.
  • 35. Be pragmatic! • Every action should have a purpose • If it doesn’t work – change it! • Names are not important – just what you do • Practices can be adapted for the team • Don’t be a strict task master Know where to draw the line
  • 36. Journey not a destination
  • 39. The end? • TDD & unit tests • CI server • Code reviews before commit • Automatic deployment • Task board and iterations • Better estimations • Faster time to deploy

Notes de l'éditeur

  1. We’ve started with sticky notes
  2. Several lessons for the whole teamHow to write better testsMocking frameworksWhat is TDDAgree with the whole team on the next tasks
  3. Now all of the tests must passNew tests have to runNew code have to be tested
  4. We’ve started with sticky notes
  5. We had nothing
  6. Pros:High visibilityEasy to use and maintainCons:Statistics are not automatically createdNeed to go into the room
  7. Pros:Can access from anywhereCan be sent in emailCons:Only one editor at a timeNeed to add statisticsNot automatic
  8. Teach best practices – in the right contextTrack progressFind common issuesAlso pair programming – although I found that managers are more likely to
  9. Don’t force – convinceIt’s ok to be wrong
  10. Choose you short and long term goalsHave patienceDon’t burn out