SlideShare a Scribd company logo
1 of 154
Slaying the Legacy Dragon
Practical Lessons in Replacing Old Software

Tim Berglund
Housekeeping
Housekeeping
    Audience
Housekeeping
    Audience
   via Negativa
Housekeeping
        Audience
      via Negativa
 Disable write-only mode
Housekeeping
          Audience
        via Negativa
 Disable write-only mode
        Tim Berglund
    www.augusttechgroup.com
tim.berglund@augusttechgroup.com
            @tlberglund
Housekeeping
            Audience
          via Negativa
   Disable write-only mode
          Tim Berglund
      www.augusttechgroup.com
  tim.berglund@augusttechgroup.com
              @tlberglund

Sponsored by No Fluff Just Stuff
Slaying the Dragon
Slaying the Dragon
Slaying the Dragon

St. George
Slaying the Dragon

St. George

Untestable
Slaying the Dragon

St. George

Untestable
  Brittle
Slaying the Dragon

    St. George

    Untestable
      Brittle
Orphaned framework
Slaying the Dragon

    St. George

    Untestable
       Brittle
Orphaned framework
  Low productivity
Slaying the Dragon

    St. George

    Untestable
       Brittle
Orphaned framework
  Low productivity
     Downtime
Slaying the Dragon

    St. George

    Untestable
       Brittle
Orphaned framework
  Low productivity
     Downtime
 Poor performance
Slaying the Dragon

    St. George

    Untestable
       Brittle
Orphaned framework
  Low productivity
     Downtime
 Poor performance

  Frustrated Users
Slaying the Dragon

     St. George

    Untestable
       Brittle
Orphaned framework
  Low productivity
     Downtime
 Poor performance

  Frustrated Users
A Frustrated Business
Not a Guerrilla Action
Not a Guerrilla Action
          Che was unit testing in Groovy
Not a Guerrilla Action
          Che was unit testing in Groovy

          Executive buy-in
Not a Guerrilla Action
          Che was unit testing in Groovy

          Executive buy-in

          Being St. George
Not a Guerrilla Action
          Che was unit testing in Groovy

          Executive buy-in

          Being St. George

          That’s a big dragon
Not a Guerrilla Action
          Che was unit testing in Groovy

          Executive buy-in

          Being St. George

          That’s a big dragon

          The king’s daughter
Business Drivers
Business Drivers
Business Drivers

Writing tests in Groovy?
Business Drivers

Writing tests in Groovy?

For Anything of Scale
Business Drivers

Writing tests in Groovy?

For Anything of Scale

  Drivers must be KNOWN
Business Drivers

Writing tests in Groovy?

For Anything of Scale

  Drivers must be KNOWN

  Drivers must be ARTICULATED
Business Drivers

Writing tests in Groovy?

For Anything of Scale

  Drivers must be KNOWN

  Drivers must be ARTICULATED

  Drivers must be REPEATED
Reasons for a Reboot
Reasons for a Reboot
Reasons for a Reboot

         EOL
Reasons for a Reboot

         EOL
         CIO
Reasons for a Reboot

                EOL
                CIO
 Recruiting: it’s not them, it’s you
Reasons for a Reboot

                EOL
                CIO
 Recruiting: it’s not them, it’s you
   Nonfunctional expectations
Reasons for a Reboot

                EOL
                CIO
 Recruiting: it’s not them, it’s you
   Nonfunctional expectations
      Technology limitations
Reconceptualizing
Reconceptualizing
Don’t keep it the same!
Don’t change it!
Don’t change it!
Don’t change it!
Don’t change it!
Don’t change it!
Tacit Knowledge
Don’t change it!
Tacit Knowledge

User habit
Don’t change it!
Tacit Knowledge

User habit

Frustrating—but familiar
Don’t change it!
Tacit Knowledge

User habit

Frustrating—but familiar

Value the legacy system!
Don’t change it!
Tacit Knowledge

User habit

Frustrating—but familiar

Value the legacy system!




             http://www.joelonsoftware.com/articles/fog0000000
Choosing a Platform
Choosing by Hipness
Choosing by Team
  Capabilities
Platform Capabilities
Platform Capabilities
Prototyping
Prototyping
The Dragon Itself
The Dragon Itself
NOTE: this talk contains no actual
       dragon battle plans.
Database Migration
Database Migration
When the Legacy
Schema Won’t Die
When the Legacy
Schema Won’t Die
Clever ORM Mapping
Clever ORM Mapping
Legacy Refactoring
Legacy Refactoring
         Normally a dark art
Legacy Refactoring
         Normally a dark art

         Possible with tools and discipline
Legacy Refactoring
         Normally a dark art

         Possible with tools and discipline

          <shameless-plug />
Legacy Refactoring
         Normally a dark art

         Possible with tools and discipline

          <shameless-plug />

           There is hope!
Legacy Migration
Legacy Migration
Legacy Migration
Two Databases Coexist
Legacy Migration
Two Databases Coexist

Triggers for synchronization
Legacy Migration
Two Databases Coexist

Triggers for synchronization

Old schema withers on the vine
Legacy Migration
Two Databases Coexist

Triggers for synchronization

Old schema withers on the vine

Arduous but well worth it
When Triggers Attack
NoSQL
NoSQL
NoSQL
NoSQL
NoSQL
NoSQL
NoSQL




http://nosql.mypopescu.com/
Schema Change
Schema Change
Web Services
Web Services
People Problems
Using Your Existing Team
Using Your Existing Team
Are skills available to hire?
Are skills available to hire?
Red Team vs. Blue Team
Red Team vs. Blue Team

Legacy Team
Red Team vs. Blue Team

Legacy Team

Migration Team
Red Team vs. Blue Team

Legacy Team

Migration Team

Valuing the legacy system
Red Team vs. Blue Team

Legacy Team

Migration Team

Valuing the legacy system

Good Blue Players
Red Team vs. Blue Team

Legacy Team

Migration Team

Valuing the legacy system

Good Blue Players

Recalcitrant Blue Players
Red Team vs. Blue Team

Legacy Team

Migration Team

Valuing the legacy system

Good Blue Players

Recalcitrant Blue Players

Untrainable Blue Players
An Anxious Team
An Anxious Team
Bowen Theory
An Anxious Team
Bowen Theory

Results of Anxiety
An Anxious Team
Bowen Theory

Results of Anxiety
  Decreased ability to learn
An Anxious Team
Bowen Theory

Results of Anxiety
  Decreased ability to learn
  Demands for certainty
An Anxious Team
Bowen Theory

Results of Anxiety
  Decreased ability to learn
  Demands for certainty
  Either-or thinking
An Anxious Team
Bowen Theory

Results of Anxiety
  Decreased ability to learn
  Demands for certainty
  Either-or thinking
  Desire for quick fix
An Anxious Team
Bowen Theory

Results of Anxiety
  Decreased ability to learn
  Demands for certainty
  Either-or thinking
  Desire for quick fix
  Defensive behavior
An Anxious Team
Bowen Theory

Results of Anxiety
  Decreased ability to learn
  Demands for certainty
  Either-or thinking
  Desire for quick fix
  Defensive behavior
  Reduced imagination
An Anxious Team
Bowen Theory

Results of Anxiety
  Decreased ability to learn
  Demands for certainty
  Either-or thinking
  Desire for quick fix
  Defensive behavior
  Reduced imagination
  You are dumb and mean
