background-image: url("imgs/Happy Thought.jpg") background-size: cover class: bottom, hide-logo .boxed[Technical Debt is a Social Problem] <br> --- # Technical Debt is a Social Problem ## Gordon Shotwell ## <svg style="height:0.8em;top:.04em;position:relative;fill:#1DA1F2;" viewBox="0 0 512 512"><path d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"/></svg> [techdebt.shotwell.ca](techdebt.shotwell.ca) ## <svg style="height:0.8em;top:.04em;position:relative;fill:#1DA1F2;" viewBox="0 0 512 512"><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg> [@gshotwell](https://twitter.com/gshotwell) ??? - 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 --- class: middle, center # Most technical debt is a failure <br>to *communicate* or to *consider* --- # Communication -- - Bad documentation -- - Poor test coverage -- - Code style - Project organization ??? - 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 -- - Code isn't robust -- - Code can't be updated easily -- - Doesn't solve future problems -- - Fragile dependencies - Doesn't scale ??? - 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 --- class: center # Status Quo Bias ### "I like my hair the way it is thanks" <img src="imgs/status_quo.jpg" width="600px" /> ??? - 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. --- class: center # IKEA Effect ### "My Poäng is the best Poäng." <img src="imgs/poang.jpg" height="400px" /> ??? - 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 --- class: middle .pull-left[ <img src="imgs/sumi_spinach.jpg" width="500px" /> ] .pull-right[ # Parenting Effect <br><br> ### "When you watch something grow up, you forgive the mess" ] ??? # 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 -- - One-step setup - Clear problem - Obvious first action -- - Path to mastery -- - Help is available - Never breaks ??? - How do you achieve this goal? - Three part plan --- <br> -- ## 1) Find the right beachhead -- ## 2) Separate users and maintainers -- ## 3) Empathize with the debtor --- background-image: url("imgs/Pier-1.jpg") background-size: cover class: bottom .boxed[Find the Right Beachhead <br><br>] ??? - 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. --- background-image: url("imgs/socure_research_code.png") background-size: cover # Find the right beachhead ??? Socure story --- # Find the right beachhead -- <br> - Small, contained project -- - Big improvement in small area -- - Orphan or greenfield -- - External pressure ??? Continue Socure story with putting database functions and credential managers in the database. --- background-image: url("imgs/Bike shop.jpg") background-size: cover class: bottom .boxed[ Separate users and maintainers<br><br>] ??? - 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 --- class: center, left -- # <br><br>Users get coddled. -- # <br>Maintainers get opinions. ??? - 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 -- - Responsible for delight -- - Product responsibility - Product authority -- - Never blame the user - Never ask the user to maintain --- # 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 ??? - 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 --- class: middle, center ### If people do not welcome your input on code style, <br>you are a user. --- # Useful questions: -- <br> .large["Can we use tabs instead of spaces?"] -- .large["Have you thought about Python Black?"] -- .large["My IDE really works best with 87 character line lengths] ..." -- .large["The data.table syntax is much more concise than tidyverse"] --- # Can you add this function? -- <img src="imgs/poop_emoji.png" width="2240" /> --- background-image: url("imgs/Red Cross.jpg") background-size: cover class: bottom .boxed[Empathize with the debtor <br><br>] --- # Empathize with the Debtor <br> - Fear makes learning impossible -- - Empathy diffuses fear -- - More often than not the debtor is you ??? - 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 -- <br> - Technical debt is a good sign -- - Thoughtful people doing their best -- - Thank the debt ??? - 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 --- class: .hide-logo background-image: url("imgs/socure_research_code.png") background-size: cover ??? - 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 --- class: hide-logo <img src="imgs/logo.png" width="250px" /> ### Help us eliminate identity fraud: ### [socure.com/about/careers](socure.com/about/careers) ### Get in touch ### <svg style="height:0.8em;top:.04em;position:relative;fill:#1DA1F2;" viewBox="0 0 512 512"><path d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"/></svg> [blog.shotwell.ca](blog.shotwell.ca) ### <svg style="height:0.8em;top:.04em;position:relative;fill:#1DA1F2;" viewBox="0 0 512 512"><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg> [@gshotwell](https://twitter.com/gshotwell) --- # Credits Baby photo is copyrighted and may not be reproduced without consent Black and white photos from the [Library of Congress](https://www.loc.gov/photos/) All other photos from [Wikipedia](https://www.wikipedia.org/) Presentation written using [Xaringan](https://github.com/yihui/xaringan/)