Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pushing Through Friction (Web Unleashed 2019)

Dan Na
September 14, 2019

Pushing Through Friction (Web Unleashed 2019)

Things are broken. The deployment pipeline is painfully slow, your engineering team has doubled in the last year and there’s a lack of sufficient process and management. You git blame a file that’s used everywhere but nobody understands it and the person who wrote it left the company five years ago.

Experience tells you things could be better. You see the gaps; if only the company adopted policy A or dumped technology B, everyone would benefit, but there’s so much inertia, the company has always used B. You are frustrated. Can you make an actual difference here?

Yes. You are encountering organizational friction, and learning to identify, accept and push through friction is a key skill of engineering leaders. In this talk Dan will discuss why organizational friction occurs and some actionable steps on how to mitigate it. Why no matter what role you have – manager or individual contributor – the ability to push through friction will distinguish you throughout your career.

Dan tweeted a popular thread about pushing through friction in March 2019 (https://twitter.com/dxna/status/1103683631376154624) , this talk expands on the contents of that tweet.

Delivered on September 14, 2019 at Web Unleashed 2019 in Toronto, CA: https://fitc.ca/presentation/pushing-through-friction/

* Talk notes: https://talks.danielna.com/webunleashed-2019/

Dan Na

September 14, 2019
Tweet

More Decks by Dan Na

Other Decks in Programming

Transcript

  1. 1

  2. 2 Senior Engineer: You know, I've figured out a way

    to improve our database performance by 75%.
  3. 3 Senior Engineer: You know, I've figured out a way

    to improve our database performance by 75%. me: Yeah? Wow, that sounds amazing.
  4. 4 Senior Engineer: You know, I've figured out a way

    to improve our database performance by 75%. me: Yeah? Wow, that sounds amazing. "Yeah, except it’s not going to happen."
  5. 5 Senior Engineer: You know, I've figured out a way

    to improve our database performance by 75%. me: Yeah? Wow, that sounds amazing. "Yeah, except it’s not going to happen." Weird. Is it because it’s a lot of work?
  6. 6 Senior Engineer: You know, I've figured out a way

    to improve our database performance by 75%. me: Yeah? Wow, that sounds amazing. "Yeah, except it’s not going to happen." Weird. Is it because it’s a lot of work? No, it’d take maybe two weeks to complete.
  7. 8 Uh... then why not do it? Seems like an

    obvious win. What gives? Yeah, I emailed the head of that team. Shared my idea with proof that it'd work. But they're in the middle of an 18 month project and I didn't get a response. I guess my idea just isn't important enough.
  8. 9 Wait, what? Your idea improves database performance by 75%

    across the entire product, takes two weeks, and is tabled for working on an 18 month project?
  9. 10 Wait, what? Your idea improves database performance by 75%

    across the entire product, takes two weeks, and is tabled for working on an 18 month project? Yeah, I'm frustrated.
  10. 12 Did you ever follow up outside of sending an

    email? Look man, I did my part. I looked into a hard problem and found a solution and offered it to the relevant team. And at the end of the day nobody cared. So I'm frustrated.
  11. Outcomes • A senior engineer at a company developed a

    brilliant idea to dramatically increase product performance at minimal engineering cost. 13
  12. Outcomes • A senior engineer at a company developed a

    brilliant idea to dramatically increase product performance at minimal engineering cost. • That idea will not be executed, and as a result, customers will suffer. 14
  13. Outcomes • A senior engineer at a company developed a

    brilliant idea to dramatically increase product performance at minimal engineering cost. • That idea will not be executed, and as a result, customers will suffer. • That senior engineer feels like their ideas, no matter how brilliant, do not have an impact. 15
  14. 17

  15. 18

  16. Dan Na, Squarespace Web Unleashed 2019 | September 14, 2019

    | Toronto, Canada Pushing Through Friction
  17. 21

  18. 22

  19. 23

  20. 24

  21. 25

  22. 28

  23. 29

  24. 30

  25. 31

  26. 32

  27. 33

  28. 34

  29. 35

  30. More friction • You git blame a file that's used

    everywhere but nobody understands it and the person who wrote it left the company five years ago. • You begin work to update an old, untouched but critical part of the codebase, only to realize there are no tests. 36
  31. More friction • You git blame a file that's used

    everywhere but nobody understands it and the person who wrote it left the company five years ago. • You begin work to update an old, untouched but critical part of the codebase, only to realize there are no tests. 37
  32. Organizational friction • New hires often feel lost, disengaged and

    unhappy. • Teams are building redundant or non-complementary features. 39
  33. Organizational friction • New hires often feel lost, disengaged and

    unhappy. • Teams are building redundant or non-complementary features. • You look around the lunch room and everyone looks the same. 40
  34. Friction lies within the gap between how things are and

    how they should be; your reality and your ideal. Friction is all the work it’s going to take to get there. 41
  35. You've promised to ship a thing on a deadline and

    you unexpectedly discover that the underlying system is wildly inaccurate. 42
  36. 45

  37. “ When I started at Uber, we were almost 1,000

    employees and were doubling the headcount every six months. An old-timer summarized their experience as: "We're growing so quickly that every six months we're a new company." A bystander quickly added a corollary: "Which means our process is always six months behind our head count." 46 “An Elegant Puzzle: Systems of Engineering Management” Will Larson, then Senior Engineering Manager, Uber
  38. Tech company categories by headcount Category # of employees Startups

    < 100 Mid-sized 100 - 2,000 Large 2,000 - Google (100,000+) 47
  39. Tech company categories by headcount Category # of employees Startups

    < 100 Mid-sized 100 - 2,000 Large 2,000 - Google (100,000+) 48
  40. 49

  41. Startup Priorities • Ship fast • Figure out the product

    • Find customers 51 Mid-sized Priorities • Scale the product • Scale the organization • Don’t implode
  42. 52

  43. The success criteria moves from individuals shipping code out the

    door as fast as they can to teams executing, in concert, with operational excellence. 53
  44. 55

  45. 1. There are five checklists and mandatory control checks that

    are required to be run prior to flying. The pilots never ran any of them. 56
  46. 1. There are five checklists and mandatory control checks that

    are required to be run prior to flying. The pilots never ran any of them. 2. Pilot interviews and voice recordings also showed that mandatory flight control checks were not performed on this flight, nor were they ever performed. 57
  47. 1. There are five checklists and mandatory control checks that

    are required to be run prior to flying. The pilots never ran any of them. 2. Pilot interviews and voice recordings also showed that mandatory flight control checks were not performed on this flight, nor were they ever performed. 3. The crew received an alert message indicating that the rudder’s load limiter had activated. This is abnormal. The crew saw the alert. We know this because it was verbalized. Action taken? None. 58
  48. 4. The pilot was unable to push the power levers

    far enough forward to achieve takeoff thrust. Worse, he actually verbalized that he wasn’t able to get full power, yet continued the takeoff anyway. 59
  49. 4. The pilot was unable to push the power levers

    far enough forward to achieve takeoff thrust. Worse, he actually verbalized that he wasn’t able to get full power, yet continued the takeoff anyway. 5. The pilot realized the gust lock was engaged, and said so verbally several times. At this point, the aircraft had about 5,000 feet of runway remaining, which afforded plenty of time to abort the takeoff. They chose to continue anyway. 60
  50. The normalization of deviance is when deviant behavior becomes the

    norm. To anyone outside of your organization it's obvious that what you're doing doesn't make sense, but to those inside the organization it's normal and standard procedure. 62
  51. 63

  52. 64

  53. Real Onboarding WTFs • We don't have a staging environment?

    • How do we deploy to prod? Ask the CTO to do it. 66
  54. Real Onboarding WTFs • We don't have a staging environment?

    • How do we deploy to prod? Ask the CTO to do it. • I didn’t have a 1-on-1 with my manager until a year after my start date. 67
  55. Real Onboarding WTFs • We don't have a staging environment?

    • How do we deploy to prod? Ask the CTO to do it. • I didn’t have a 1-on-1 with my manager until a year after my start date. • There was a hard limit on how much code we could deploy, so we switched our indentation from spaces to tabs and bought ourselves a few more months. 68
  56. Summary so far • Friction is an inevitable outcome of

    company growth, which we can’t control. • But friction is often made worse by the normalization of deviance, which we can control. 70
  57. 75

  58. 76

  59. Single points of failure • Leads to burn-out • When

    those individuals leave the company is screwed 77
  60. Effective docs criteria • Single source of truth • Updating

    docs is part of the acceptance criteria for shipping new work. 78
  61. • ES5 • ES6 • CoffeeScript • IcedCoffeeScript Goal: Major

    bump a dependency 82 • Semi-colons • No semi-colons
  62. • ES5 • ES6 • CoffeeScript • IcedCoffeeScript Goal: Major

    bump a dependency 83 • Semi-colons • No semi-colons • Prettier • eslint
  63. • ES5 • ES6 • CoffeeScript • IcedCoffeeScript Goal: Major

    bump a dependency 84 • Semi-colons • No semi-colons • Prettier • eslint • Jest • Jasmine • Mocha • No-tests
  64. 85

  65. 86

  66. 88

  67. 89

  68. 90

  69. 93

  70. “ Dr. Smith’s penmanship is frequently illegible, but he becomes

    very testy and sometimes downright insulting when a nurse asks him to clarify what he’s written down. So, rather than ask him, the annoyed nurse will proceed to the nurse’s station, consult with another nurse or two, and collectively try to decipher Dr. Smith’s scrawl. 94 “The normalization of deviance in healthcare delivery.” Banja, 2011
  71. 98 Manager: Hey Dan, I wanted to let you know

    — we've decided to stop the project.
  72. 99 Manager: Hey Dan, I wanted to let you know

    — we've decided to stop the project. me: What?! Why? Do you know how hard we've worked on this?
  73. M: Yeah, we do. I want to make a few

    things clear. Number one: we recognize your team’s effort on this. We think you've done amazing work in response to a really hard ask. We also think you've learned a ton and we know that everything you've learned will only help you ship harder and more visible projects moving forward. We are super proud of all of the work you've done. 100
  74. But the data on the project isn't lining up. We

    miscalculated and it's our fault, not yours. We've received new data that proves our original forecasts were wrong, and instead of having you spend the next four months working on something we don't think will work, we'd rather put you on a project that we think is better positioned for success. 101
  75. But the data on the project isn't lining up. We

    miscalculated and it's our fault, not yours. We've received new data that proves our original forecasts were wrong, and instead of having you spend the next four months working on something we don't think will work, we'd rather put you on a project that we think is better positioned for success. 102 Oh; okay. Well that... is a bummer. Can I take some time to process this? I can't say I'm not disappointed.
  76. Yeah, absolutely. Take some PTO and get your mind right.

    We just want to make sure we're honest with you because we value your trust. 103
  77. Okay. Well, thanks for letting me know. Yeah, absolutely. Take

    some PTO and get your mind right. We just want to make sure we're honest with you because we value your trust. 104
  78. “ Of course coding is an important skill in a

    software engineering team. But there are a ton of other skills that we need to bring to work every day. Skills that can mean the difference between a project that succeeds and one that fails. 106
  79. “ 107 Like noticing when other people in the team

    are blocked and helping them out. Or reviewing design documents and noticing what's being handwaved or what's inconsistent. Or onboarding the new people and making them productive faster. Or improving processes to make customers happy. I call all of this glue work. “Being Glue”, Tanya Reilly
  80. 110

  81. “ Psychological safety is ‘‘a sense of confidence that the

    team will not embarrass, reject or punish someone for speaking up... It describes a team climate characterized by interpersonal trust and mutual respect in which people are comfortable being themselves.’’ 111 “What Google Learned From Its Quest to Build the Perfect Team” NYTimes, 2016.
  82. 116 “Oh, originally we thought we were building a suite

    of billing components. Over time it became only checkout.”
  83. 117

  84. Pragmatic optimism to see what realistically could be made better;

    Courage to acknowledge what needs to be fixed and be accountable; Persistence to stick to it. 119
  85. Making the best engineering decision will often have friction. There’s

    often the correct path and the easy path. Take the correct path, even if it’s hard, because it ultimately leads to better outcomes. 120
  86. 127 Look man, I did my part. I looked into

    a hard problem and found a solution and offered it to the relevant team. And at the end of the day nobody cared. So I'm frustrated.
  87. 128 Hmm, it doesn’t make logical sense to block this

    work. The improvement is massive and quick! Look man, I did my part. I looked into a hard problem and found a solution and offered it to the relevant team. And at the end of the day nobody cared. So I'm frustrated.
  88. 129 Hmm, it doesn’t make logical sense to block this

    work. The improvement is massive and quick! Look man, I did my part. I looked into a hard problem and found a solution and offered it to the relevant team. And at the end of the day nobody cared. So I'm frustrated. I know!
  89. 130 Are you sure that team understands what you’re proposing?

    It doesn’t make sense that they wouldn’t care.
  90. 131 Are you sure that team understands what you’re proposing?

    It doesn’t make sense that they wouldn’t care. Well I sent the email didn’t I?
  91. 132 Are you sure that team understands what you’re proposing?

    It doesn’t make sense that they wouldn’t care. Well I sent the email didn’t I? How many emails do you get per day?
  92. 133 Are you sure that team understands what you’re proposing?

    It doesn’t make sense that they wouldn’t care. Well I sent the email didn’t I? Like… a hundred... How many emails do you get per day?
  93. 134 Did you try talking to them in person? Did

    you try writing up a formal RFC that outlines your findings and circulating it for advocates?
  94. 135 No... Did you try talking to them in person?

    Did you try writing up a formal RFC that outlines your findings and circulating it for advocates?
  95. 136 No... That could be the best way to get

    this done. That team is probably swamped too. Did you try talking to them in person? Did you try writing up a formal RFC that outlines your findings and circulating it for advocates?
  96. 137 No... Okay, I’ll give it a shot. That could

    be the best way to get this done. That team is probably swamped too. Did you try talking to them in person? Did you try writing up a formal RFC that outlines your findings and circulating it for advocates?