SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Starting fresh every morning




           Building a new
      development image every
              morning
$> whoami
What We Are Talking About
What We Aren’t Talking About
Introducing the Beast
    Kapital has been actively developed since

    1995
    Kapital has more than 22000 classes

    (VW with ENVY has 2200)
    Kapital is more than 70 developers pushing

    changes everyday!
    Every development cycle we change 5000

    classes
    Each day, we change from 60 to 150 classes

Why Change My Image ?
    Resynchronizing the code base with the other

    developers
    Avoiding important splits from the main branch


    Checking prerequesites


    Avoiding unknown dependencies

Why Change My Image ?
    Resynchronizing the code base with the other

    developers
    Avoiding important splits from the main branch


    Checking prerequesites


    Avoiding unknown dependencies

Resynchronizing the Code
Base
    The sooner you merge, the better


    Everyday, 60 to 150 classes are changed


    Everyday, 25 change sets are applied


        Average size of a change set = 5-8 classes
    

        25*5 = 125
    

        25*8 = 200
    

    Avoiding multiple implementations for a single

    piece of functionality
Why Change My Image ?
    Resynchronizing the code base with the other

    developers
    Avoiding important splits from the main branch


    Checking prerequesites


    Avoiding unknown dependencies

Avoiding Important Splits
    Decompose code changes into smaller, more

    manageable steps
Why Change My Image ?
    Resynchronizing the code base with the other

    developers
    Avoiding important splits from the main branch


    Checking prerequesites


    Avoiding unknown dependencies

Checking Prerequisites

    Always make ENVY happy 

Why Change My Image ?
    Resynchronizing the code base with the other

    developers
    Avoiding important splits from the main branch


    Checking prerequesites


    Avoiding unknown dependencies

Avoiding Unknown
Dependencies



#{MyClassOrGlobalVariable}
     ifDefinedDo: [ :thing | thing doStuff].
            THIS IS NOT GOOD !!!
How We do it in Kapital

    Loading the top level map


    Validating the build


    A fresh image every time


    Dangers of savedowns

Introducing ENVY/Developer

    Applications and configuration maps


    Granularity = methods (class,

    application, config map)
    Great flexibility (ENVY boy talking )

How We do it in Kapital

    Loading the top level map


    Validating the build


    A fresh image every time


    Dangers of savedowns

Loading the Top Level Map

    Kapital benefits from base ENVY

    functionality

    BEWARE! ENVY is known to bite

    developers!
How we do it in Kapital

    Loading the top level map


    Validating the build


    A fresh image every time


    Dangers of savedowns

Validating the build

    Two types of testing systems


        Code driven = specific code items (SUnit
    

        style)
        Data driven = end-to-end testing
    

        (“SmokeTest”)
How we do it in Kapital

    Loading the top level map


    Validating the build


    A fresh image every time


    Dangers of savedowns

A fresh image every time

    Always ensure your code loads in a

    fresh image




    Of course, there are times where the

    image is wrong
How We do it in Kapital

    Loading the top level map


    Validating the build


    A fresh image every time


    Dangers of savedowns

Dangers of Savedowns

    Building an image is great but…


              IT TAKES TIME!
Breaking the Build …

    It will happen!


    Don’t let the build process become a

    burden
    It’s nothing more than a failing sanity

    check
… Identifying the Issue …

    3 types of failures


        Successful build, but failing tests
    

        Uncompleted build
    

        Successful build, but failed load
    
… Identifying the Issue …

    3 types of failures


        Successful build, but failing tests
    

        Uncompleted build
    

        Successful build, but failed load
    
Successful Build, but Failing
Tests

    Is your code wrong ?




    Is your data wrong ?

… Identifying the Issue …

    3 types of failures


        Successful build, but failing tests
    

        Uncompleted build
    

        Successful build, but failed load
    
Uncompleted Build

    This is Smalltalk, you can debug




    Find the offending code change first




    Typically it’s a prerequisite issue. A

    method not yet introduced, a class (or
    variable) not yet declared
… Identifying the Issue …

    3 types of failures


        Successful build, but failing tests
    

        Uncompleted build
    

        Successful build, but failed load
    
Successful Build, but Failed
Load

    The code didn’t load all the way




    Revealed by the tests run on the image

    (missing code)

    Know your SCM system well!


        ENVY does this for overrides
    