An Anxious Team
Bowen Theory

Results of Anxiety
  Decreased ability to learn
  Demands for certainty
  Either-or thinking
  Desire for quick fix
  Defensive behavior
  Reduced imagination
  You are dumb and mean

Solutions
An Anxious Team
Bowen Theory

Results of Anxiety
  Decreased ability to learn
  Demands for certainty
  Either-or thinking
  Desire for quick fix
  Defensive behavior
  Reduced imagination
  You are dumb and mean

Solutions
  Is it rational?
An Anxious Team
Bowen Theory

Results of Anxiety
  Decreased ability to learn
  Demands for certainty
  Either-or thinking
  Desire for quick fix
  Defensive behavior
  Reduced imagination
  You are dumb and mean

Solutions
  Is it rational?
  Information
An Anxious Team
Bowen Theory

Results of Anxiety
  Decreased ability to learn
  Demands for certainty
  Either-or thinking
  Desire for quick fix
  Defensive behavior
  Reduced imagination
  You are dumb and mean

Solutions
  Is it rational?
  Information
  Deal with vectors
Pitfalls
Pitfalls
Second System Effect
Second System Effect
      Adde parvum parvo
      magnus acervus erit!
Second System Effect

        srsly!
Second System Effect
   Ovid sez: “Add a little to
   a little and there will be
   a big pile.”
Overpromising
Overpromising
Motivations
Overpromising
Motivations
 Sealing the deal
Overpromising
Motivations
 Sealing the deal
 Being a hero
Overpromising
Motivations
 Sealing the deal
 Being a hero
 Sunny optimism
Overpromising
Motivations
 Sealing the deal
 Being a hero
 Sunny optimism

Dimensions
Overpromising
Motivations
 Sealing the deal
 Being a hero
 Sunny optimism

Dimensions
 Delivery time
Overpromising
Motivations
 Sealing the deal
 Being a hero
 Sunny optimism

Dimensions
 Delivery time
 Functionality
Overpromising
Motivations
 Sealing the deal
 Being a hero
 Sunny optimism

Dimensions
 Delivery time
 Functionality
 Nonfunctional improvements
Overpromising
Motivations
 Sealing the deal
 Being a hero
 Sunny optimism

Dimensions
 Delivery time
 Functionality
 Nonfunctional improvements

Solutions
Overpromising
Motivations
 Sealing the deal
 Being a hero
 Sunny optimism

Dimensions
 Delivery time
 Functionality
 Nonfunctional improvements

Solutions
 Iterate and measure
Overpromising
Motivations
 Sealing the deal
 Being a hero
 Sunny optimism

Dimensions
 Delivery time
 Functionality
 Nonfunctional improvements

Solutions
 Iterate and measure
 Publish incremental results
Overpromising
Motivations
 Sealing the deal
 Being a hero
 Sunny optimism

Dimensions
 Delivery time
 Functionality
 Nonfunctional improvements

Solutions
 Iterate and measure
 Publish incremental results
 Focus on business drivers
The Dragon, Slain
Thank You
            Tim Berglund
        www.augusttechgroup.com
    tim.berglund@augusttechgroup.com
                @tlberglund


Sponsored by No Fluff Just Stuff
Photo Credits
Smaug Destroying Laketown
http://thespectacleblog.wordpress.com/2009/03/12/the-best-monsters-in-kid-lit/

1950s Era Kitchen of Questionable Sexual Politics
http://www.vintageadbrowser.com/household-ads-1950s#ad2x37yn4diylmqj

St. George and the Dragon
http://www.fromoldbooks.org/Cassell-MagazineOfArt/pages/337-St.-George-and-the-Dragon/

Che Guevara
http://www3.uakron.edu/worldciv/pascher/che.html

Typewriter Ad
http://www.vintageadbrowser.com/office-ads-1950s#adbz3ufs8ths6l8k

Slinky
http://www.vintageadbrowser.com/tools-ads-1950s/2#ad4g1wzxkuxkuuy0

Platform Shoe
http://www.flickr.com/photos/mediaeater/145813815/

Hipster
http://www.flickr.com/photos/jalex_photo/2102264370/

Truck, Vines, and Oil Cans
http://www.flickr.com/photos/m-louis/2065730338/sizes/l/

Rusty Oil Drums
http://www.flickr.com/photos/carsten_tb/3332082580/
Photo Credits
Painting Car
http://www.flickr.com/photos/schudio/3182465850/

Credible Hulk
http://www.flickr.com/photos/marcoveringa/3243701953/

Marine Corps Drill
http://www.flickr.com/photos/sis/121704669/

Vintage Circus Ad
http://www.vintageadbrowser.com/entertainment-ads-misc-years/16#admqdba5a2efbu10

Red Team vs. Blue Team
http://news.filefront.com/the-red-vs-blue-team-calls-it-quits/

Pitfall
http://www.flickr.com/photos/arkestra/323314605/

Ovid
http://commons.wikimedia.org/wiki/File:Latin_Poet_Ovid.jpg

Vintage Strange Contraption Ad
http://www.vintageadbrowser.com/electronics-ads-1940s/61#adj2cm4xmpjmhnyb

Blob
http://www.flickr.com/photos/zen/513338540/

Gears
http://www.flickr.com/photos/tim_d/155441805/

More Related Content

Viewers also liked

Mainframe Optimization in 2017
Mainframe Optimization in 2017Mainframe Optimization in 2017
Mainframe Optimization in 2017Precisely
 
Legacy Systems in Software Engineering SE26
Legacy Systems in Software Engineering SE26Legacy Systems in Software Engineering SE26
Legacy Systems in Software Engineering SE26koolkampus
 
Migrating Legacy Applications to AWS Cloud: Strategies and Challenges
Migrating Legacy Applications to AWS Cloud: Strategies and ChallengesMigrating Legacy Applications to AWS Cloud: Strategies and Challenges
Migrating Legacy Applications to AWS Cloud: Strategies and ChallengesOSSCube
 
Tugbapalta
TugbapaltaTugbapalta
Tugbapaltayardimt
 
IncPot: Social Media Analytical Center
IncPot: Social Media Analytical Center IncPot: Social Media Analytical Center
IncPot: Social Media Analytical Center Sneh Sharma
 
Paragrafyn Yapysy
Paragrafyn YapysyParagrafyn Yapysy
Paragrafyn Yapysyyardimt
 
Ses Olaylari Talikulekoglu
Ses Olaylari TalikulekogluSes Olaylari Talikulekoglu
Ses Olaylari Talikulekogluyardimt
 
New Horizons Summer 2009 Presentation
New Horizons Summer 2009 PresentationNew Horizons Summer 2009 Presentation
New Horizons Summer 2009 Presentation4orphans
 
いろいろ引き出し作って見ました
いろいろ引き出し作って見ましたいろいろ引き出し作って見ました
いろいろ引き出し作って見ましたMutsumi IWAISHI
 
Social Media Strategy
Social Media StrategySocial Media Strategy
Social Media Strategypandec
 
超簡單電子郵件管理
超簡單電子郵件管理超簡單電子郵件管理
超簡單電子郵件管理Madeleine Lee
 
SöZcüKte Anlam
SöZcüKte AnlamSöZcüKte Anlam
SöZcüKte Anlamyardimt
 
