SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
Agile Software Development in
Practice – A Developer
Perspective

                Weerasak Witthawaskul
                       Mr. Sweet Corn
                       29 August 2009
Companies' Most Important Assets

Employees = You
Current Treatments
  More workload /
  documentation
  = More stresses, High
  turnover, Low quality
  work
Happy, talented,
empowered, passionate
employees = productive
To Agile, or Not to Agile
What? You are still not an agile
            developer?
                           Agile will make you
                            more, if not most,
                            productive
                               Don't do things that do
                                not help make working
                                software
                               No more repeated bugs
   Agile is about organizational transformation
   Try Scrum for project management
   Try XP for design, develop and test
Pick 3 out of 4

        Deadline



Scope                 Budget



        Quality
Agile Practices

   User Stories
   Iteration Planning Meeting
   Daily Stand-up Meeting
   Retrospective
   TDD
   Refactoring
   Continuous Integration
User Story Stack
Scrum in Theory
Scrum in Practice
Card Wall
 Ready    In Dev     In BA     In QA   Ready for
for Dev                                Business
Release and Iteration Plannings
                           Daily Standup




Release 1 Planning
IPM 1
         End of Iteration 1
            Retrospective
                     IPM 2 End of Iteration 2
                                Retrospective
                           Release 2 Planning
                                        IPM 3             End of Iteration 3
                                   Release 1                 Retrospective
                                                                      IPM 4
                       IPM = Iteration Planning Meeting
Iteration Planning
   Review vision and roadmap
   Review development status from previous
    iterations
   Demo of previous iterations
   Review team availability & capacity
   Review product backlog & select items for
    iteration
   Identify tasks & estimates
   Commit
Productive Scrum

   Time management is crucial
   All roles must be identified
       Business / PM / BA / Tech Lead / Dev / QA
   Onsite team is most desirable
   Be concise and direct
   Trust that everybody does the best job possible
    given context and timeframe
   Daily or on-demand group huddle
   Use simplest tools possible
Measurements
   Frequent releases of working software
   Iteration Velocity
   Repeated Defects
   Team productivity / morale / happiness
Eternal Engineering Sunshine of
      the Spotless Minds
   We tend to overengineer design...
       Lets do the Strategy pattern when there is only one
        algorithm
       Lets use the Observer pattern when there is only
        one observable and one observer
       Lets use this because in the future...
       I have beautiful diagrams of the system; don't
        change it
       Aim for 100% test coverage
XP is for...
eXtreme Programming (XP)
                                      Move People                                   100%
               CRC                      Around
               Cards                                                                 Unit
                                      Change    We                                  Tests
    Simple                             Pair    Need
                                               Help                                Passed
    Design
               Complex
               Problem                                              Run All Unit
                             Failed                                   Tests
                              Unit                    New Unit
Next Task           Create    Test        Pair         Tests
Or Failed                             Programming              Continuous
                    a Unit                                     Integration
Acceptance          Test     Passed                    New
Test                          Unit                  Functionality
                                      Simple   Complex
                                      Code      Code
                                       Refactor                              Acceptance
                                      Mercilessly                               Test
                                                                               Passed
Copyright 200 J. D. Wells
                             Collective Code Ownership
Pair Programming

   Pairing Matrix
       Developer    Dev A       Dev B       Dev C       Dev D


       Dev A                    Monday      Tuesday     Wednesday


       Dev B        Monday                  Wednesday   Thursday


       Dev C        Tuesday     Wednesday               Friday


       Dev D        Wednesday   Thursday    Friday



   Ping Pong Programming
Test Driven Development

   New Project
       Help you shape your design from the caller point of
        view
       Set of tests (test suite) become assets
   Reengineering Project
       Help you understand existing implementation by
        writing test coverage of existing code
       Ensure that your refactored code and new code do
        not break tests
Three Rules of TDD Fight Club
Three Rules of Fight Club TDD


   You are not allowed to write any production
    code unless it is to make a failing unit test pass.
   You are not allowed to write any more of a unit
    test than is sufficient to fail; and compilation
    failures are failures.
   You are not allowed to write any more
    production code than is sufficient to pass the
    one failing unit test.