… And Fixing the Build!

    Always find the error before fixing it




    You must fix the build before you can

    validate today’s code base
… And Fixing the Build! (2)

    3 types of errors can be introduced by

    code changes:
        Calling a method not yet present
    

        Depending on code not yet released
    

        Clashing code
    
… And Fixing the Build! (2)

    3 types of errors can be introduced by

    code changes:
        Calling a method not yet present
    

        Depending on code not yet released
    

        Clashing code
    
Calling a Method Not Yet
Present
… And Fixing the Build! (2)

    3 types of errors can be introduced by

    code changes:
        Calling a method not yet present
    

        Depending on code not yet released
    

        Clashing code
    
Depending on Code Not Yet
Released
… And Fixing the Build! (2)

    3 types of errors can be introduced by

    code changes:
        Calling a method not yet present
    

        Depending on code not yet released
    

        Clashing code
    
Clashing Code

    a.k.a mismerged code




    Because some classes are centers of

    high activity
Questions ?




        yann@monclair.fr

Weitere ähnliche Inhalte

Ähnlich wie Starting Fresh Every Morning

Starting fresh every morning
Starting fresh every morningStarting fresh every morning
Starting fresh every morningESUG
 
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...Atlassian
 
High-Octane Dev Teams: Three Things You Can Do To Improve Code Quality
High-Octane Dev Teams: Three Things You Can Do To Improve Code QualityHigh-Octane Dev Teams: Three Things You Can Do To Improve Code Quality
High-Octane Dev Teams: Three Things You Can Do To Improve Code QualityAtlassian
 
Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...
Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...
Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...Eric Ries
 
The Tantric Team: Getting Your Automated Build Groove On
The Tantric Team: Getting Your Automated Build Groove OnThe Tantric Team: Getting Your Automated Build Groove On
The Tantric Team: Getting Your Automated Build Groove OnAtlassian
 
2009 05 21 The Lean Startup At SIPA
2009 05 21 The Lean Startup At SIPA2009 05 21 The Lean Startup At SIPA
2009 05 21 The Lean Startup At SIPAEric Ries
 
Presentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss ToolsPresentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss ToolsGanesh Samarthyam
 
Static analysis as means of improving code quality
Static analysis as means of improving code quality Static analysis as means of improving code quality
Static analysis as means of improving code quality Andrey Karpov
 
2009 06 01 The Lean Startup Texas Edition
2009 06 01 The Lean Startup Texas Edition2009 06 01 The Lean Startup Texas Edition
2009 06 01 The Lean Startup Texas EditionEric Ries
 
Clearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad DecisionsClearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad DecisionsJonathan Hitchcock
 
Building a JavaScript Library
Building a JavaScript LibraryBuilding a JavaScript Library
Building a JavaScript Libraryjeresig
 
Workshop fight legacy code write unit test
Workshop fight legacy code write unit testWorkshop fight legacy code write unit test
Workshop fight legacy code write unit testTung Nguyen Thanh
 
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015][XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]Agile đây Vietnam
 
How EVERFI Moved from No Automation to Continuous Test Generation in 9 Months
How EVERFI Moved from No Automation to Continuous Test Generation in 9 MonthsHow EVERFI Moved from No Automation to Continuous Test Generation in 9 Months
How EVERFI Moved from No Automation to Continuous Test Generation in 9 MonthsApplitools
 
Scaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentScaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentIBM UrbanCode Products
 
Desktop Applications with NetBeans
Desktop Applications with NetBeansDesktop Applications with NetBeans
Desktop Applications with NetBeansHuu Bang Le Phan
 
Applying Domain Driven Design on Asp.net MVC – Part 1: Asp.net MVC
Applying Domain Driven Design on Asp.net MVC – Part 1: Asp.net MVCApplying Domain Driven Design on Asp.net MVC – Part 1: Asp.net MVC
Applying Domain Driven Design on Asp.net MVC – Part 1: Asp.net MVCMohamed Meligy
 

Ähnlich wie Starting Fresh Every Morning (20)

Starting fresh every morning
Starting fresh every morningStarting fresh every morning
Starting fresh every morning
 
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...
 