20100227 U Xcamp Seoul
20100227 U Xcamp Seoul20100227 U Xcamp Seoul
20100227 U Xcamp Seoulweizhen
 
The DNA of The Greek CFO - Ernst &amp; Young
The DNA of The Greek CFO - Ernst &amp; YoungThe DNA of The Greek CFO - Ernst &amp; Young
The DNA of The Greek CFO - Ernst &amp; Youngddelonas
 
Kelime çEşItleri
Kelime çEşItleriKelime çEşItleri
Kelime çEşItleriyardimt
 
Mevlananin Ogutlari
Mevlananin OgutlariMevlananin Ogutlari
Mevlananin Ogutlariyardimt
 

Viewers also liked (19)

Mainframe Optimization in 2017
Mainframe Optimization in 2017Mainframe Optimization in 2017
Mainframe Optimization in 2017
 
Legacy Systems in Software Engineering SE26
Legacy Systems in Software Engineering SE26Legacy Systems in Software Engineering SE26
Legacy Systems in Software Engineering SE26
 
Migrating Legacy Applications to AWS Cloud: Strategies and Challenges
Migrating Legacy Applications to AWS Cloud: Strategies and ChallengesMigrating Legacy Applications to AWS Cloud: Strategies and Challenges
Migrating Legacy Applications to AWS Cloud: Strategies and Challenges
 
IVC Engages 21st Century
IVC Engages 21st CenturyIVC Engages 21st Century
IVC Engages 21st Century
 
Tugbapalta
TugbapaltaTugbapalta
Tugbapalta
 
IncPot: Social Media Analytical Center
IncPot: Social Media Analytical Center IncPot: Social Media Analytical Center
IncPot: Social Media Analytical Center
 
Paragrafyn Yapysy
Paragrafyn YapysyParagrafyn Yapysy
Paragrafyn Yapysy
 
Ses Olaylari Talikulekoglu
Ses Olaylari TalikulekogluSes Olaylari Talikulekoglu
Ses Olaylari Talikulekoglu
 
New Horizons Summer 2009 Presentation
New Horizons Summer 2009 PresentationNew Horizons Summer 2009 Presentation
New Horizons Summer 2009 Presentation
 
いろいろ引き出し作って見ました
いろいろ引き出し作って見ましたいろいろ引き出し作って見ました
いろいろ引き出し作って見ました
 
Social Media Strategy
Social Media StrategySocial Media Strategy
Social Media Strategy
 
超簡單電子郵件管理
超簡單電子郵件管理超簡單電子郵件管理
超簡單電子郵件管理
 
SöZcüKte Anlam
SöZcüKte AnlamSöZcüKte Anlam
SöZcüKte Anlam
 
20100227 U Xcamp Seoul
20100227 U Xcamp Seoul20100227 U Xcamp Seoul
20100227 U Xcamp Seoul
 
F Ler
F  LerF  Ler
F Ler
 
The DNA of The Greek CFO - Ernst &amp; Young
The DNA of The Greek CFO - Ernst &amp; YoungThe DNA of The Greek CFO - Ernst &amp; Young
The DNA of The Greek CFO - Ernst &amp; Young
 
Kelime çEşItleri
Kelime çEşItleriKelime çEşItleri
Kelime çEşItleri
 
Building geo registered-x3_d
Building geo registered-x3_dBuilding geo registered-x3_d
Building geo registered-x3_d
 
Mevlananin Ogutlari
Mevlananin OgutlariMevlananin Ogutlari
Mevlananin Ogutlari
 

Similar to Slaying The Legacy Dragon: Practical Lessons in Replacing Old Software

Devops, The future is here, it's just not evenly distributed
Devops, The future is here, it's just not evenly distributedDevops, The future is here, it's just not evenly distributed
Devops, The future is here, it's just not evenly distributedKris Buytaert
 
Guerrilla portfolio management
Guerrilla portfolio managementGuerrilla portfolio management
Guerrilla portfolio managementAlberto Brandolini
 
Devops is not about Tooling
Devops is not about ToolingDevops is not about Tooling
Devops is not about ToolingKris Buytaert
 
Can we fix dev-oops ?
Can we fix dev-oops ?Can we fix dev-oops ?
Can we fix dev-oops ?Kris Buytaert
 
Is there a future for devops ?
Is there a future for devops ?Is there a future for devops ?
Is there a future for devops ?Kris Buytaert
 
Devops its not about the tooling
Devops its not about the toolingDevops its not about the tooling
Devops its not about the toolingBram Vogelaar
 
Adopting Devops , Stories from the trenches
Adopting Devops , Stories from the trenchesAdopting Devops , Stories from the trenches
Adopting Devops , Stories from the trenchesKris Buytaert
 
Taming a beast - Cloudnative London 2018
Taming a beast - Cloudnative London 2018Taming a beast - Cloudnative London 2018
Taming a beast - Cloudnative London 2018Mike Chernev
 
Money, Process, and Culture- Tech 20/20 June, 2012
Money, Process, and Culture- Tech 20/20 June, 2012Money, Process, and Culture- Tech 20/20 June, 2012
Money, Process, and Culture- Tech 20/20 June, 2012Adrian Carr
 
SRE Lessons for the Enterprise
SRE Lessons for the Enterprise SRE Lessons for the Enterprise
SRE Lessons for the Enterprise Rundeck
 
Devops is a Security Requirement
Devops is a Security RequirementDevops is a Security Requirement
Devops is a Security RequirementKris Buytaert
 
Devops 101 QA with Kris Buytaert
Devops 101 QA  with Kris BuytaertDevops 101 QA  with Kris Buytaert
Devops 101 QA with Kris BuytaertKris Buytaert
 
Am I a Brilliant Jerk?
Am I a Brilliant Jerk?Am I a Brilliant Jerk?
Am I a Brilliant Jerk?C4Media
 
How to build the wrong thing faster and learn from it keynote by David Hussma...
How to build the wrong thing faster and learn from it keynote by David Hussma...How to build the wrong thing faster and learn from it keynote by David Hussma...
How to build the wrong thing faster and learn from it keynote by David Hussma...ProductCamp Twin Cities
 
Clean Code - 5
Clean Code - 5Clean Code - 5
Clean Code - 5Don Kim
 
Bridging the Distance through Agile Game Development
Bridging the Distance through Agile Game DevelopmentBridging the Distance through Agile Game Development
Bridging the Distance through Agile Game DevelopmentFinnur Magnusson
 
Building on the Shoulders of Giants: the Story of Bitbucket Pipelines
Building on the Shoulders of Giants: the Story of Bitbucket PipelinesBuilding on the Shoulders of Giants: the Story of Bitbucket Pipelines
Building on the Shoulders of Giants: the Story of Bitbucket PipelinesAtlassian
 
The Agile Manifesto in the Star Wars Universe
The Agile Manifesto in the Star Wars UniverseThe Agile Manifesto in the Star Wars Universe
The Agile Manifesto in the Star Wars UniverseAaron Griffith
 
Insights Into the Creative Process
Insights Into the Creative ProcessInsights Into the Creative Process
Insights Into the Creative ProcessPaul Schumann
 

Similar to Slaying The Legacy Dragon: Practical Lessons in Replacing Old Software (20)

Devops, The future is here, it's just not evenly distributed
Devops, The future is here, it's just not evenly distributedDevops, The future is here, it's just not evenly distributed
Devops, The future is here, it's just not evenly distributed
 
