+ All Categories
Home > Technology > Richard rodger technical debt - web summit 2013

Richard rodger technical debt - web summit 2013

Date post: 15-Jan-2015
Category:
Upload: richard-rodger
View: 1,147 times
Download: 3 times
Share this document with a friend
Description:
The only way developers can finish projects on-time and under-budget is by taking on Technical Debt. Taking shortcuts, using quick fixes, and writing unmaintainable code builds up a technical debt that get the project delivered today. Tomorrow, there will be a reckoning, as development costs spiral and progress grinds to a halt. This talk helps you embrace the debt, love the cowboys, and gives you a way to make repayments.
Popular Tags:
63
Falling in Love with Technical Debt @rjrodger senecajs.org Tuesday 5 November 2013
Transcript
Page 1: Richard rodger   technical debt - web summit 2013

Falling in Love withTechnical Debt

@rjrodger

senecajs.org

Tuesday 5 November 2013

Page 2: Richard rodger   technical debt - web summit 2013

How did theRomans do

Long Division?Tuesday 5 November 2013

Page 3: Richard rodger   technical debt - web summit 2013

LXXII MMMDCXIIL rem XII

Tuesday 5 November 2013

Page 4: Richard rodger   technical debt - web summit 2013

How did theRomans doAddition?

Tuesday 5 November 2013

Page 5: Richard rodger   technical debt - web summit 2013

IV + XI = ?

Tuesday 5 November 2013

Page 6: Richard rodger   technical debt - web summit 2013

1. Normalize: IV → IIII2. Concatenate: IIII + XI → IIIIXI3. Sort, descending: IIIIXI → XIIIII4. Reduce: XIIIII → XV

IV + XI = ?

Tuesday 5 November 2013

Page 7: Richard rodger   technical debt - web summit 2013

How did theRomans do

Subtraction?Tuesday 5 November 2013

Page 8: Richard rodger   technical debt - web summit 2013

XXIV - XV = ?

Tuesday 5 November 2013

Page 9: Richard rodger   technical debt - web summit 2013

1. Normalize: XXIV → XXIIII2. Eliminate: XXIIII - XV → XIIII - V3. Expand: XIIII - V → VIIIIIIIII - V4. Repeat 2 and 3 until no moves left5. Reduce: IIIIIIIII → IX

XXIV - XV = ?

Tuesday 5 November 2013

Page 10: Richard rodger   technical debt - web summit 2013

How did theRomans do

Multiplication?Tuesday 5 November 2013

Page 11: Richard rodger   technical debt - web summit 2013

III × VI = ?

Tuesday 5 November 2013

Page 12: Richard rodger   technical debt - web summit 2013

III × VI = ?bit shifting

Tuesday 5 November 2013

Page 13: Richard rodger   technical debt - web summit 2013

III → 3VI → 6 → 110

III × VI = ?bit shifting

Tuesday 5 November 2013

Page 14: Richard rodger   technical debt - web summit 2013

III → 3VI → 6 → 110

III × VI = ?

3 × 001 × 0 = 03 × 010 × 1 = 63 × 100 × 1 = 12 18

bit shifting

Tuesday 5 November 2013

Page 15: Richard rodger   technical debt - web summit 2013

III → 3VI → 6 → 110

III × VI = ?

3 × 001 × 0 = 03 × 010 × 1 = 63 × 100 × 1 = 12 18

bit shifting

Tuesday 5 November 2013

Page 16: Richard rodger   technical debt - web summit 2013

III → 3VI → 6 → 110

III × VI = ?

3 × 001 × 0 = 03 × 010 × 1 = 63 × 100 × 1 = 12 18

bit shifting

Tuesday 5 November 2013

Page 17: Richard rodger   technical debt - web summit 2013

How did theRomans doDivision?

Tuesday 5 November 2013

Page 18: Richard rodger   technical debt - web summit 2013

Tuesday 5 November 2013

Page 19: Richard rodger   technical debt - web summit 2013

they didn't

Tuesday 5 November 2013

Page 20: Richard rodger   technical debt - web summit 2013

Tuesday 5 November 2013

Page 21: Richard rodger   technical debt - web summit 2013

Roman Numerals have

Technical DebtTuesday 5 November 2013

Page 22: Richard rodger   technical debt - web summit 2013

http://akvo.org/blog/the-ball-of-mud-transition/

Tuesday 5 November 2013

Page 23: Richard rodger   technical debt - web summit 2013

Tuesday 5 November 2013

Page 24: Richard rodger   technical debt - web summit 2013

The JavaScript Date Object

var today = new Date( 2013, 10, 30)console.log(today)

Sat Nov 30 2013 00:00:00 GMT+0000

Tuesday 5 November 2013

Page 25: Richard rodger   technical debt - web summit 2013

Not allTechnical Debt

is created equalTuesday 5 November 2013

Page 26: Richard rodger   technical debt - web summit 2013

"A good plan, violently executed now,is better than a perfect plan next week."

Intentional

Tuesday 5 November 2013

Page 27: Richard rodger   technical debt - web summit 2013

Unintentional

Tuesday 5 November 2013

Page 28: Richard rodger   technical debt - web summit 2013

Inherent

Tuesday 5 November 2013

Page 29: Richard rodger   technical debt - web summit 2013

Incidental

Tuesday 5 November 2013

Page 30: Richard rodger   technical debt - web summit 2013

2x2 Matrix!

deliberate choice live with it

you are a bad person

unknown unknowns

intentional

unintentional

incidental inherent

Tuesday 5 November 2013

Page 31: Richard rodger   technical debt - web summit 2013