Typical Coding
   Understand user accpetance criterias in
    each user story
   Write functional tests for each criteria
       They will fail
   For each functional test
       Write unit tests for controllers
       Think about what should be in controllers, what
        should be abstracted into models
       Write unit tests for models
       Write code to make tests pass
Test Double

         Use Stubs / Mocks
         Stubbing things you
          don't want to test but
          are necessary
         Mocking things you
          expect some
          behaviors
         Examples?
Level of Tests
   Unit tests
       One class; stubs the rest
   Functional tests
       Groups of classes; use fixtures as test data
   External tests
       External service dependencies; may fail if
        external services are unavailable
   Integration tests; User acceptance tests
       End-to-end tests
       Webapp tests from web browser
Testing Styles
   Assertion is so '90s
      assert_equals(”must be empty”, message, ””)
   Behavior Drien Design (BDD)
      message.should == ””
   Test name prefixed is for grandpa
      void testMessageMustBeEmpty() { … }
   Use annotation
      [test]
      void messageMustBeEmpty() { … }
BDD
   We describe something that it must behave …
    describe ”user login” do
      it ”must not allow user login without password” do
      … password.should_not be_nil ...
      end
      it ”checks password from the user id” do
      … user.valid?(password).should == true ...
      end
    end
BDD and User Stories

   Story n
    As a …stakeholder...
    I want to …goal...
    so that …reason/business value...
       Scenario m
        Given …context...
        When ...event...
        Then ...expectation...
From User Story to Implementation Demo




     Story 1
     Title: Customer withdraws cash
     As a customer,
     I want to withdraw cash from an ATM,
     so that I don’t have to wait in line at the bank.
Demo – ATM Withdrawal
Scenario 1: Account is in credit     Scenario 2: Account is overdrawn past
                                     the overdraft limit
Given the account is in credit
                                     Given the account is overdrawn
And the card is valid                And the card is valid
And the dispenser contains cash      When the customer requests cash
                                     Then ensure a rejection message is
When the customer requests cash      displayed
Then ensure the account is debited   And ensure cash is not dispensed
                                     And ensure the card is returned
And ensure cash is dispensed

And ensure the card is returned
Spec-first Design – User/BA pairing
BA / Dev Pairing



                   Dev Pairing
Test / Code / Test Cycle
Dev done when we see all dots




                 With nested option, test result
                 becomes documentation
Checkin Messages as Documents

   Instead of
       svn ci -m ”fixing bugs”
   Try
       svn ci -m ”[jira 1234] Boat/Pok – Checked null
        pointers of cart.items before accessing each item”
   Why?
       svn log | grep -i -C 3 pok | less
       svn log | grep -i -C 3 cart | less
       Bug tracking tool integration
Continuous Integration
                              Builder Server 2

           Builder Server 1

 VCS




       Check-in
Tools
   User Stories
       Index cards
   User Story Tracking – Card Wall
       Whiteboard
       Mingle
   VCS
       Subversion / Git
   Bug Tracking
       Jira / Bugzilla
Testing Libraries / Tools
   Mockito – Java




   rSpec DSL – Ruby
   Selenium/Watir – Web
    UAT
Presentation Summary

   No more excuse not to do agile
   If you can't go full-stream agile, consider
    gradually applying agile practices
   Self-discipline, don't do shortcuts, i.e. always
    test first. You will thank yourself later.
   There is no 'i' in Teamwork; develop soft skills
    to work effectively with others
Keep Learning

   Self Study – Keep up with technololgy
   Software Craftmanship: Apprenticing
   Higher Education
Towards Agile Manifesto – Thai Edition
Now You Have Questions



       Time to Ask!
   Agile 2009 http://www.agile2009.org/
   Martin Fowler Bliki http://martinfowler.com/bliki/
   Agile Consulting
    http://agileconsulting.blogspot.com/
   Planet ThoughtWorks
    http://blogs.thoughtworks.com/