Guerrilla portfolio management
Guerrilla portfolio managementGuerrilla portfolio management
Guerrilla portfolio management
 
Devops is not about Tooling
Devops is not about ToolingDevops is not about Tooling
Devops is not about Tooling
 
Can we fix dev-oops ?
Can we fix dev-oops ?Can we fix dev-oops ?
Can we fix dev-oops ?
 
Is there a future for devops ?
Is there a future for devops ?Is there a future for devops ?
Is there a future for devops ?
 
Devops its not about the tooling
Devops its not about the toolingDevops its not about the tooling
Devops its not about the tooling
 
Adopting Devops , Stories from the trenches
Adopting Devops , Stories from the trenchesAdopting Devops , Stories from the trenches
Adopting Devops , Stories from the trenches
 
Taming a beast - Cloudnative London 2018
Taming a beast - Cloudnative London 2018Taming a beast - Cloudnative London 2018
Taming a beast - Cloudnative London 2018
 
Money, Process, and Culture- Tech 20/20 June, 2012
Money, Process, and Culture- Tech 20/20 June, 2012Money, Process, and Culture- Tech 20/20 June, 2012
Money, Process, and Culture- Tech 20/20 June, 2012
 
SRE Lessons for the Enterprise
SRE Lessons for the Enterprise SRE Lessons for the Enterprise
SRE Lessons for the Enterprise
 
Devops is a Security Requirement
Devops is a Security RequirementDevops is a Security Requirement
Devops is a Security Requirement
 
Devops 4 Saas
Devops 4 SaasDevops 4 Saas
Devops 4 Saas
 
Devops 101 QA with Kris Buytaert
Devops 101 QA  with Kris BuytaertDevops 101 QA  with Kris Buytaert
Devops 101 QA with Kris Buytaert
 
Am I a Brilliant Jerk?
Am I a Brilliant Jerk?Am I a Brilliant Jerk?
Am I a Brilliant Jerk?
 
How to build the wrong thing faster and learn from it keynote by David Hussma...
How to build the wrong thing faster and learn from it keynote by David Hussma...How to build the wrong thing faster and learn from it keynote by David Hussma...
How to build the wrong thing faster and learn from it keynote by David Hussma...
 
Clean Code - 5
Clean Code - 5Clean Code - 5
Clean Code - 5
 
Bridging the Distance through Agile Game Development
Bridging the Distance through Agile Game DevelopmentBridging the Distance through Agile Game Development
Bridging the Distance through Agile Game Development
 
Building on the Shoulders of Giants: the Story of Bitbucket Pipelines
Building on the Shoulders of Giants: the Story of Bitbucket PipelinesBuilding on the Shoulders of Giants: the Story of Bitbucket Pipelines
Building on the Shoulders of Giants: the Story of Bitbucket Pipelines
 
The Agile Manifesto in the Star Wars Universe
The Agile Manifesto in the Star Wars UniverseThe Agile Manifesto in the Star Wars Universe
The Agile Manifesto in the Star Wars Universe
 
Insights Into the Creative Process
Insights Into the Creative ProcessInsights Into the Creative Process
Insights Into the Creative Process
 

More from Tim Berglund

Distributed Systems In One Lesson
Distributed Systems In One LessonDistributed Systems In One Lesson
Distributed Systems In One LessonTim Berglund
 
Decision Making in Software Teams
Decision Making in Software TeamsDecision Making in Software Teams
Decision Making in Software TeamsTim Berglund
 
Then our buildings shape us 10 minutes
Then our buildings shape us   10 minutesThen our buildings shape us   10 minutes
Then our buildings shape us 10 minutesTim Berglund
 
Complexity Theory and Software Development
Complexity Theory and Software DevelopmentComplexity Theory and Software Development
Complexity Theory and Software DevelopmentTim Berglund
 
Gaelyk: Lightweight Groovy on the Google App Engine
Gaelyk: Lightweight Groovy on the Google App EngineGaelyk: Lightweight Groovy on the Google App Engine
Gaelyk: Lightweight Groovy on the Google App EngineTim Berglund
 
Test First Refresh Second: Test-Driven Development in Grails
Test First Refresh Second: Test-Driven Development in GrailsTest First Refresh Second: Test-Driven Development in Grails
Test First Refresh Second: Test-Driven Development in GrailsTim Berglund
 
Test First, Refresh Second: Web App TDD in Grails
Test First, Refresh Second: Web App TDD in GrailsTest First, Refresh Second: Web App TDD in Grails
Test First, Refresh Second: Web App TDD in GrailsTim Berglund
 
Agile Database Development with Liquibase
Agile Database Development with LiquibaseAgile Database Development with Liquibase
Agile Database Development with LiquibaseTim Berglund
 
Database Refactoring With Liquibase
Database Refactoring With LiquibaseDatabase Refactoring With Liquibase
Database Refactoring With LiquibaseTim Berglund
 

More from Tim Berglund (10)

Distributed Systems In One Lesson
Distributed Systems In One LessonDistributed Systems In One Lesson
Distributed Systems In One Lesson
 
NoSQL Smackdown!
NoSQL Smackdown!NoSQL Smackdown!
NoSQL Smackdown!
 
Decision Making in Software Teams
Decision Making in Software TeamsDecision Making in Software Teams
Decision Making in Software Teams
 
Then our buildings shape us 10 minutes
Then our buildings shape us   10 minutesThen our buildings shape us   10 minutes
Then our buildings shape us 10 minutes
 
Complexity Theory and Software Development
Complexity Theory and Software DevelopmentComplexity Theory and Software Development
Complexity Theory and Software Development
 
Gaelyk: Lightweight Groovy on the Google App Engine
Gaelyk: Lightweight Groovy on the Google App EngineGaelyk: Lightweight Groovy on the Google App Engine
Gaelyk: Lightweight Groovy on the Google App Engine
 
Test First Refresh Second: Test-Driven Development in Grails
Test First Refresh Second: Test-Driven Development in GrailsTest First Refresh Second: Test-Driven Development in Grails
Test First Refresh Second: Test-Driven Development in Grails
 
Test First, Refresh Second: Web App TDD in Grails
Test First, Refresh Second: Web App TDD in GrailsTest First, Refresh Second: Web App TDD in Grails
Test First, Refresh Second: Web App TDD in Grails
 
Agile Database Development with Liquibase
Agile Database Development with LiquibaseAgile Database Development with Liquibase
Agile Database Development with Liquibase
 
Database Refactoring With Liquibase
Database Refactoring With LiquibaseDatabase Refactoring With Liquibase
Database Refactoring With Liquibase
 

Recently uploaded

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 

Recently uploaded (20)

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 

Slaying The Legacy Dragon: Practical Lessons in Replacing Old Software

