SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
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/

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Ähnlich wie 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
 

Ähnlich wie 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 Overview
Agile Testing OverviewAgile Testing Overview
Agile Testing Overview
 
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
 
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
 

Kürzlich hochgeladen

Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 

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/