Tuesday 5 November 2013

Page 32: Richard rodger   technical debt - web summit 2013

Tuesday 5 November 2013

Page 33: Richard rodger   technical debt - web summit 2013

Tuesday 5 November 2013

Page 34: Richard rodger   technical debt - web summit 2013

NTSC 1941 Standard:

Black+White onlySignal encodes BrightnessEach Channel gets 6Mhz

Happy Days!

Tuesday 5 November 2013

Page 35: Richard rodger   technical debt - web summit 2013

Color TelevisionThree Colors: Red, Green, Blue

Each Color needs 3MhzYou only have 6Mhzand you need 9Mhz!

Technical Debt FTW

Tuesday 5 November 2013

Page 36: Richard rodger   technical debt - web summit 2013

You can't Break theold Black+White TVs

Tuesday 5 November 2013

Page 37: Richard rodger   technical debt - web summit 2013

We must send the old brightness signal

White Light =30% Red

59% Green11% Blue

Send White, Red and Blue

Tuesday 5 November 2013

Page 38: Richard rodger   technical debt - web summit 2013

You need to embed the color signals inside

the brightness signal

Tuesday 5 November 2013

Page 39: Richard rodger   technical debt - web summit 2013

Color TV circuits aremore complicated

than they should be.

Tuesday 5 November 2013

Page 40: Richard rodger   technical debt - web summit 2013

How do you ReduceTechnical Debt?

Tuesday 5 November 2013

Page 41: Richard rodger   technical debt - web summit 2013

Things thatDon't Work

Tuesday 5 November 2013

Page 42: Richard rodger   technical debt - web summit 2013

Unit Testing(or any other sort)

Tuesday 5 November 2013

Page 43: Richard rodger   technical debt - web summit 2013

Objects

Tuesday 5 November 2013

Page 44: Richard rodger   technical debt - web summit 2013

Design

Tuesday 5 November 2013

Page 45: Richard rodger   technical debt - web summit 2013

Process

Tuesday 5 November 2013

Page 46: Richard rodger   technical debt - web summit 2013

Mitigation As Good as it Gets

Tuesday 5 November 2013

Page 47: Richard rodger   technical debt - web summit 2013

Conform

Tuesday 5 November 2013

Page 48: Richard rodger   technical debt - web summit 2013

Rebel

Tuesday 5 November 2013

Page 49: Richard rodger   technical debt - web summit 2013

Evolve

Tuesday 5 November 2013

Page 50: Richard rodger   technical debt - web summit 2013

•Do one job•Death is natural•Use messages

•Really small

Cells

Tuesday 5 November 2013

Page 51: Richard rodger   technical debt - web summit 2013

•Do one job•Death is natural•Use messages

•Really small

Micro Services•One feature•kill and restart•No shared state

•100 lines of code

Tuesday 5 November 2013

Page 52: Richard rodger   technical debt - web summit 2013

ExamplesUser Data

Encrypt Password

Image Resize

SendEmail

Business Rule

Monitor

ParseFormat

Tuesday 5 November 2013

Page 53: Richard rodger   technical debt - web summit 2013

how do you route messages?

Pattern MatchingTuesday 5 November 2013

Page 54: Richard rodger   technical debt - web summit 2013

// load a user's data by name{ user:"load", name:"alice" }

// login user - load and check password{ user:"login", name:"alice", pass:"123"}

The user Service

some messages

github.com/rjrodger/websummit2013senecajs.org

Tuesday 5 November 2013

Page 55: Richard rodger   technical debt - web summit 2013

var users = { alice: {name:"alice", pass:"123"}, bob: {name:"bob", pass:"abc"},}

function user_load( args, done ) { // callback( err, result ) done( null, users[args.name] ) }

user_load action

Tuesday 5 November 2013

Page 56: Richard rodger   technical debt - web summit 2013

function user_login( args, done ) { user_load( { name:args.name }, function(err,user){ if( err || !user ) return done(err);

if( user.pass == args.pass ) return done( null, user );

return done(); })}

user_login action

Tuesday 5 November 2013

Page 57: Richard rodger   technical debt - web summit 2013

require("seneca")() .add({ user:"load" }, user_load) .add({ user:"login" }, user_login) .listen(8000)

$ node user.js

$ curl "http://localhost:8000/act ? user=login & name=alice & pass=123"

{ "name":"alice", "pass":"123" }

Run user Service using Seneca

Tuesday 5 November 2013

Page 58: Richard rodger   technical debt - web summit 2013

•Easy to change - just rewrite!•Easy to scale - run more instances•Easy to reason about - just messages•Easy to make robust - kill and restart!•Easy to build - natural units of work

What Happens?

Tuesday 5 November 2013

Page 59: Richard rodger   technical debt - web summit 2013

Technical Debt?lower interest rate!

See github forscaling and adapting

github.com/rjrodger/websummit2013senecajs.org

Tuesday 5 November 2013

Page 60: Richard rodger   technical debt - web summit 2013

•Java: twitter.github.io/finagle•Ruby: sinatrarb.com•Node: senecajs.org

Try this at Home!

Tuesday 5 November 2013

Page 61: Richard rodger   technical debt - web summit 2013

Technical Debt•overwhelms every other factor•should drive your architecture•can be mitigated with awareness

Tuesday 5 November 2013

Page 62: Richard rodger   technical debt - web summit 2013

Tuesday 5 November 2013

Page 63: Richard rodger   technical debt - web summit 2013

Thank You!@rjrodger

senecajs.org

Tuesday 5 November 2013


Recommended