+ - 0:00:00
Notes for current slide
Notes for next slide
  • Technical debt is a major obstacle for using R in industry
  • Even if you know what to do it's very difficult to get it done
  • This is because it's fundamentally a people problem, not a computer problem

Technical Debt is a Social Problem

Gordon Shotwell

techdebt.shotwell.ca

@gshotwell

2 / 62
  • Technical debt is a major obstacle for using R in industry
  • Even if you know what to do it's very difficult to get it done
  • This is because it's fundamentally a people problem, not a computer problem

Most technical debt is a failure
to communicate or to consider

3 / 62

Communication

4 / 62

Communication

  • Bad documentation
5 / 62

Communication

  • Bad documentation

  • Poor test coverage

6 / 62

Communication

  • Bad documentation

  • Poor test coverage

  • Code style

  • Project organization

7 / 62
  • These are all ways of communicating with other people about the machines
  • We should judge the success or failure of these artifacts by whether the interpersonal communication is successful

Consideration

8 / 62

Consideration

  • Code isn't robust
9 / 62

Consideration

  • Code isn't robust
  • Code can't be updated easily
10 / 62

Consideration

  • Code isn't robust
  • Code can't be updated easily
  • Doesn't solve future problems
11 / 62

Consideration

  • Code isn't robust
  • Code can't be updated easily
  • Doesn't solve future problems
  • Fragile dependencies

  • Doesn't scale

12 / 62
  • Our solutions will always solve our problems, but they often don't solve ofter people's problems
  • If you do a better job considring other people's needs and abilities there will be less debt
  • Our systems are robust when they are independent of the particular person who developed them

Segway

  • Realizing that technical debt is social also gives us insight into why it's so hard to pay back.
  • Paying back technical debt is more about relating with people than with machines
  • People are fickle and biased

Status Quo Bias

"I like my hair the way it is thanks"

13 / 62
  • The people who use the current system have already paid the price of learning it so they underestimate how difficult it is for a new person.

IKEA Effect

"My Poäng is the best Poäng."

14 / 62
  • People overvalue things that they have built.
  • Investing your ego in something makes it seem awesome
  • This is why engineers prefer to build bad products rather than buy good ones

Parenting Effect



"When you watch something grow up, you forgive the mess"

15 / 62

Segway

  • The result of all of this is that it's never a fair fight
  • The debt has the advantage, and it's not enough to do just a little better
  • To succeed you have to dramatically exceed the status quo.
  • How do you do that?

Build delightful products

16 / 62

Build delightful products

  • One-step setup

  • Clear problem

  • Obvious first action

17 / 62

Build delightful products

  • One-step setup

  • Clear problem

  • Obvious first action

  • Path to mastery

18 / 62

Build delightful products

  • One-step setup

  • Clear problem

  • Obvious first action

  • Path to mastery

  • Help is available

  • Never breaks
19 / 62
  • How do you achieve this goal?
  • Three part plan


20 / 62


1) Find the right beachhead

21 / 62


1) Find the right beachhead

2) Separate users and maintainers

22 / 62


1) Find the right beachhead

2) Separate users and maintainers

3) Empathize with the debtor

23 / 62

Find the Right Beachhead     

24 / 62
  • A beachhead is not about solving the problem, but carving out a place from which you can solve it.
  • It gives you time to build trust, set up infrastructue, and make mistakes in a low-risk setting.

Find the right beachhead

25 / 62

Socure story

Find the right beachhead

26 / 62

Find the right beachhead

  • Small, contained project
27 / 62

Find the right beachhead

  • Small, contained project

  • Big improvement in small area

28 / 62

Find the right beachhead

  • Small, contained project

  • Big improvement in small area

  • Orphan or greenfield

29 / 62

Find the right beachhead

  • Small, contained project

  • Big improvement in small area

  • Orphan or greenfield

  • External pressure

30 / 62

Continue Socure story with putting database functions and credential managers in the database.

Separate users and maintainers

