+ - 0:00:00
Notes for current slide
  1. Press 'C' to clone and move it to projector
  2. Press 'P' to show these here presenter notes

75 minutes

When you're mired in an ancient codebase that makes refactoring risky and expensive, how do you clear a path to continued delivery? According to the old saw, the best time to plant a tree is 20 years ago, and the next best time is today. But if you already have a gnarled old source tree, an old saw is the wrong tool. Instead, plant a Strangler: a pattern for preserving your software investment by arranging for new functionality to grow in a new codebase.

As a mob, we'll take a quick look at a Strangler, then test-drive new features into it. Don't know what to try next? Take the keyboard. Got an idea? Step away and talk someone else through it. You'll leave with a powerful strategy for extending the useful life of working, valuable software -- especially when it's hard to change. We'll also send you home with a free bonus development practice to accelerate your team's learning. For a limited time only!

How to introduce the problem

  • Responsible for production email service
  • Keep having to extend it (business, regulatory requirements)
  • Look at ofmipd code
  • On my 20% time, I had an idea for how to make development easier, cheaper, safer
  • Run ofmipd
  • Run ofmipd behind env AUTHUP_USER=tim fixsmtpio
  • Note the differences?
  • We're going to do the same kind of thing, in Python
  • Let's run it and say "WORD UP" to the server
  • See how that works
  • Okay, let's make a new test pass
Notes for next slide

Hackerkegeln bei DATEV

Strangle Your Legacy Code

Amitai's headshot

Amitai Schleier

2018/07/12

1 / 12
  1. Press 'C' to clone and move it to projector
  2. Press 'P' to show these here presenter notes

75 minutes

When you're mired in an ancient codebase that makes refactoring risky and expensive, how do you clear a path to continued delivery? According to the old saw, the best time to plant a tree is 20 years ago, and the next best time is today. But if you already have a gnarled old source tree, an old saw is the wrong tool. Instead, plant a Strangler: a pattern for preserving your software investment by arranging for new functionality to grow in a new codebase.

As a mob, we'll take a quick look at a Strangler, then test-drive new features into it. Don't know what to try next? Take the keyboard. Got an idea? Step away and talk someone else through it. You'll leave with a powerful strategy for extending the useful life of working, valuable software -- especially when it's hard to change. We'll also send you home with a free bonus development practice to accelerate your team's learning. For a limited time only!

How to introduce the problem

  • Responsible for production email service
  • Keep having to extend it (business, regulatory requirements)
  • Look at ofmipd code
  • On my 20% time, I had an idea for how to make development easier, cheaper, safer
  • Run ofmipd
  • Run ofmipd behind env AUTHUP_USER=tim fixsmtpio
  • Note the differences?
  • We're going to do the same kind of thing, in Python
  • Let's run it and say "WORD UP" to the server
  • See how that works
  • Okay, let's make a new test pass

Hackerkegeln bei DATEV

Goals For This Session

1. Introduction to Strangler

2. Develop in a real Strangler

3. Collect learnings

2 / 12

Hackerkegeln bei DATEV

0. Code of Conduct

softwerkskammer.org/wiki
/diversity/index

Remind ourselves how we want to behave

Like TDD, declaring our intentions helps us live up to them

3 / 12

Hackerkegeln bei DATEV

1. Introduction to Strangler (1/2)

"One of the natural wonders of [the Queensland coast] are the huge strangler vines. They seed in the upper branches of a fig tree and gradually work their way down the tree until they root in the soil. Over many years they grow into fantastic and beautiful shapes, meanwhile strangling and killing the tree that was their host."
--Martin Fowler

4 / 12

Hackerkegeln bei DATEV

1. Introduction to Strangler (2/2)

Alternative to Big Rewrite

Mitigates risk to business

Likely reduces cost to business

5 / 12

Hackerkegeln bei DATEV

2. Develop in a real Strangler

We're responsible for AcmeCo's email service

C code from 1998

We like it, and have invested a lot in it

But each new feature is expensive to build

Say goodbye to these slides!

github.com/schmonz/smtp-strangler

6 / 12

Hackerkegeln bei DATEV

3. Collect learnings

  • SMTP is old and strange
  • Having a living cheat sheet around helps a lot
  • Challenging to focus on projector, navigator, mob, laptop at the same time
  • Strangler is a pattern that can help a lot with legacy problems
  • How do we control the risk of the initial Strangler deployment?
  • How do we apply this to a large codebase with many architectures?
  • How would we change complex behavior of SMTP verbs that already exist?
  • Another application of Strangler: instrument usage, delete dead code
  • Looks like a big Decorator (or the world's largest Adapter, or...)
  • Another application: failover
  • This wasn't exactly mobbing, with Amitai as permanent Navigator
7 / 12

Hackerkegeln bei DATEV

Agile in 3 Minutes

agilein3minut.es

"Before Agile in 3 Minutes, I couldn't get my team to have a conversation about important topics. Now I have to timebox it."

Available on iTunes

9 / 12

Hackerkegeln bei DATEV

Agile in 3 Minutes: The Book

leanpub.com/agilein3minutes
/c/hackerkegeln18

The simplest essays that could possibly work. Lowest allowable price on Leanpub, today!

10 / 12

Hackerkegeln bei DATEV

Let's Keep Going

announce-subscribe@schmonz.com

Amitai's mailing list: these slides, future talks, podcasts, blog posts.

latentagility.com

Does your company deliver valuable software? Maybe Amitai can help.

11 / 12

Hackerkegeln bei DATEV

Strangle Your Legacy Code

Amitai's headshot

Amitai Schleier

latentagility.com

12 / 12

Hackerkegeln bei DATEV

Goals For This Session

1. Introduction to Strangler

2. Develop in a real Strangler

3. Collect learnings

2 / 12
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
s Start & Stop the presentation timer
t Reset the presentation timer
?, h Toggle this help
Esc Back to slideshow