SlideShare a Scribd company logo
1 of 79
Download to read offline
An Introduction to Agile
 Engineering Practices
         Kane Mar




            1
“The New New Product
  Development Game”
- Takeuchi and Nonaka



         2
photo: http://www.flickr.com/photos/nicmcphee/



                                                 3
4
From: Kent Beck
To: Jeff Sutherland <jsutherland>
Reply: 70761.1216@compuserve.com
Date: Mon, 15 May 1995 18:01:15 -0400 (EDT)
Subj: HBR paper
_________________________
  Is there a good place to get reprints of the SCRUM paper from
  HBR? I've written patterns for something very similar and I want to
  make sure I steal as many ideas as possible.
  Kent



                                 5
Continuous Integration




          6
What is Continuous
  Integration?



        7
“Continuous Integration is a software
development practice where members of a
    team integrate their work frequently,
usually each person integrates at least daily
 - leading to multiple integrations per day.
      Each integration is verified by an
 automated build (including test) to detect
 integration errors as quickly as possible.”
               -Martin Fowler

                     8
Commit




         9
1. Compile & Build
Commit        2. Unit Tests
              3. Integration Tests
              4. Report Errors




         10
1. Compile & Build
Commit               2. Unit Tests
                     3. Integration Tests
                     4. Report Errors

     Checkout




                11
1. Compile & Build
Commit              2. Unit Tests
                    3. Integration Tests
                    4. Report Errors



         Checkout




            12
1. Compile & Build
Commit               2. Unit Tests
                     3. Integration Tests
                     4. Report Errors



              Checkout




         13
14
Why is Continuous Integration
         important?



             15
1. Reducing Risk.




       16
When we are integrating the
product all the time the risk of a
   failed integration is spread
 throughout the duration of the
             project ...

                17
rather than being left until the
             end.



               18
2. Behavior.




     19
If doing a complete build and
test of any product is difficult ...



                 20
doing it “continuously” is very
           difficult.



              21
Teams need to develop different
      ways of working.



              22
Never letting the build break.




              23
1. Compile & Build
Commit                2. Unit Tests
                      3. Integration Tests
                      4. Report Errors


                       A broken build or
              Checkout integration test
                       here ...




         24
1. Compile & Build
Commit                2. Unit Tests
                      3. Integration Tests
                      4. Report Errors


                       A broken build or
              Checkout integration test
                       here ...

                        will get propagated
                        here, here and here.



         25
The Friday Afternoon Pattern of
        broken builds.



              26
Delivering smaller increments
 of well tested functionality.



              27
Investing in automated testing
         frameworks.



              28
Test, Test and Test again.




            29
I believe that all teams should
          practice CI.



              30
The tools are free, like free beer.




                31
The only price to pay for
  introducing CI is ...



           32
education.




    33
References
  http://www.martinfowler.com/articles/
✦
  continuousIntegration.html
✦ http://cruisecontrol.sourceforge.net/
✦ http://www.jetbrains.com/teamcity/
✦ http://luntbuild.javaforge.com/
✦ https://hudson.dev.java.net/




                             34
Test Driven Development




           35
What is Test Driven
 Development?



        36
1. Add a test




     37
2. Run all test and see the new
            ones fail



              38
3. Write some code




       39
4. Run the automated tests and
       see them succeed



             40
5. Refactor




    41
Red/Green/Refactor




        42
Why is TDD important?




         43
TDD is a method of designing
  software, not merely an
    approach to testing.


             44
“We found that test-first
students on average wrote more
tests and, in turn, students who
 wrote more tests tended to be
       more productive.”
 - Erdogmus, Hakan; Morisio,
            Torchiano
               45
Over a period of time, TDD will
  lead to suite of automated
       integration tests.


              46
References
    Erdogmus, Hakan; Morisio, Torchiano. “On the Effectiveness of Test-first