High-Octane Dev Teams: Three Things You Can Do To Improve Code Quality
High-Octane Dev Teams: Three Things You Can Do To Improve Code QualityHigh-Octane Dev Teams: Three Things You Can Do To Improve Code Quality
High-Octane Dev Teams: Three Things You Can Do To Improve Code Quality
 
Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...
Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...
Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...
 
The Tantric Team: Getting Your Automated Build Groove On
The Tantric Team: Getting Your Automated Build Groove OnThe Tantric Team: Getting Your Automated Build Groove On
The Tantric Team: Getting Your Automated Build Groove On
 
2009 05 21 The Lean Startup At SIPA
2009 05 21 The Lean Startup At SIPA2009 05 21 The Lean Startup At SIPA
2009 05 21 The Lean Startup At SIPA
 
Presentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss ToolsPresentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss Tools
 
Static analysis as means of improving code quality
Static analysis as means of improving code quality Static analysis as means of improving code quality
Static analysis as means of improving code quality
 
2009 06 01 The Lean Startup Texas Edition
2009 06 01 The Lean Startup Texas Edition2009 06 01 The Lean Startup Texas Edition
2009 06 01 The Lean Startup Texas Edition
 
Clearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad DecisionsClearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad Decisions
 
Building a JavaScript Library
Building a JavaScript LibraryBuilding a JavaScript Library
Building a JavaScript Library
 
Mocking - Visug session
Mocking - Visug sessionMocking - Visug session
Mocking - Visug session
 