Editor's Notes

  1. Test of speaking notes. If screens are set up properly, you should see this.
  2. This talk is addressed to architects, but all developers, PMs, and business people can benefit. This talk is about legacy code like Feathers&amp;#x2019; book. This talk does not dwell on technical details. It points to many tools and disciplines, but we can&amp;#x2019;t cover it all without making it a several-day workshop. I&amp;#x2019;m an independent consultant, developer, trainer. Work with UGs and IASA in Denver. NFJS speaker.
  3. This talk is addressed to architects, but all developers, PMs, and business people can benefit. This talk is about legacy code like Feathers&amp;#x2019; book. This talk does not dwell on technical details. It points to many tools and disciplines, but we can&amp;#x2019;t cover it all without making it a several-day workshop. I&amp;#x2019;m an independent consultant, developer, trainer. Work with UGs and IASA in Denver. NFJS speaker.
  4. This talk is addressed to architects, but all developers, PMs, and business people can benefit. This talk is about legacy code like Feathers&amp;#x2019; book. This talk does not dwell on technical details. It points to many tools and disciplines, but we can&amp;#x2019;t cover it all without making it a several-day workshop. I&amp;#x2019;m an independent consultant, developer, trainer. Work with UGs and IASA in Denver. NFJS speaker.
  5. This talk is addressed to architects, but all developers, PMs, and business people can benefit. This talk is about legacy code like Feathers&amp;#x2019; book. This talk does not dwell on technical details. It points to many tools and disciplines, but we can&amp;#x2019;t cover it all without making it a several-day workshop. I&amp;#x2019;m an independent consultant, developer, trainer. Work with UGs and IASA in Denver. NFJS speaker.
  6. This talk is addressed to architects, but all developers, PMs, and business people can benefit. This talk is about legacy code like Feathers&amp;#x2019; book. This talk does not dwell on technical details. It points to many tools and disciplines, but we can&amp;#x2019;t cover it all without making it a several-day workshop. I&amp;#x2019;m an independent consultant, developer, trainer. Work with UGs and IASA in Denver. NFJS speaker.
  7. This talk is addressed to architects, but all developers, PMs, and business people can benefit. This talk is about legacy code like Feathers&amp;#x2019; book. This talk does not dwell on technical details. It points to many tools and disciplines, but we can&amp;#x2019;t cover it all without making it a several-day workshop. I&amp;#x2019;m an independent consultant, developer, trainer. Work with UGs and IASA in Denver. NFJS speaker.
  8. This talk is addressed to architects, but all developers, PMs, and business people can benefit. This talk is about legacy code like Feathers&amp;#x2019; book. This talk does not dwell on technical details. It points to many tools and disciplines, but we can&amp;#x2019;t cover it all without making it a several-day workshop. I&amp;#x2019;m an independent consultant, developer, trainer. Work with UGs and IASA in Denver. NFJS speaker.
  9. This talk is addressed to architects, but all developers, PMs, and business people can benefit. This talk is about legacy code like Feathers&amp;#x2019; book. This talk does not dwell on technical details. It points to many tools and disciplines, but we can&amp;#x2019;t cover it all without making it a several-day workshop. I&amp;#x2019;m an independent consultant, developer, trainer. Work with UGs and IASA in Denver. NFJS speaker.
  10. St. George was originally venerated in Cappadocia, now known as Turkey. The origins of the myth are unclear, but the story is familiar: the town Silene is beset by a dragon (Ascalon) living in a lake. The peace is kept by feeding the dragons sheep, later children chosen by lottery, finally the king&amp;#x2019;s daughter. George appears on horseback, wounding the dragon with a spear, the fashioning the virgin&amp;#x2019;s corset (in the medieval version) into a collar and leading it back to down. George says I&amp;#x2019;ll kill it if you&amp;#x2019;ll repent and be baptized.
  11. St. George was originally venerated in Cappadocia, now known as Turkey. The origins of the myth are unclear, but the story is familiar: the town Silene is beset by a dragon (Ascalon) living in a lake. The peace is kept by feeding the dragons sheep, later children chosen by lottery, finally the king&amp;#x2019;s daughter. George appears on horseback, wounding the dragon with a spear, the fashioning the virgin&amp;#x2019;s corset (in the medieval version) into a collar and leading it back to down. George says I&amp;#x2019;ll kill it if you&amp;#x2019;ll repent and be baptized.
  12. St. George was originally venerated in Cappadocia, now known as Turkey. The origins of the myth are unclear, but the story is familiar: the town Silene is beset by a dragon (Ascalon) living in a lake. The peace is kept by feeding the dragons sheep, later children chosen by lottery, finally the king&amp;#x2019;s daughter. George appears on horseback, wounding the dragon with a spear, the fashioning the virgin&amp;#x2019;s corset (in the medieval version) into a collar and leading it back to down. George says I&amp;#x2019;ll kill it if you&amp;#x2019;ll repent and be baptized.
  13. St. George was originally venerated in Cappadocia, now known as Turkey. The origins of the myth are unclear, but the story is familiar: the town Silene is beset by a dragon (Ascalon) living in a lake. The peace is kept by feeding the dragons sheep, later children chosen by lottery, finally the king&amp;#x2019;s daughter. George appears on horseback, wounding the dragon with a spear, the fashioning the virgin&amp;#x2019;s corset (in the medieval version) into a collar and leading it back to down. George says I&amp;#x2019;ll kill it if you&amp;#x2019;ll repent and be baptized.
  14. St. George was originally venerated in Cappadocia, now known as Turkey. The origins of the myth are unclear, but the story is familiar: the town Silene is beset by a dragon (Ascalon) living in a lake. The peace is kept by feeding the dragons sheep, later children chosen by lottery, finally the king&amp;#x2019;s daughter. George appears on horseback, wounding the dragon with a spear, the fashioning the virgin&amp;#x2019;s corset (in the medieval version) into a collar and leading it back to down. George says I&amp;#x2019;ll kill it if you&amp;#x2019;ll repent and be baptized.
  15. St. George was originally venerated in Cappadocia, now known as Turkey. The origins of the myth are unclear, but the story is familiar: the town Silene is beset by a dragon (Ascalon) living in a lake. The peace is kept by feeding the dragons sheep, later children chosen by lottery, finally the king&amp;#x2019;s daughter. George appears on horseback, wounding the dragon with a spear, the fashioning the virgin&amp;#x2019;s corset (in the medieval version) into a collar and leading it back to down. George says I&amp;#x2019;ll kill it if you&amp;#x2019;ll repent and be baptized.
  16. St. George was originally venerated in Cappadocia, now known as Turkey. The origins of the myth are unclear, but the story is familiar: the town Silene is beset by a dragon (Ascalon) living in a lake. The peace is kept by feeding the dragons sheep, later children chosen by lottery, finally the king&amp;#x2019;s daughter. George appears on horseback, wounding the dragon with a spear, the fashioning the virgin&amp;#x2019;s corset (in the medieval version) into a collar and leading it back to down. George says I&amp;#x2019;ll kill it if you&amp;#x2019;ll repent and be baptized.
  17. St. George was originally venerated in Cappadocia, now known as Turkey. The origins of the myth are unclear, but the story is familiar: the town Silene is beset by a dragon (Ascalon) living in a lake. The peace is kept by feeding the dragons sheep, later children chosen by lottery, finally the king&amp;#x2019;s daughter. George appears on horseback, wounding the dragon with a spear, the fashioning the virgin&amp;#x2019;s corset (in the medieval version) into a collar and leading it back to down. George says I&amp;#x2019;ll kill it if you&amp;#x2019;ll repent and be baptized.
  18. St. George was originally venerated in Cappadocia, now known as Turkey. The origins of the myth are unclear, but the story is familiar: the town Silene is beset by a dragon (Ascalon) living in a lake. The peace is kept by feeding the dragons sheep, later children chosen by lottery, finally the king&amp;#x2019;s daughter. George appears on horseback, wounding the dragon with a spear, the fashioning the virgin&amp;#x2019;s corset (in the medieval version) into a collar and leading it back to down. George says I&amp;#x2019;ll kill it if you&amp;#x2019;ll repent and be baptized.
  19. St. George was originally venerated in Cappadocia, now known as Turkey. The origins of the myth are unclear, but the story is familiar: the town Silene is beset by a dragon (Ascalon) living in a lake. The peace is kept by feeding the dragons sheep, later children chosen by lottery, finally the king&amp;#x2019;s daughter. George appears on horseback, wounding the dragon with a spear, the fashioning the virgin&amp;#x2019;s corset (in the medieval version) into a collar and leading it back to down. George says I&amp;#x2019;ll kill it if you&amp;#x2019;ll repent and be baptized.
  20. St. George was originally venerated in Cappadocia, now known as Turkey. The origins of the myth are unclear, but the story is familiar: the town Silene is beset by a dragon (Ascalon) living in a lake. The peace is kept by feeding the dragons sheep, later children chosen by lottery, finally the king&amp;#x2019;s daughter. George appears on horseback, wounding the dragon with a spear, the fashioning the virgin&amp;#x2019;s corset (in the medieval version) into a collar and leading it back to down. George says I&amp;#x2019;ll kill it if you&amp;#x2019;ll repent and be baptized.
  21. Anecdote about failed migration. This is a large-scale action that you can&amp;#x2019;t sneak in like testing in Groovy. Killing a dragon is great. You do a good thing, and people remember you. You learn a lot. You improve. But it might hurt you! Be ready. Also, people usually won&amp;#x2019;t tolerate the risks unless they feel the pain.
  22. Anecdote about failed migration. This is a large-scale action that you can&amp;#x2019;t sneak in like testing in Groovy. Killing a dragon is great. You do a good thing, and people remember you. You learn a lot. You improve. But it might hurt you! Be ready. Also, people usually won&amp;#x2019;t tolerate the risks unless they feel the pain.
  23. Anecdote about failed migration. This is a large-scale action that you can&amp;#x2019;t sneak in like testing in Groovy. Killing a dragon is great. You do a good thing, and people remember you. You learn a lot. You improve. But it might hurt you! Be ready. Also, people usually won&amp;#x2019;t tolerate the risks unless they feel the pain.
  24. Anecdote about failed migration. This is a large-scale action that you can&amp;#x2019;t sneak in like testing in Groovy. Killing a dragon is great. You do a good thing, and people remember you. You learn a lot. You improve. But it might hurt you! Be ready. Also, people usually won&amp;#x2019;t tolerate the risks unless they feel the pain.
  25. Anecdote about failed migration. This is a large-scale action that you can&amp;#x2019;t sneak in like testing in Groovy. Killing a dragon is great. You do a good thing, and people remember you. You learn a lot. You improve. But it might hurt you! Be ready. Also, people usually won&amp;#x2019;t tolerate the risks unless they feel the pain.
  26. Anecdote about failed migration. This is a large-scale action that you can&amp;#x2019;t sneak in like testing in Groovy. Killing a dragon is great. You do a good thing, and people remember you. You learn a lot. You improve. But it might hurt you! Be ready. Also, people usually won&amp;#x2019;t tolerate the risks unless they feel the pain.
  27. Anecdote about failed migration. This is a large-scale action that you can&amp;#x2019;t sneak in like testing in Groovy. Killing a dragon is great. You do a good thing, and people remember you. You learn a lot. You improve. But it might hurt you! Be ready. Also, people usually won&amp;#x2019;t tolerate the risks unless they feel the pain.
  28. Anecdote about failed migration. This is a large-scale action that you can&amp;#x2019;t sneak in like testing in Groovy. Killing a dragon is great. You do a good thing, and people remember you. You learn a lot. You improve. But it might hurt you! Be ready. Also, people usually won&amp;#x2019;t tolerate the risks unless they feel the pain.
  29. Nothing of scale can succeed without them. Groovy unit testing doesn&amp;#x2019;t need them, even if they exist. Should be expressable in terms of some simple business abstraction (production cost, time to market, distribution, quality, etc.) Probably not your job, but you&amp;#x2019;d better know these anyway.
  30. Nothing of scale can succeed without them. Groovy unit testing doesn&amp;#x2019;t need them, even if they exist. Should be expressable in terms of some simple business abstraction (production cost, time to market, distribution, quality, etc.) Probably not your job, but you&amp;#x2019;d better know these anyway.
  31. Nothing of scale can succeed without them. Groovy unit testing doesn&amp;#x2019;t need them, even if they exist. Should be expressable in terms of some simple business abstraction (production cost, time to market, distribution, quality, etc.) Probably not your job, but you&amp;#x2019;d better know these anyway.
  32. Nothing of scale can succeed without them. Groovy unit testing doesn&amp;#x2019;t need them, even if they exist. Should be expressable in terms of some simple business abstraction (production cost, time to market, distribution, quality, etc.) Probably not your job, but you&amp;#x2019;d better know these anyway.
  33. Nothing of scale can succeed without them. Groovy unit testing doesn&amp;#x2019;t need them, even if they exist. Should be expressable in terms of some simple business abstraction (production cost, time to market, distribution, quality, etc.) Probably not your job, but you&amp;#x2019;d better know these anyway.
  34. Nothing of scale can succeed without them. Groovy unit testing doesn&amp;#x2019;t need them, even if they exist. Should be expressable in terms of some simple business abstraction (production cost, time to market, distribution, quality, etc.) Probably not your job, but you&amp;#x2019;d better know these anyway.
  35. Nothing of scale can succeed without them. Groovy unit testing doesn&amp;#x2019;t need them, even if they exist. Should be expressable in terms of some simple business abstraction (production cost, time to market, distribution, quality, etc.) Probably not your job, but you&amp;#x2019;d better know these anyway.
  36. An old version of something important is going obsolete. You have a new CIO who hates Java/loves Java/wants to make an impression.
  37. An old version of something important is going obsolete. You have a new CIO who hates Java/loves Java/wants to make an impression.
  38. An old version of something important is going obsolete. You have a new CIO who hates Java/loves Java/wants to make an impression.
  39. An old version of something important is going obsolete. You have a new CIO who hates Java/loves Java/wants to make an impression.
  40. An old version of something important is going obsolete. You have a new CIO who hates Java/loves Java/wants to make an impression.
  41. An old version of something important is going obsolete. You have a new CIO who hates Java/loves Java/wants to make an impression.
  42. It&amp;#x2019;s a good time to back up and take a fresh look at the old system.
  43. It&amp;#x2019;s a good time to back up and take a fresh look at the old system.
  44. The business understands the problem better now. The business has changed. Reexmaining old concept will lead to better features, less code. Previous hacks/workarounds can die. Smaller system, less waste.
  45. Resist all change. The legacy system supports a business and works. Person-decades of effort have gone into it.
  46. Resist all change. The legacy system supports a business and works. Person-decades of effort have gone into it.
  47. Resist all change. The legacy system supports a business and works. Person-decades of effort have gone into it.
  48. Resist all change. The legacy system supports a business and works. Person-decades of effort have gone into it.
  49. Resist all change. The legacy system supports a business and works. Person-decades of effort have gone into it.
  50. Resist all change. The legacy system supports a business and works. Person-decades of effort have gone into it.
  51. Resist all change. The legacy system supports a business and works. Person-decades of effort have gone into it.
  52. Resist all change. The legacy system supports a business and works. Person-decades of effort have gone into it.
  53. Resist all change. The legacy system supports a business and works. Person-decades of effort have gone into it.
  54. Resist all change. The legacy system supports a business and works. Person-decades of effort have gone into it.
  55. Resist all change. The legacy system supports a business and works. Person-decades of effort have gone into it.
  56. Resist all change. The legacy system supports a business and works. Person-decades of effort have gone into it.
  57. Resist all change. The legacy system supports a business and works. Person-decades of effort have gone into it.
  58. Does anybody really choose? Usually not. Probably there&amp;#x2019;s an enterprise standard, or an architect or tech-savvy executive has a preference or a relationship that makes the decision for you.
  59. Does anybody really choose? Usually not. Probably there&amp;#x2019;s an enterprise standard, or an architect or tech-savvy executive has a preference or a relationship that makes the decision for you.
  60. Choosing by hipness: might not be bad. Can be a strategic recruiting advantage, can expose you to new productivity gains. Probably is bad, though. Resume-driven design is a moral failing.
  61. Choosing by hipness: might not be bad. Can be a strategic recruiting advantage, can expose you to new productivity gains. Probably is bad, though. Resume-driven design is a moral failing.
  62. If you&amp;#x2019;re a Java shop, prefer Java as a platform. If you&amp;#x2019;re a PHP shop, consider staying there. You can change a team, but it&amp;#x2019;s hard.
  63. If you&amp;#x2019;re a Java shop, prefer Java as a platform. If you&amp;#x2019;re a PHP shop, consider staying there. You can change a team, but it&amp;#x2019;s hard.
  64. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  65. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  66. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  67. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  68. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  69. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  70. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  71. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  72. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  73. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  74. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  75. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  76. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  77. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  78. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  79. These debates are interminable. They are not useless, but in reality, you can probably build anything with anything. While specific characteristics matter, form is more important than function. What is the wood grain of the platform? What does the community care about?
  80. Prototyping: a sticky wicket. Usually can&amp;#x2019;t find pain points in a simple demo. Hard to discern productivity advantages when you&amp;#x2019;re just dipping your toe in the water. BUT NOT ALWAYS. Can be good on large-scale stuff. Also, you should always play around with new technologies; just recognize the limitations in doing so.
  81. Prototyping: a sticky wicket. Usually can&amp;#x2019;t find pain points in a simple demo. Hard to discern productivity advantages when you&amp;#x2019;re just dipping your toe in the water. BUT NOT ALWAYS. Can be good on large-scale stuff. Also, you should always play around with new technologies; just recognize the limitations in doing so.
  82. We won&amp;#x2019;t get into many specifics. Writing the new app is just building code. Lots of help on how to do that. Go to No Fluff if you want to learn more. :) It&amp;#x2019;s up to you to do the actual lancing of the beast, but there are some areas of interest we can discuss along the way.
  83. We won&amp;#x2019;t get into many specifics. Writing the new app is just building code. Lots of help on how to do that. Go to No Fluff if you want to learn more. :) It&amp;#x2019;s up to you to do the actual lancing of the beast, but there are some areas of interest we can discuss along the way.
  84. We won&amp;#x2019;t get into many specifics. Writing the new app is just building code. Lots of help on how to do that. Go to No Fluff if you want to learn more. :) It&amp;#x2019;s up to you to do the actual lancing of the beast, but there are some areas of interest we can discuss along the way.
  85. The biggest issue is who lives and who dies. This affects everything.
  86. The biggest issue is who lives and who dies. This affects everything.
  87. When the legacy DB is bigger than just this app or has other reasons to live, you have to stick with it. This will limit your ability to improve things.
  88. When the legacy DB is bigger than just this app or has other reasons to live, you have to stick with it. This will limit your ability to improve things.
  89. This can help a little bit, like tylenol. Treating symptoms. In reality, domain modeling and schema design leak onto one another a lot. Tacit knowledge of ORM framework shapes domain design.
  90. This can help a little bit, like tylenol. Treating symptoms. In reality, domain modeling and schema design leak onto one another a lot. Tacit knowledge of ORM framework shapes domain design.
  91. This doesn&amp;#x2019;t mean the legacy database has to stay awful forever. You can reform an old schema a piece at a time. You need Liquibase and lots of help. Interestingly, Ambler also holds the key to true migration.
  92. This doesn&amp;#x2019;t mean the legacy database has to stay awful forever. You can reform an old schema a piece at a time. You need Liquibase and lots of help. Interestingly, Ambler also holds the key to true migration.
  93. This doesn&amp;#x2019;t mean the legacy database has to stay awful forever. You can reform an old schema a piece at a time. You need Liquibase and lots of help. Interestingly, Ambler also holds the key to true migration.
  94. This doesn&amp;#x2019;t mean the legacy database has to stay awful forever. You can reform an old schema a piece at a time. You need Liquibase and lots of help. Interestingly, Ambler also holds the key to true migration.
  95. This doesn&amp;#x2019;t mean the legacy database has to stay awful forever. You can reform an old schema a piece at a time. You need Liquibase and lots of help. Interestingly, Ambler also holds the key to true migration.
  96. This doesn&amp;#x2019;t mean the legacy database has to stay awful forever. You can reform an old schema a piece at a time. You need Liquibase and lots of help. Interestingly, Ambler also holds the key to true migration.
  97. This doesn&amp;#x2019;t mean the legacy database has to stay awful forever. You can reform an old schema a piece at a time. You need Liquibase and lots of help. Interestingly, Ambler also holds the key to true migration.
  98. The new schema comes to life alongside the old, and triggers synchronize them. Assumptions of triggers. If triggers won&amp;#x2019;t work, you can try ETL&amp;#x2014;with time constant constraints. Also consider nontraditional NoSQL solutions. Concurrency scenarios.
  99. The new schema comes to life alongside the old, and triggers synchronize them. Assumptions of triggers. If triggers won&amp;#x2019;t work, you can try ETL&amp;#x2014;with time constant constraints. Also consider nontraditional NoSQL solutions. Concurrency scenarios.
  100. The new schema comes to life alongside the old, and triggers synchronize them. Assumptions of triggers. If triggers won&amp;#x2019;t work, you can try ETL&amp;#x2014;with time constant constraints. Also consider nontraditional NoSQL solutions. Concurrency scenarios.
  101. The new schema comes to life alongside the old, and triggers synchronize them. Assumptions of triggers. If triggers won&amp;#x2019;t work, you can try ETL&amp;#x2014;with time constant constraints. Also consider nontraditional NoSQL solutions. Concurrency scenarios.
  102. The new schema comes to life alongside the old, and triggers synchronize them. Assumptions of triggers. If triggers won&amp;#x2019;t work, you can try ETL&amp;#x2014;with time constant constraints. Also consider nontraditional NoSQL solutions. Concurrency scenarios.
  103. The new schema comes to life alongside the old, and triggers synchronize them. Assumptions of triggers. If triggers won&amp;#x2019;t work, you can try ETL&amp;#x2014;with time constant constraints. Also consider nontraditional NoSQL solutions. Concurrency scenarios.
  104. The new schema comes to life alongside the old, and triggers synchronize them. Assumptions of triggers. If triggers won&amp;#x2019;t work, you can try ETL&amp;#x2014;with time constant constraints. Also consider nontraditional NoSQL solutions. Concurrency scenarios.
  105. Sometimes there are good reasons not to do this with triggers, like changing database technologies or scale considerations. This is difficult, but answers may exist.
  106. Sometimes there are good reasons not to do this with triggers, like changing database technologies or scale considerations. This is difficult, but answers may exist.
  107. This is a good time to consider whether legacy content belongs in an RDBMS.
  108. This is a good time to consider whether legacy content belongs in an RDBMS.
  109. Are there lots of blobs? That&amp;#x2019;s a smell.
  110. Good solutions for nonrelational content.
  111. Good solutions for nonrelational content.
  112. Good solutions for nonrelational content.
  113. Good solutions for nonrelational content.
  114. To make a credible go at this, you need tooling. Liquibase provides this.
  115. To make a credible go at this, you need tooling. Liquibase provides this.
  116. If this is your existing team, they&amp;#x2019;re probably up to the task. But is this your team? Will yours need formal training? Do they want to learn new things? Have they demonstrated an ability to learn? Does a sober assessment of your team tell you they can do this?
  117. If this is your existing team, they&amp;#x2019;re probably up to the task. But is this your team? Will yours need formal training? Do they want to learn new things? Have they demonstrated an ability to learn? Does a sober assessment of your team tell you they can do this?
  118. Maybe that&amp;#x2019;s not your team. If you&amp;#x2019;re refactoring to a new technology, can you hire for it? Downside to cutting-edge tech: hard to recruit. How to look for relevant experience. Look for related, foundational, and analogical technologies. Consider your market.
  119. Maybe that&amp;#x2019;s not your team. If you&amp;#x2019;re refactoring to a new technology, can you hire for it? Downside to cutting-edge tech: hard to recruit. How to look for relevant experience. Look for related, foundational, and analogical technologies. Consider your market.
  120. Anxiety is a threat response. Cognitive resources are conserved to deal with the threat. This makes us unpleasant to deal with, particularly when the threat is misperceived. Much more to be said about relational systems as they apply to the workplace. Most of this is out of scope, but you *will* deal with anxious people if you&amp;#x2019;re refactoring a legacy system of any size.
  121. Anxiety is a threat response. Cognitive resources are conserved to deal with the threat. This makes us unpleasant to deal with, particularly when the threat is misperceived. Much more to be said about relational systems as they apply to the workplace. Most of this is out of scope, but you *will* deal with anxious people if you&amp;#x2019;re refactoring a legacy system of any size.
  122. Anxiety is a threat response. Cognitive resources are conserved to deal with the threat. This makes us unpleasant to deal with, particularly when the threat is misperceived. Much more to be said about relational systems as they apply to the workplace. Most of this is out of scope, but you *will* deal with anxious people if you&amp;#x2019;re refactoring a legacy system of any size.
  123. Anxiety is a threat response. Cognitive resources are conserved to deal with the threat. This makes us unpleasant to deal with, particularly when the threat is misperceived. Much more to be said about relational systems as they apply to the workplace. Most of this is out of scope, but you *will* deal with anxious people if you&amp;#x2019;re refactoring a legacy system of any size.
  124. Anxiety is a threat response. Cognitive resources are conserved to deal with the threat. This makes us unpleasant to deal with, particularly when the threat is misperceived. Much more to be said about relational systems as they apply to the workplace. Most of this is out of scope, but you *will* deal with anxious people if you&amp;#x2019;re refactoring a legacy system of any size.
  125. Anxiety is a threat response. Cognitive resources are conserved to deal with the threat. This makes us unpleasant to deal with, particularly when the threat is misperceived. Much more to be said about relational systems as they apply to the workplace. Most of this is out of scope, but you *will* deal with anxious people if you&amp;#x2019;re refactoring a legacy system of any size.
  126. Anxiety is a threat response. Cognitive resources are conserved to deal with the threat. This makes us unpleasant to deal with, particularly when the threat is misperceived. Much more to be said about relational systems as they apply to the workplace. Most of this is out of scope, but you *will* deal with anxious people if you&amp;#x2019;re refactoring a legacy system of any size.
  127. Anxiety is a threat response. Cognitive resources are conserved to deal with the threat. This makes us unpleasant to deal with, particularly when the threat is misperceived. Much more to be said about relational systems as they apply to the workplace. Most of this is out of scope, but you *will* deal with anxious people if you&amp;#x2019;re refactoring a legacy system of any size.
  128. Anxiety is a threat response. Cognitive resources are conserved to deal with the threat. This makes us unpleasant to deal with, particularly when the threat is misperceived. Much more to be said about relational systems as they apply to the workplace. Most of this is out of scope, but you *will* deal with anxious people if you&amp;#x2019;re refactoring a legacy system of any size.
  129. Anxiety is a threat response. Cognitive resources are conserved to deal with the threat. This makes us unpleasant to deal with, particularly when the threat is misperceived. Much more to be said about relational systems as they apply to the workplace. Most of this is out of scope, but you *will* deal with anxious people if you&amp;#x2019;re refactoring a legacy system of any size.
  130. Anxiety is a threat response. Cognitive resources are conserved to deal with the threat. This makes us unpleasant to deal with, particularly when the threat is misperceived. Much more to be said about relational systems as they apply to the workplace. Most of this is out of scope, but you *will* deal with anxious people if you&amp;#x2019;re refactoring a legacy system of any size.
  131. Anxiety is a threat response. Cognitive resources are conserved to deal with the threat. This makes us unpleasant to deal with, particularly when the threat is misperceived. Much more to be said about relational systems as they apply to the workplace. Most of this is out of scope, but you *will* deal with anxious people if you&amp;#x2019;re refactoring a legacy system of any size.
  132. Anxiety is a threat response. Cognitive resources are conserved to deal with the threat. This makes us unpleasant to deal with, particularly when the threat is misperceived. Much more to be said about relational systems as they apply to the workplace. Most of this is out of scope, but you *will* deal with anxious people if you&amp;#x2019;re refactoring a legacy system of any size.
  133. Anxiety is a threat response. Cognitive resources are conserved to deal with the threat. This makes us unpleasant to deal with, particularly when the threat is misperceived. Much more to be said about relational systems as they apply to the workplace. Most of this is out of scope, but you *will* deal with anxious people if you&amp;#x2019;re refactoring a legacy system of any size.
  134. Anxiety is a threat response. Cognitive resources are conserved to deal with the threat. This makes us unpleasant to deal with, particularly when the threat is misperceived. Much more to be said about relational systems as they apply to the workplace. Most of this is out of scope, but you *will* deal with anxious people if you&amp;#x2019;re refactoring a legacy system of any size.
  135. Fred Brooks: &quot;The second is the most dangerous system a man ever designs.&quot; (p 55) Throw in all the things you thought of the first time. Only applies if the same architect is building the second one, or knew the first one very well. You had to live with all of these problems all this time. And they were your fault! Finally things can be made right. Related: the &amp;#x201C;now&amp;#x2019;s our chance&amp;#x201D; dynamic of sneaking functionality in. This can afflict anyone.
  136. We&amp;#x2019;ve talked about how rebuilding a legacy system interacts with the business, how you should approach it to maximize your reputation, reasons businesses do this, how to choose a platform, how to deal with the database, what impacts this can have on people, how to employ web services, and what kinds of pitfalls we can find. This is a difficult task, and it will always be painful, but it can be done.