Más contenido relacionado

La actualidad más candente

Automate your way to agility
Automate your way to agilityAutomate your way to agility
Automate your way to agilityYuval Yeret
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineeringZeeshan Masood S
 
Dr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex Environments
Dr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex EnvironmentsDr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex Environments
Dr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex EnvironmentsAgileSparks
 
Shirly Ronen - User story testing activities
Shirly Ronen - User story testing activitiesShirly Ronen - User story testing activities
Shirly Ronen - User story testing activitiesAgileSparks
 
Shirly Ronen - rapid release flow and agile testing-as
Shirly Ronen - rapid release flow and agile testing-asShirly Ronen - rapid release flow and agile testing-as
Shirly Ronen - rapid release flow and agile testing-asAgileSparks
 
Test driven development
Test driven developmentTest driven development
Test driven developmentShalabh Saxena
 
BDD presentation
BDD presentationBDD presentation
BDD presentationtemebele
 
Scrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - ColomboScrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - ColomboNaveen Kumar Singh
 
Agile Maintenance
Agile MaintenanceAgile Maintenance
Agile MaintenanceNaresh Jain
 
Facilitating Release Planning Event
Facilitating Release Planning EventFacilitating Release Planning Event
Facilitating Release Planning EventRavi Tadwalkar
 
Scrum Testing Methodology
Scrum Testing MethodologyScrum Testing Methodology
Scrum Testing MethodologyGaya1985
 