31 / 62
  • To build delightful products we need to treat intenral products more like external products.
  • Each system should have a written down list of maintainers
  • Everyone else is a user
  • These two groups abide by a basic and holy contract
32 / 62



Users get coddled.

33 / 62



Users get coddled.


Maintainers get opinions.

34 / 62
  • We all want to sit between these two things
  • We want to be coddled AND have opinions
  • We want to make decisions, but we don't want deal with the consequences of those decisions
  • We want to write code but we don't want to write the test.
  • This contract says you must pick one or the other

Being a good maintainer

35 / 62

Being a good maintainer

  • Responsible for delight
36 / 62

Being a good maintainer

  • Responsible for delight

  • Product responsibility

  • Product authority
37 / 62

Being a good maintainer

  • Responsible for delight

  • Product responsibility

  • Product authority

  • Never blame the user

  • Never ask the user to maintain

38 / 62

Being a good user

39 / 62

Being a good user

  • Define delight
40 / 62

Being a good user

  • Define delight

  • Don't be too smart!

  • Don't work too hard!

41 / 62

Being a good user

  • Define delight

  • Don't be too smart!

  • Don't work too hard!

  • Ask about the problem not the solution

42 / 62

Being a good user

  • Define delight

  • Don't be too smart!

  • Don't work too hard!

  • Ask about the problem not the solution

  • Complain without embarrassment

  • Refuse to read source code

43 / 62
  • It's challenging to turn your developer brain off when you are a user.
  • It is rarely worth your time to debug a system that you do not maintain

If people do not welcome your input on code style,
you are a user.

44 / 62

Useful questions:

45 / 62

Useful questions:

"Can we use tabs instead of spaces?"

46 / 62

Useful questions:

"Can we use tabs instead of spaces?"

"Have you thought about Python Black?"

47 / 62

Useful questions:

"Can we use tabs instead of spaces?"

"Have you thought about Python Black?"

"My IDE really works best with 87 character line lengths ..."

48 / 62

Useful questions:

"Can we use tabs instead of spaces?"

"Have you thought about Python Black?"

"My IDE really works best with 87 character line lengths ..."

"The data.table syntax is much more concise than tidyverse"

49 / 62

Can you add this function?

50 / 62

Can you add this function?

51 / 62

Empathize with the debtor    

52 / 62

Empathize with the Debtor


  • Fear makes learning impossible
53 / 62

Empathize with the Debtor


  • Fear makes learning impossible

  • Empathy diffuses fear

54 / 62

Empathize with the Debtor


  • Fear makes learning impossible

  • Empathy diffuses fear

  • More often than not the debtor is you
55 / 62
  • You have to appreciate what people do and where they're coming from for them to trust you
  • If they don't trust you, you will fail.
  • There's a lot about the current set up that you need to learn from

Thank your code

56 / 62

Thank your code

  • Technical debt is a good sign
57 / 62

Thank your code

  • Technical debt is a good sign

  • Thoughtful people doing their best

58 / 62

Thank your code

  • Technical debt is a good sign

  • Thoughtful people doing their best

  • Thank the debt
59 / 62
  • The fact that you're paying back technical debt means you haven't declared technical bankruptcy.
  • It's a sign of a successful product, and a successful team
  • All we can ask of people the problems in front of them with the skills that they have
  • All we can ask of code is to get us to the next step
  • Much of this code was developed at a time when Socure was urgently trying to develop a marketable product
  • The company did that and now has one of the best models in the market
  • This code won us customers and investment
  • It did it's job

Credits

Baby photo is copyrighted and may not be reproduced without consent

Black and white photos from the Library of Congress

All other photos from Wikipedia

Presentation written using Xaringan

62 / 62

Technical Debt is a Social Problem

Gordon Shotwell

techdebt.shotwell.ca

@gshotwell

2 / 62
  • Technical debt is a major obstacle for using R in industry
  • Even if you know what to do it's very difficult to get it done
  • This is because it's fundamentally a people problem, not a computer problem
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
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow