SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

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

Último

Call Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine ServiceCall Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine Serviceritikaroy0888
 
DEPED Work From Home WORKWEEK-PLAN.docx
DEPED Work From Home  WORKWEEK-PLAN.docxDEPED Work From Home  WORKWEEK-PLAN.docx
DEPED Work From Home WORKWEEK-PLAN.docxRodelinaLaud
 
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
 
Catalogue ONG NUOC PPR DE NHAT .pdf
Catalogue ONG NUOC PPR DE NHAT      .pdfCatalogue ONG NUOC PPR DE NHAT      .pdf
Catalogue ONG NUOC PPR DE NHAT .pdfOrient Homes
 
Creating Low-Code Loan Applications using the Trisotech Mortgage Feature Set
Creating Low-Code Loan Applications using the Trisotech Mortgage Feature SetCreating Low-Code Loan Applications using the Trisotech Mortgage Feature Set
Creating Low-Code Loan Applications using the Trisotech Mortgage Feature SetDenis Gagné
 
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779Best VIP Call Girls Noida Sector 40 Call Me: 8448380779
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779Delhi Call girls
 
7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...Paul Menig
 
0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdf0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdfRenandantas16
 
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
 
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsCash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsApsara Of India
 
Tech Startup Growth Hacking 101 - Basics on Growth Marketing
Tech Startup Growth Hacking 101  - Basics on Growth MarketingTech Startup Growth Hacking 101  - Basics on Growth Marketing
Tech Startup Growth Hacking 101 - Basics on Growth MarketingShawn Pang
 
RE Capital's Visionary Leadership under Newman Leech
RE Capital's Visionary Leadership under Newman LeechRE Capital's Visionary Leadership under Newman Leech
RE Capital's Visionary Leadership under Newman LeechNewman George Leech
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Dave Litwiller
 
Grateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdfGrateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdfPaul Menig
 
Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Neil Kimberley
 
Eni 2024 1Q Results - 24.04.24 business.
Eni 2024 1Q Results - 24.04.24 business.Eni 2024 1Q Results - 24.04.24 business.
Eni 2024 1Q Results - 24.04.24 business.Eni
 
Pharma Works Profile of Karan Communications
Pharma Works Profile of Karan CommunicationsPharma Works Profile of Karan Communications
Pharma Works Profile of Karan Communicationskarancommunications
 
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service Jamshedpur
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service JamshedpurVIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service Jamshedpur
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service JamshedpurSuhani Kapoor
 
BEST ✨ Call Girls In Indirapuram Ghaziabad ✔️ 9871031762 ✔️ Escorts Service...
BEST ✨ Call Girls In  Indirapuram Ghaziabad  ✔️ 9871031762 ✔️ Escorts Service...BEST ✨ Call Girls In  Indirapuram Ghaziabad  ✔️ 9871031762 ✔️ Escorts Service...
BEST ✨ Call Girls In Indirapuram Ghaziabad ✔️ 9871031762 ✔️ Escorts Service...noida100girls
 

Último (20)

Call Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine ServiceCall Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine Service
 
DEPED Work From Home WORKWEEK-PLAN.docx
DEPED Work From Home  WORKWEEK-PLAN.docxDEPED Work From Home  WORKWEEK-PLAN.docx
DEPED Work From Home WORKWEEK-PLAN.docx
 
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...
 
Catalogue ONG NUOC PPR DE NHAT .pdf
Catalogue ONG NUOC PPR DE NHAT      .pdfCatalogue ONG NUOC PPR DE NHAT      .pdf
Catalogue ONG NUOC PPR DE NHAT .pdf
 
Creating Low-Code Loan Applications using the Trisotech Mortgage Feature Set
Creating Low-Code Loan Applications using the Trisotech Mortgage Feature SetCreating Low-Code Loan Applications using the Trisotech Mortgage Feature Set
Creating Low-Code Loan Applications using the Trisotech Mortgage Feature Set
 
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779Best VIP Call Girls Noida Sector 40 Call Me: 8448380779
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779
 
7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...
 
KestrelPro Flyer Japan IT Week 2024 (English)
KestrelPro Flyer Japan IT Week 2024 (English)KestrelPro Flyer Japan IT Week 2024 (English)
KestrelPro Flyer Japan IT Week 2024 (English)
 
0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdf0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdf
 
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...
 
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsCash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
 
Tech Startup Growth Hacking 101 - Basics on Growth Marketing
Tech Startup Growth Hacking 101  - Basics on Growth MarketingTech Startup Growth Hacking 101  - Basics on Growth Marketing
Tech Startup Growth Hacking 101 - Basics on Growth Marketing
 
RE Capital's Visionary Leadership under Newman Leech
RE Capital's Visionary Leadership under Newman LeechRE Capital's Visionary Leadership under Newman Leech
RE Capital's Visionary Leadership under Newman Leech
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
 
Grateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdfGrateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdf
 
Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023
 
Eni 2024 1Q Results - 24.04.24 business.
Eni 2024 1Q Results - 24.04.24 business.Eni 2024 1Q Results - 24.04.24 business.
Eni 2024 1Q Results - 24.04.24 business.
 
Pharma Works Profile of Karan Communications
Pharma Works Profile of Karan CommunicationsPharma Works Profile of Karan Communications
Pharma Works Profile of Karan Communications
 
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service Jamshedpur
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service JamshedpurVIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service Jamshedpur
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service Jamshedpur
 
BEST ✨ Call Girls In Indirapuram Ghaziabad ✔️ 9871031762 ✔️ Escorts Service...
BEST ✨ Call Girls In  Indirapuram Ghaziabad  ✔️ 9871031762 ✔️ Escorts Service...BEST ✨ Call Girls In  Indirapuram Ghaziabad  ✔️ 9871031762 ✔️ Escorts Service...
BEST ✨ Call Girls In Indirapuram Ghaziabad ✔️ 9871031762 ✔️ Escorts 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