(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should knowRichard Cheng
 
Agile engineering practices – a short overview
Agile engineering practices – a short overviewAgile engineering practices – a short overview
Agile engineering practices – a short overviewSerhiy Yevtushenko
 
How to bake in quality in agile scrum projects
How to bake in quality in agile scrum projectsHow to bake in quality in agile scrum projects
How to bake in quality in agile scrum projectsSantanu Bhattacharya
 
Shirly Ronen - Documenting an agile defect
Shirly Ronen - Documenting an agile defectShirly Ronen - Documenting an agile defect
Shirly Ronen - Documenting an agile defectAgileSparks
 

La actualidad más candente (20)

Automate your way to agility
Automate your way to agilityAutomate your way to agility
Automate your way to agility
 
Bdd Introduction
Bdd IntroductionBdd Introduction
Bdd Introduction
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineering
 
Creating value using Agile Methods- Nanda Lankalapalli
Creating value using Agile Methods- Nanda LankalapalliCreating value using Agile Methods- Nanda Lankalapalli
Creating value using Agile Methods- Nanda Lankalapalli
 
Dr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex Environments
Dr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex EnvironmentsDr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex Environments
Dr. Ronen Bar-Nahor - Optimizing Agile Testing in Complex Environments
 
Shirly Ronen - User story testing activities
Shirly Ronen - User story testing activitiesShirly Ronen - User story testing activities
Shirly Ronen - User story testing activities
 
Shirly Ronen - rapid release flow and agile testing-as
Shirly Ronen - rapid release flow and agile testing-asShirly Ronen - rapid release flow and agile testing-as
Shirly Ronen - rapid release flow and agile testing-as
 
Cobol agile
Cobol agileCobol agile
Cobol agile
 
Agile Testing
Agile TestingAgile Testing
Agile Testing
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
BDD presentation
BDD presentationBDD presentation
BDD presentation
 
Extreme programming (xp)
Extreme programming (xp)Extreme programming (xp)
Extreme programming (xp)
 
Scrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - ColomboScrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - Colombo
 
Agile Maintenance
Agile MaintenanceAgile Maintenance
Agile Maintenance
 
Facilitating Release Planning Event
Facilitating Release Planning EventFacilitating Release Planning Event
Facilitating Release Planning Event
 
Scrum Testing Methodology
Scrum Testing MethodologyScrum Testing Methodology
Scrum Testing Methodology
 
(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know
 
Agile engineering practices – a short overview
Agile engineering practices – a short overviewAgile engineering practices – a short overview
Agile engineering practices – a short overview
 
How to bake in quality in agile scrum projects
How to bake in quality in agile scrum projectsHow to bake in quality in agile scrum projects
How to bake in quality in agile scrum projects
 
Shirly Ronen - Documenting an agile defect
Shirly Ronen - Documenting an agile defectShirly Ronen - Documenting an agile defect
Shirly Ronen - Documenting an agile defect
 

Similar a Agile Software Development in Practice - A Developer Perspective

Releasing fast code - The DevOps approach
Releasing fast code - The DevOps approachReleasing fast code - The DevOps approach
Releasing fast code - The DevOps approachMichael Kopp
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by ExampleNalin Goonawardana
 
Testing Sap: Modern Methodology
Testing Sap: Modern MethodologyTesting Sap: Modern Methodology
Testing Sap: Modern MethodologyEthan Jewett
 
Beyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and SubversionBeyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and SubversionProduct Marketing Services
 
Effective Strategies for Distributed Testing
Effective Strategies for Distributed TestingEffective Strategies for Distributed Testing
Effective Strategies for Distributed TestingAnand Bagmar
 
TDD in functional testing with WebDriver
TDD in functional testing with WebDriverTDD in functional testing with WebDriver
TDD in functional testing with WebDriverMikalai Alimenkou
 
Essential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile AdoptionEssential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile AdoptionSteven Mak
 
Product quality in agile project
Product quality in agile projectProduct quality in agile project
Product quality in agile projectNhan Nguyen
 
Implementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsImplementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsDominik Dary
 
Agile Testing 20021015
Agile Testing 20021015Agile Testing 20021015
Agile Testing 20021015Raghu Karnati
 
Implementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsImplementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsMichael Palotas
 
Flexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts ExplainedFlexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts ExplainedSandy Mamoli
 
Agile Testing, Uncertainty, Risk, and Why It All Works
Agile Testing, Uncertainty, Risk, and Why It All WorksAgile Testing, Uncertainty, Risk, and Why It All Works
Agile Testing, Uncertainty, Risk, and Why It All WorksElisabeth Hendrickson
 
Agile Testing at eBay
Agile Testing at eBayAgile Testing at eBay
Agile Testing at eBayDominik Dary
 
Software Design for Testability
Software Design for TestabilitySoftware Design for Testability
Software Design for Testabilityamr0mt
 

Similar a Agile Software Development in Practice - A Developer Perspective (20)

Releasing fast code - The DevOps approach
Releasing fast code - The DevOps approachReleasing fast code - The DevOps approach
Releasing fast code - The DevOps approach
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by Example
 
Testing Sap: Modern Methodology
Testing Sap: Modern MethodologyTesting Sap: Modern Methodology
Testing Sap: Modern Methodology
 
Beyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and SubversionBeyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and Subversion
 
Effective Strategies for Distributed Testing
Effective Strategies for Distributed TestingEffective Strategies for Distributed Testing
Effective Strategies for Distributed Testing
 
TDD in functional testing with WebDriver
TDD in functional testing with WebDriverTDD in functional testing with WebDriver
TDD in functional testing with WebDriver
 
Manual testing1
Manual testing1Manual testing1
Manual testing1
 
Agile testing
Agile testingAgile testing
Agile testing
 
Eswaranand Attuluri CV
Eswaranand Attuluri CVEswaranand Attuluri CV
Eswaranand Attuluri CV
 
Essential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile AdoptionEssential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile Adoption
 
Product quality in agile project
Product quality in agile projectProduct quality in agile project
Product quality in agile project
 
Implementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsImplementing Test Automation in Agile Projects
Implementing Test Automation in Agile Projects
 
Agile Testing 20021015
Agile Testing 20021015Agile Testing 20021015
Agile Testing 20021015
 
Implementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsImplementing Test Automation in Agile Projects
Implementing Test Automation in Agile Projects
 
Flexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts ExplainedFlexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts Explained
 
Agile Testing, Uncertainty, Risk, and Why It All Works
Agile Testing, Uncertainty, Risk, and Why It All WorksAgile Testing, Uncertainty, Risk, and Why It All Works
Agile Testing, Uncertainty, Risk, and Why It All Works
 
Agile Testing Overview
Agile Testing OverviewAgile Testing Overview
Agile Testing Overview
 
Continuous Testing
Continuous TestingContinuous Testing
Continuous Testing
 
Agile Testing at eBay
Agile Testing at eBayAgile Testing at eBay
Agile Testing at eBay
 
Software Design for Testability
Software Design for TestabilitySoftware Design for Testability
Software Design for Testability
 

Último

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
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 Nanonetsnaman860154
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
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 2024Rafal Los
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
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.pdfEnterprise Knowledge
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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 2024The Digital Insurer
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
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.pptxHampshireHUG
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
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...Enterprise Knowledge
 
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 Servicegiselly40
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
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...apidays
 

Último (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
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
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
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
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
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...
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
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...
 

Agile Software Development in Practice - A Developer Perspective

  • 1. Agile Software Development in Practice – A Developer Perspective Weerasak Witthawaskul Mr. Sweet Corn 29 August 2009
  • 2. Companies' Most Important Assets Employees = You Current Treatments More workload / documentation = More stresses, High turnover, Low quality work Happy, talented, empowered, passionate employees = productive
  • 3. To Agile, or Not to Agile
  • 4. What? You are still not an agile developer?  Agile will make you more, if not most, productive  Don't do things that do not help make working software  No more repeated bugs  Agile is about organizational transformation  Try Scrum for project management  Try XP for design, develop and test
  • 5. Pick 3 out of 4 Deadline Scope Budget Quality
  • 6. Agile Practices  User Stories  Iteration Planning Meeting  Daily Stand-up Meeting  Retrospective  TDD  Refactoring  Continuous Integration
  • 10. Card Wall Ready In Dev In BA In QA Ready for for Dev Business
  • 11. Release and Iteration Plannings Daily Standup Release 1 Planning IPM 1 End of Iteration 1 Retrospective IPM 2 End of Iteration 2 Retrospective Release 2 Planning IPM 3 End of Iteration 3 Release 1 Retrospective IPM 4 IPM = Iteration Planning Meeting
  • 12. Iteration Planning  Review vision and roadmap  Review development status from previous iterations  Demo of previous iterations  Review team availability & capacity  Review product backlog & select items for iteration  Identify tasks & estimates  Commit
  • 13. Productive Scrum  Time management is crucial  All roles must be identified  Business / PM / BA / Tech Lead / Dev / QA  Onsite team is most desirable  Be concise and direct  Trust that everybody does the best job possible given context and timeframe  Daily or on-demand group huddle  Use simplest tools possible
  • 14. Measurements  Frequent releases of working software  Iteration Velocity  Repeated Defects  Team productivity / morale / happiness
  • 15. Eternal Engineering Sunshine of the Spotless Minds  We tend to overengineer design...  Lets do the Strategy pattern when there is only one algorithm  Lets use the Observer pattern when there is only one observable and one observer  Lets use this because in the future...  I have beautiful diagrams of the system; don't change it  Aim for 100% test coverage
  • 17. eXtreme Programming (XP) Move People 100% CRC Around Cards Unit Change We Tests Simple Pair Need Help Passed Design Complex Problem Run All Unit Failed Tests Unit New Unit Next Task Create Test Pair Tests Or Failed Programming Continuous a Unit Integration Acceptance Test Passed New Test Unit Functionality Simple Complex Code Code Refactor Acceptance Mercilessly Test Passed Copyright 200 J. D. Wells Collective Code Ownership
  • 18. Pair Programming  Pairing Matrix Developer Dev A Dev B Dev C Dev D Dev A Monday Tuesday Wednesday Dev B Monday Wednesday Thursday Dev C Tuesday Wednesday Friday Dev D Wednesday Thursday Friday  Ping Pong Programming
  • 19. Test Driven Development  New Project  Help you shape your design from the caller point of view  Set of tests (test suite) become assets  Reengineering Project  Help you understand existing implementation by writing test coverage of existing code  Ensure that your refactored code and new code do not break tests
  • 20. Three Rules of TDD Fight Club
  • 21. Three Rules of Fight Club TDD  You are not allowed to write any production code unless it is to make a failing unit test pass.  You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures.  You are not allowed to write any more production code than is sufficient to pass the one failing unit test.
  • 22. Typical Coding  Understand user accpetance criterias in each user story  Write functional tests for each criteria  They will fail  For each functional test  Write unit tests for controllers  Think about what should be in controllers, what should be abstracted into models  Write unit tests for models  Write code to make tests pass
  • 23. Test Double  Use Stubs / Mocks  Stubbing things you don't want to test but are necessary  Mocking things you expect some behaviors  Examples?
  • 24. Level of Tests  Unit tests  One class; stubs the rest  Functional tests  Groups of classes; use fixtures as test data  External tests  External service dependencies; may fail if external services are unavailable  Integration tests; User acceptance tests  End-to-end tests  Webapp tests from web browser
  • 25. Testing Styles  Assertion is so '90s assert_equals(”must be empty”, message, ””)  Behavior Drien Design (BDD) message.should == ””  Test name prefixed is for grandpa void testMessageMustBeEmpty() { … }  Use annotation [test] void messageMustBeEmpty() { … }
  • 26. BDD  We describe something that it must behave … describe ”user login” do it ”must not allow user login without password” do … password.should_not be_nil ... end it ”checks password from the user id” do … user.valid?(password).should == true ... end end
  • 27. BDD and User Stories  Story n As a …stakeholder... I want to …goal... so that …reason/business value...  Scenario m Given …context... When ...event... Then ...expectation...
  • 28. From User Story to Implementation Demo Story 1 Title: Customer withdraws cash As a customer, I want to withdraw cash from an ATM, so that I don’t have to wait in line at the bank.
  • 29. Demo – ATM Withdrawal Scenario 1: Account is in credit Scenario 2: Account is overdrawn past the overdraft limit Given the account is in credit Given the account is overdrawn And the card is valid And the card is valid And the dispenser contains cash When the customer requests cash Then ensure a rejection message is When the customer requests cash displayed Then ensure the account is debited And ensure cash is not dispensed And ensure the card is returned And ensure cash is dispensed And ensure the card is returned
  • 30. Spec-first Design – User/BA pairing
  • 31. BA / Dev Pairing Dev Pairing
  • 32. Test / Code / Test Cycle Dev done when we see all dots With nested option, test result becomes documentation
  • 33. Checkin Messages as Documents  Instead of  svn ci -m ”fixing bugs”  Try  svn ci -m ”[jira 1234] Boat/Pok – Checked null pointers of cart.items before accessing each item”  Why?  svn log | grep -i -C 3 pok | less  svn log | grep -i -C 3 cart | less  Bug tracking tool integration
  • 34. Continuous Integration Builder Server 2 Builder Server 1 VCS Check-in
  • 35. Tools  User Stories  Index cards  User Story Tracking – Card Wall  Whiteboard  Mingle  VCS  Subversion / Git  Bug Tracking  Jira / Bugzilla
  • 36. Testing Libraries / Tools  Mockito – Java  rSpec DSL – Ruby  Selenium/Watir – Web UAT
  • 37. Presentation Summary  No more excuse not to do agile  If you can't go full-stream agile, consider gradually applying agile practices  Self-discipline, don't do shortcuts, i.e. always test first. You will thank yourself later.  There is no 'i' in Teamwork; develop soft skills to work effectively with others
  • 38. Keep Learning  Self Study – Keep up with technololgy  Software Craftmanship: Apprenticing  Higher Education
  • 39. Towards Agile Manifesto – Thai Edition
  • 40. Now You Have Questions Time to Ask!  Agile 2009 http://www.agile2009.org/  Martin Fowler Bliki http://martinfowler.com/bliki/  Agile Consulting http://agileconsulting.blogspot.com/  Planet ThoughtWorks http://blogs.thoughtworks.com/