Workshop fight legacy code write unit test
Workshop fight legacy code write unit testWorkshop fight legacy code write unit test
Workshop fight legacy code write unit test
 
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015][XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
 
How EVERFI Moved from No Automation to Continuous Test Generation in 9 Months
How EVERFI Moved from No Automation to Continuous Test Generation in 9 MonthsHow EVERFI Moved from No Automation to Continuous Test Generation in 9 Months
How EVERFI Moved from No Automation to Continuous Test Generation in 9 Months
 
Integreation
IntegreationIntegreation
Integreation
 
Scaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentScaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel Development
 
CI
CICI
CI
 
Desktop Applications with NetBeans
Desktop Applications with NetBeansDesktop Applications with NetBeans
Desktop Applications with NetBeans
 
Applying Domain Driven Design on Asp.net MVC – Part 1: Asp.net MVC
Applying Domain Driven Design on Asp.net MVC – Part 1: Asp.net MVCApplying Domain Driven Design on Asp.net MVC – Part 1: Asp.net MVC
Applying Domain Driven Design on Asp.net MVC – Part 1: Asp.net MVC
 

Kürzlich hochgeladen

Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1kcpayne
 
Business Model Canvas (BMC)- A new venture concept
Business Model Canvas (BMC)-  A new venture conceptBusiness Model Canvas (BMC)-  A new venture concept
Business Model Canvas (BMC)- A new venture conceptP&CO
 
Falcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to ProsperityFalcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to Prosperityhemanthkumar470700
 
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...daisycvs
 
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...amitlee9823
 
How to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityHow to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityEric T. Tung
 
Falcon Invoice Discounting: Empowering Your Business Growth
Falcon Invoice Discounting: Empowering Your Business GrowthFalcon Invoice Discounting: Empowering Your Business Growth
Falcon Invoice Discounting: Empowering Your Business GrowthFalcon investment
 
Cracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptxCracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptxWorkforce Group
 
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...amitlee9823
 
Dr. Admir Softic_ presentation_Green Club_ENG.pdf
Dr. Admir Softic_ presentation_Green Club_ENG.pdfDr. Admir Softic_ presentation_Green Club_ENG.pdf
Dr. Admir Softic_ presentation_Green Club_ENG.pdfAdmir Softic
 
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai KuwaitThe Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwaitdaisycvs
 
RSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors DataRSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors DataExhibitors Data
 
Cheap Rate Call Girls In Noida Sector 62 Metro 959961乂3876
Cheap Rate Call Girls In Noida Sector 62 Metro 959961乂3876Cheap Rate Call Girls In Noida Sector 62 Metro 959961乂3876
Cheap Rate Call Girls In Noida Sector 62 Metro 959961乂3876dlhescort
 
Uneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration PresentationUneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration Presentationuneakwhite
 
PHX May 2024 Corporate Presentation Final
PHX May 2024 Corporate Presentation FinalPHX May 2024 Corporate Presentation Final
PHX May 2024 Corporate Presentation FinalPanhandleOilandGas
 
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service NoidaCall Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service Noidadlhescort
 
Value Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsValue Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsP&CO
 
Phases of Negotiation .pptx
 Phases of Negotiation .pptx Phases of Negotiation .pptx
Phases of Negotiation .pptxnandhinijagan9867
 
Malegaon Call Girls Service ☎ ️82500–77686 ☎️ Enjoy 24/7 Escort Service
Malegaon Call Girls Service ☎ ️82500–77686 ☎️ Enjoy 24/7 Escort ServiceMalegaon Call Girls Service ☎ ️82500–77686 ☎️ Enjoy 24/7 Escort Service
Malegaon Call Girls Service ☎ ️82500–77686 ☎️ Enjoy 24/7 Escort ServiceDamini Dixit
 

Kürzlich hochgeladen (20)

Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1
 
Business Model Canvas (BMC)- A new venture concept
Business Model Canvas (BMC)-  A new venture conceptBusiness Model Canvas (BMC)-  A new venture concept
Business Model Canvas (BMC)- A new venture concept
 
Falcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to ProsperityFalcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to Prosperity
 
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
 
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
 
How to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityHow to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League City
 
Falcon Invoice Discounting: Empowering Your Business Growth
Falcon Invoice Discounting: Empowering Your Business GrowthFalcon Invoice Discounting: Empowering Your Business Growth
Falcon Invoice Discounting: Empowering Your Business Growth
 
Cracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptxCracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptx
 
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
 
Dr. Admir Softic_ presentation_Green Club_ENG.pdf
Dr. Admir Softic_ presentation_Green Club_ENG.pdfDr. Admir Softic_ presentation_Green Club_ENG.pdf
Dr. Admir Softic_ presentation_Green Club_ENG.pdf
 
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai KuwaitThe Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
 
RSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors DataRSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors Data
 
Cheap Rate Call Girls In Noida Sector 62 Metro 959961乂3876
Cheap Rate Call Girls In Noida Sector 62 Metro 959961乂3876Cheap Rate Call Girls In Noida Sector 62 Metro 959961乂3876
Cheap Rate Call Girls In Noida Sector 62 Metro 959961乂3876
 
Uneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration PresentationUneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration Presentation
 
(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7
(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7
(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7
 
PHX May 2024 Corporate Presentation Final
PHX May 2024 Corporate Presentation FinalPHX May 2024 Corporate Presentation Final
PHX May 2024 Corporate Presentation Final
 
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service NoidaCall Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
 
Value Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsValue Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and pains
 
Phases of Negotiation .pptx
 Phases of Negotiation .pptx Phases of Negotiation .pptx
Phases of Negotiation .pptx
 
Malegaon Call Girls Service ☎ ️82500–77686 ☎️ Enjoy 24/7 Escort Service
Malegaon Call Girls Service ☎ ️82500–77686 ☎️ Enjoy 24/7 Escort ServiceMalegaon Call Girls Service ☎ ️82500–77686 ☎️ Enjoy 24/7 Escort Service
Malegaon Call Girls Service ☎ ️82500–77686 ☎️ Enjoy 24/7 Escort Service
 

Starting Fresh Every Morning

  • 1. Starting fresh every morning Building a new development image every morning
  • 3. What We Are Talking About
  • 4. What We Aren’t Talking About
  • 5. Introducing the Beast Kapital has been actively developed since  1995 Kapital has more than 22000 classes  (VW with ENVY has 2200) Kapital is more than 70 developers pushing  changes everyday! Every development cycle we change 5000  classes Each day, we change from 60 to 150 classes 
  • 6. Why Change My Image ? Resynchronizing the code base with the other  developers Avoiding important splits from the main branch  Checking prerequesites  Avoiding unknown dependencies 
  • 7. Why Change My Image ? Resynchronizing the code base with the other  developers Avoiding important splits from the main branch  Checking prerequesites  Avoiding unknown dependencies 
  • 8. Resynchronizing the Code Base The sooner you merge, the better  Everyday, 60 to 150 classes are changed  Everyday, 25 change sets are applied  Average size of a change set = 5-8 classes  25*5 = 125  25*8 = 200  Avoiding multiple implementations for a single  piece of functionality
  • 9. Why Change My Image ? Resynchronizing the code base with the other  developers Avoiding important splits from the main branch  Checking prerequesites  Avoiding unknown dependencies 
  • 10. Avoiding Important Splits Decompose code changes into smaller, more  manageable steps
  • 11. Why Change My Image ? Resynchronizing the code base with the other  developers Avoiding important splits from the main branch  Checking prerequesites  Avoiding unknown dependencies 
  • 12. Checking Prerequisites Always make ENVY happy  
  • 13. Why Change My Image ? Resynchronizing the code base with the other  developers Avoiding important splits from the main branch  Checking prerequesites  Avoiding unknown dependencies 
  • 14. Avoiding Unknown Dependencies #{MyClassOrGlobalVariable} ifDefinedDo: [ :thing | thing doStuff]. THIS IS NOT GOOD !!!
  • 15. How We do it in Kapital Loading the top level map  Validating the build  A fresh image every time  Dangers of savedowns 
  • 16. Introducing ENVY/Developer Applications and configuration maps  Granularity = methods (class,  application, config map) Great flexibility (ENVY boy talking ) 
  • 17. How We do it in Kapital Loading the top level map  Validating the build  A fresh image every time  Dangers of savedowns 
  • 18. Loading the Top Level Map Kapital benefits from base ENVY  functionality BEWARE! ENVY is known to bite  developers!
  • 19. How we do it in Kapital Loading the top level map  Validating the build  A fresh image every time  Dangers of savedowns 
  • 20. Validating the build Two types of testing systems  Code driven = specific code items (SUnit  style) Data driven = end-to-end testing  (“SmokeTest”)
  • 21. How we do it in Kapital Loading the top level map  Validating the build  A fresh image every time  Dangers of savedowns 
  • 22. A fresh image every time Always ensure your code loads in a  fresh image Of course, there are times where the  image is wrong
  • 23. How We do it in Kapital Loading the top level map  Validating the build  A fresh image every time  Dangers of savedowns 
  • 24. Dangers of Savedowns Building an image is great but…  IT TAKES TIME!
  • 25. Breaking the Build … It will happen!  Don’t let the build process become a  burden It’s nothing more than a failing sanity  check
  • 26. … Identifying the Issue … 3 types of failures  Successful build, but failing tests  Uncompleted build  Successful build, but failed load 
  • 27. … Identifying the Issue … 3 types of failures  Successful build, but failing tests  Uncompleted build  Successful build, but failed load 
  • 28. Successful Build, but Failing Tests Is your code wrong ?  Is your data wrong ? 
  • 29. … Identifying the Issue … 3 types of failures  Successful build, but failing tests  Uncompleted build  Successful build, but failed load 
  • 30. Uncompleted Build This is Smalltalk, you can debug  Find the offending code change first  Typically it’s a prerequisite issue. A  method not yet introduced, a class (or variable) not yet declared
  • 31. … Identifying the Issue … 3 types of failures  Successful build, but failing tests  Uncompleted build  Successful build, but failed load 
  • 32. Successful Build, but Failed Load The code didn’t load all the way  Revealed by the tests run on the image  (missing code) Know your SCM system well!  ENVY does this for overrides 
  • 33. … And Fixing the Build! Always find the error before fixing it  You must fix the build before you can  validate today’s code base
  • 34. … And Fixing the Build! (2) 3 types of errors can be introduced by  code changes: Calling a method not yet present  Depending on code not yet released  Clashing code 
  • 35. … And Fixing the Build! (2) 3 types of errors can be introduced by  code changes: Calling a method not yet present  Depending on code not yet released  Clashing code 
  • 36. Calling a Method Not Yet Present
  • 37. … And Fixing the Build! (2) 3 types of errors can be introduced by  code changes: Calling a method not yet present  Depending on code not yet released  Clashing code 
  • 38. Depending on Code Not Yet Released
  • 39. … And Fixing the Build! (2) 3 types of errors can be introduced by  code changes: Calling a method not yet present  Depending on code not yet released  Clashing code 
  • 40. Clashing Code a.k.a mismerged code  Because some classes are centers of  high activity
  • 41. Questions ? yann@monclair.fr