SlideShare a Scribd company logo
1 of 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

More Related Content

Similar to 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
 

Similar to 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
 

Recently uploaded

Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...lizamodels9
 
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756dollysharma2066
 
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...Aggregage
 
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableSeo
 
Pharma Works Profile of Karan Communications
Pharma Works Profile of Karan CommunicationsPharma Works Profile of Karan Communications
Pharma Works Profile of Karan Communicationskarancommunications
 
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRLBAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRLkapoorjyoti4444
 
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRLMONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRLSeo
 
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
 
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
 
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 Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...Dipal Arora
 
It will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayIt will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayNZSG
 
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...amitlee9823
 
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
 
Famous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st CenturyFamous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st Centuryrwgiffor
 
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service AvailableDipal Arora
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with CultureSeta Wicaksana
 
Ensure the security of your HCL environment by applying the Zero Trust princi...
Ensure the security of your HCL environment by applying the Zero Trust princi...Ensure the security of your HCL environment by applying the Zero Trust princi...
Ensure the security of your HCL environment by applying the Zero Trust princi...Roland Driesen
 

Recently uploaded (20)

Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
 
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
 
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...
 
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
 
Pharma Works Profile of Karan Communications
Pharma Works Profile of Karan CommunicationsPharma Works Profile of Karan Communications
Pharma Works Profile of Karan Communications
 
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRLBAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
 
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRLMONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
 
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
 
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
 
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 Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...
 
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabiunwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
 
It will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayIt will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 May
 
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
 
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
 
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
 
Famous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st CenturyFamous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st Century
 
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with Culture
 
Ensure the security of your HCL environment by applying the Zero Trust princi...
Ensure the security of your HCL environment by applying the Zero Trust princi...Ensure the security of your HCL environment by applying the Zero Trust princi...
Ensure the security of your HCL environment by applying the Zero Trust princi...
 

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