✦
    Approach to Programming,” Proceedings of the IEEE Transactions on Software
    Engineering, 31(1). January 2005. (NRC 47445). “We found that test-first students
    on average wrote more tests and, in turn, students who wrote more tests tended to
    be more productive.”
    Newkirk, JW and Vorontsov, AA. “Test-Driven Development in Microsoft .NET,”
✦
    Microsoft Press, 2004.
    Feathers, M. “Working Effectively with Legacy Code,” Prentice Hall, 2004
✦

    Beck, K. “Test-Driven Development by Example,” Addison Wesley, 2003
✦

    Muller, Matthias M.; Padberg, Frank. “About the Return on Investment of Test-
✦
    Driven Development (PDF)” Universitat Karlsruhe, Germany




                                          47
Refactoring




     48
What is Refactoring?




         49
“Refactoring is a disciplined technique for
  restructuring an existing body of code,
   altering its internal structure without
      changing its external behavior.”
               - Martin Fowler



                     50
“Each transformation (called a 'refactoring')
        does little, but a sequence of
 transformations can produce a significant
               restructuring.”




                      51
double disabilityAmount() {
   if (_seniority < 2) return 0;
   if (_monthsDisabled > 12) return 0;
   if (_isPartTime) return 0;
   // compute the disability amount




double disabilityAmount() {
   if (isNotEligableForDisability()) return 0;
   // compute the disability amount



                      52
“Refactoring is a disciplined technique for
  restructuring an existing body of code,
   altering its internal structure without
      changing its external behavior.”
               - Martin Fowler



                     53
How do we establish that the
  behavior is unchanged?



             54
Continuous Integration
          and
Test Driven Development


          55
The term Refactoring is poorly
            used.



              56
“If somebody talks about a
 system being broken for a
couple of days while they are
       refactoring ...”


             57
“you can be pretty sure they are
      not refactoring ... “



               58
“Refactoring is a very specific
technique, founded on using
 small behavior-preserving
      transformations”
       - Martin Fowler

              59
References
    Fowler, Martin (1999). “Refactoring.” Addison-Wesley. ISBN 0-201-48567-2.
✦

    http://martinfowler.com/bliki/RefactoringMalapropism.html
✦




                                         60
Pair Programming




       61
What is Pair Programming?




           62
Two team members working on
the same code base and working
          side-by-side


              63
photo: http://www.flickr.com/photos/improveit/



                                                 64
“I told you Slashdot was more popular than Digg”
                      65
Modern software development is full of drama ...
                      66
photo: http://www.flickr.com/photos/improveit/



                                                 67
photo: http://www.flickr.com/photos/improveit/



                                                 68
The thrill of victory ...
          69
And the agony of defeat.
          70
Why is Pair Programming
       important?



          71
Pair Programming significantly
reduces the number of defects,
and greatly increase the quality
          of the code.

               72
It is, however, very difficult to
           introduce.



               73
There are many issues mostly
related to loss of personal space
      and lack of privacy.


               74
Why do we care?




       75
76
80% of the cost of software is
incurred after it has gone live.



               77
What would it mean to you if
your cost of change was linear
  rather than exponential?


              78
Thank You!




    79

More Related Content

What's hot

Beginning SCRUM for Startups
Beginning SCRUM for StartupsBeginning SCRUM for Startups
Beginning SCRUM for Startups
Pradeep Sethi
 

What's hot (20)

2020 scrum-guide-us-highlighted
2020 scrum-guide-us-highlighted2020 scrum-guide-us-highlighted
2020 scrum-guide-us-highlighted
 
Lightning Talk: An Introduction To Scrum
Lightning Talk: An Introduction To ScrumLightning Talk: An Introduction To Scrum
Lightning Talk: An Introduction To Scrum
 
A very short presentation of SCRUM
A very short presentation of SCRUMA very short presentation of SCRUM
A very short presentation of SCRUM
 
Agile Training - Scrum 101
Agile Training - Scrum 101Agile Training - Scrum 101
Agile Training - Scrum 101
 
Improve your Product Backlog Refinement (PBR) Process
Improve your Product Backlog Refinement (PBR) ProcessImprove your Product Backlog Refinement (PBR) Process
Improve your Product Backlog Refinement (PBR) Process
 
2020 scrum-guide | The Definitive Guide to Scrum: The Rules of the Game
2020 scrum-guide | The Definitive Guide to Scrum: The Rules of the Game2020 scrum-guide | The Definitive Guide to Scrum: The Rules of the Game
2020 scrum-guide | The Definitive Guide to Scrum: The Rules of the Game
 
Get Agile - Scrum for UX, Design and Development
Get Agile - Scrum for UX, Design and DevelopmentGet Agile - Scrum for UX, Design and Development
Get Agile - Scrum for UX, Design and Development
 
Scrumban - benefits of both the worlds
Scrumban - benefits of both the worldsScrumban - benefits of both the worlds
Scrumban - benefits of both the worlds
 
Beginning SCRUM for Startups
Beginning SCRUM for StartupsBeginning SCRUM for Startups
Beginning SCRUM for Startups
 
Introduction To Scrum
Introduction To ScrumIntroduction To Scrum
Introduction To Scrum
 
Black Marble Introduction To Scrum
Black Marble Introduction To ScrumBlack Marble Introduction To Scrum
Black Marble Introduction To Scrum
 
Agile Coaching Canvas
Agile Coaching CanvasAgile Coaching Canvas
Agile Coaching Canvas
 
7 Obstacles To Enterprise Agility
7 Obstacles To Enterprise Agility7 Obstacles To Enterprise Agility
7 Obstacles To Enterprise Agility
 
Introduction to Project Management with Scrum
Introduction to Project Management with ScrumIntroduction to Project Management with Scrum
Introduction to Project Management with Scrum
 
Scrum (406,439)
Scrum (406,439)Scrum (406,439)
Scrum (406,439)
 
Scrum Basics
Scrum BasicsScrum Basics
Scrum Basics
 
Microsoft + Agile (light)
Microsoft + Agile (light)Microsoft + Agile (light)
Microsoft + Agile (light)
 
Scrum by picture
Scrum by pictureScrum by picture
Scrum by picture
 
Practical Scrum course day 2
Practical Scrum course day 2Practical Scrum course day 2
Practical Scrum course day 2
 
The things we weren't told about Scrum
The things we weren't told about ScrumThe things we weren't told about Scrum
The things we weren't told about Scrum
 

Viewers also liked

Текст образца для испытания
Текст образца для испытанияТекст образца для испытания
Текст образца для испытания
Quickoffice Test
 
How effective is the combination of your product and ancillary texts
How effective is the combination of your product and ancillary textsHow effective is the combination of your product and ancillary texts
How effective is the combination of your product and ancillary texts
Markusforrest96
 
Italy14 Religious Intolerance
Italy14 Religious IntoleranceItaly14 Religious Intolerance
Italy14 Religious Intolerance
donatsac
 

Viewers also liked (17)

Agile Games
Agile GamesAgile Games
Agile Games
 
Introducing Scrum to an Organization
Introducing Scrum to an OrganizationIntroducing Scrum to an Organization
Introducing Scrum to an Organization
 
A short history of Agile software development
A short history of Agile software developmentA short history of Agile software development
A short history of Agile software development
 
Why scrum and Agile
Why scrum and AgileWhy scrum and Agile
Why scrum and Agile
 
Manual de usuario_de_gimp_
Manual de usuario_de_gimp_Manual de usuario_de_gimp_
Manual de usuario_de_gimp_
 
Exmarko
ExmarkoExmarko
Exmarko
 
Текст образца для испытания
Текст образца для испытанияТекст образца для испытания
Текст образца для испытания
 
Presentation media
Presentation media Presentation media
Presentation media
 
How effective is the combination of your product and ancillary texts
How effective is the combination of your product and ancillary textsHow effective is the combination of your product and ancillary texts
How effective is the combination of your product and ancillary texts
 
Italy14 Religious Intolerance
Italy14 Religious IntoleranceItaly14 Religious Intolerance
Italy14 Religious Intolerance
 
The SlideShare Story - Unpluggd Bangalore 7th July, 2012
The SlideShare Story - Unpluggd Bangalore 7th July, 2012The SlideShare Story - Unpluggd Bangalore 7th July, 2012
The SlideShare Story - Unpluggd Bangalore 7th July, 2012
 
Principios de Diseño de Realidad Virtual
Principios de Diseño de Realidad VirtualPrincipios de Diseño de Realidad Virtual
Principios de Diseño de Realidad Virtual
 
Lynis - Hardening and auditing for Linux, Mac and Unix - NLUUG May 2014
Lynis - Hardening and auditing for Linux, Mac and Unix - NLUUG May 2014Lynis - Hardening and auditing for Linux, Mac and Unix - NLUUG May 2014
Lynis - Hardening and auditing for Linux, Mac and Unix - NLUUG May 2014
 
Balancing Salaries and Incentive Pay
Balancing Salaries and Incentive PayBalancing Salaries and Incentive Pay
Balancing Salaries and Incentive Pay
 
LifeHackDay 2016 - Odessa: Дима Гадомский, Axon Partners
LifeHackDay 2016 - Odessa: Дима Гадомский, Axon PartnersLifeHackDay 2016 - Odessa: Дима Гадомский, Axon Partners
LifeHackDay 2016 - Odessa: Дима Гадомский, Axon Partners
 
Scottish Independence Referendum: 200 days to go
Scottish Independence Referendum: 200 days to goScottish Independence Referendum: 200 days to go
Scottish Independence Referendum: 200 days to go
 
Reflections on Dhammapada Verses
Reflections on Dhammapada VersesReflections on Dhammapada Verses
Reflections on Dhammapada Verses
 

Similar to Agile Engineering Practices

Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery applied
Mike McGarr
 
Test driven development
Test driven developmentTest driven development
Test driven development
Sunil Prasad
 

Similar to Agile Engineering Practices (20)

Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery applied
 
Continuous Integration at T3CON08
Continuous Integration at T3CON08Continuous Integration at T3CON08
Continuous Integration at T3CON08
 
Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)
 
Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)
 
Continuous Delivery Applied
Continuous Delivery AppliedContinuous Delivery Applied
Continuous Delivery Applied
 
Continuous Delivery Applied
Continuous Delivery AppliedContinuous Delivery Applied
Continuous Delivery Applied
 
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous Integration
 
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopAgile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery Workshop
 
Continuous delivery applied (DC CI User Group)
Continuous delivery applied (DC CI User Group)Continuous delivery applied (DC CI User Group)
Continuous delivery applied (DC CI User Group)
 
Software Testing, Everyone's responsibility
Software Testing, Everyone's responsibilitySoftware Testing, Everyone's responsibility
Software Testing, Everyone's responsibility
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Achieve Intelligent Test Execution: Strategies for Streamlining Regression Te...
Achieve Intelligent Test Execution: Strategies for Streamlining Regression Te...Achieve Intelligent Test Execution: Strategies for Streamlining Regression Te...
Achieve Intelligent Test Execution: Strategies for Streamlining Regression Te...
 
Release Automation: Better Quality, Faster Deployment, Amazing ROI
Release Automation: Better Quality, Faster Deployment, Amazing ROIRelease Automation: Better Quality, Faster Deployment, Amazing ROI
Release Automation: Better Quality, Faster Deployment, Amazing ROI
 
Python and test
Python and testPython and test
Python and test
 
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
 
DevOps explained
DevOps explainedDevOps explained
DevOps explained
 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery Overview
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using Vsts
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 

Agile Engineering Practices