[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:18.00,0:00:19.19,Default,,0000,0000,0000,,YEHUDA KATZ: So it's been ten years. Dialogue: 0,0:00:19.19,0:00:20.71,Default,,0000,0000,0000,,Unlike DHH I can't get up here and Dialogue: 0,0:00:20.71,0:00:22.89,Default,,0000,0000,0000,,tell you I've been doing Rails for ten years. Dialogue: 0,0:00:22.89,0:00:24.68,Default,,0000,0000,0000,,I've been doing Rails for nine or eight or\Nsomething Dialogue: 0,0:00:24.68,0:00:26.52,Default,,0000,0000,0000,,like that. But, Rails has been around Dialogue: 0,0:00:26.52,0:00:29.02,Default,,0000,0000,0000,,for ten years, and so it's not surprising Dialogue: 0,0:00:29.02,0:00:30.32,Default,,0000,0000,0000,,that a bunch of people are gonna get up here Dialogue: 0,0:00:30.32,0:00:33.36,Default,,0000,0000,0000,,and do a little bit of a retrospective. Dialogue: 0,0:00:33.36,0:00:36.45,Default,,0000,0000,0000,,So this is sort of my feeling. Oh my god, Dialogue: 0,0:00:36.45,0:00:39.23,Default,,0000,0000,0000,,I remember sort of thinking back in 2008, Dialogue: 0,0:00:39.23,0:00:43.34,Default,,0000,0000,0000,,when DHH was, was giving his talk about sort\Nof Dialogue: 0,0:00:43.34,0:00:46.15,Default,,0000,0000,0000,,a look back around the same year that Merb Dialogue: 0,0:00:46.15,0:00:48.93,Default,,0000,0000,0000,,was becoming a thing, and DHH, and we were Dialogue: 0,0:00:48.93,0:00:51.90,Default,,0000,0000,0000,,eventually gonna, you know, merge a little\Nbit later. Dialogue: 0,0:00:51.90,0:00:54.40,Default,,0000,0000,0000,,But in 2008, when DHH gave the great surplus Dialogue: 0,0:00:54.40,0:00:57.37,Default,,0000,0000,0000,,talk, that was sort of a retrospective year\Ntoo, Dialogue: 0,0:00:57.37,0:00:58.69,Default,,0000,0000,0000,,because we had gotten to the point Dialogue: 0,0:00:58.69,0:01:00.70,Default,,0000,0000,0000,,where Rails was big enough that it couldn't Dialogue: 0,0:01:00.70,0:01:02.45,Default,,0000,0000,0000,,actually host a competitor. Dialogue: 0,0:01:02.45,0:01:04.36,Default,,0000,0000,0000,,And I think it's really great that we ended Dialogue: 0,0:01:04.36,0:01:06.46,Default,,0000,0000,0000,,up merging in and we ended up getting another Dialogue: 0,0:01:06.46,0:01:09.58,Default,,0000,0000,0000,,five, six years of, of, of great, a great Dialogue: 0,0:01:09.58,0:01:12.73,Default,,0000,0000,0000,,framework community. But now it's another\Nopportunity to look Dialogue: 0,0:01:12.73,0:01:15.42,Default,,0000,0000,0000,,back and think about sort of what, what the Dialogue: 0,0:01:15.42,0:01:17.72,Default,,0000,0000,0000,,Rails community is and how you should think\Nabout Dialogue: 0,0:01:17.72,0:01:21.22,Default,,0000,0000,0000,,taking the lessons of Rails to other environments.\NAnd Dialogue: 0,0:01:21.22,0:01:22.96,Default,,0000,0000,0000,,that's sort of what my talk is about today. Dialogue: 0,0:01:22.96,0:01:25.97,Default,,0000,0000,0000,,So, I'm gonna start by saying, I think, if Dialogue: 0,0:01:25.97,0:01:27.66,Default,,0000,0000,0000,,you think about one thing about Rails, if\Nyou Dialogue: 0,0:01:27.66,0:01:31.68,Default,,0000,0000,0000,,want to think about what Rails is above anything Dialogue: 0,0:01:31.68,0:01:35.64,Default,,0000,0000,0000,,else, I think Rails popularized the idea of\Nconvention Dialogue: 0,0:01:35.64,0:01:38.00,Default,,0000,0000,0000,,over configuration. And you've been hearing\Nthe term convention Dialogue: 0,0:01:38.00,0:01:41.94,Default,,0000,0000,0000,,over configuration for ten years now. So probably\Nit's Dialogue: 0,0:01:41.94,0:01:43.93,Default,,0000,0000,0000,,sort of, it's a meaningless term. It's sort\Nof Dialogue: 0,0:01:43.93,0:01:45.22,Default,,0000,0000,0000,,like when you hear the same word over and Dialogue: 0,0:01:45.22,0:01:47.61,Default,,0000,0000,0000,,over and over again, eventually you reach\Nsemantic saturation. Dialogue: 0,0:01:47.61,0:01:50.30,Default,,0000,0000,0000,,I think we've all reached semantic saturation\Nof the Dialogue: 0,0:01:50.30,0:01:51.84,Default,,0000,0000,0000,,term convention over configuration. Dialogue: 0,0:01:51.84,0:01:55.19,Default,,0000,0000,0000,,I want to unpack it a little bit. I Dialogue: 0,0:01:55.19,0:01:58.42,Default,,0000,0000,0000,,think one way of thinking about it is, is Dialogue: 0,0:01:58.42,0:02:00.22,Default,,0000,0000,0000,,this other term called the paradox of choice.\NThis Dialogue: 0,0:02:00.22,0:02:03.44,Default,,0000,0000,0000,,idea that people, well I'll let DHH say what Dialogue: 0,0:02:03.44,0:02:05.52,Default,,0000,0000,0000,,it is, people like choices a lot more than Dialogue: 0,0:02:05.52,0:02:08.12,Default,,0000,0000,0000,,they like having to actually choose. Right,\Nso there's Dialogue: 0,0:02:08.12,0:02:10.81,Default,,0000,0000,0000,,this, I think this sort of narrow point, but Dialogue: 0,0:02:10.81,0:02:12.55,Default,,0000,0000,0000,,it's still a very important point, which is\Nthat Dialogue: 0,0:02:12.55,0:02:17.01,Default,,0000,0000,0000,,people go into environments, they go into\Nprogramming environments Dialogue: 0,0:02:17.01,0:02:20.50,Default,,0000,0000,0000,,or groceries or whatever, and they like the\Nidea Dialogue: 0,0:02:20.50,0:02:22.41,Default,,0000,0000,0000,,of having a whole lot of choices, a lot Dialogue: 0,0:02:22.41,0:02:25.00,Default,,0000,0000,0000,,more than they like having to actually choose\Nwhat Dialogue: 0,0:02:25.00,0:02:25.39,Default,,0000,0000,0000,,to do. Dialogue: 0,0:02:25.39,0:02:26.79,Default,,0000,0000,0000,,And this is sort of the state of the Dialogue: 0,0:02:26.79,0:02:29.08,Default,,0000,0000,0000,,art, this is what we knew in 2008 when Dialogue: 0,0:02:29.08,0:02:32.80,Default,,0000,0000,0000,,David gave the great surplus talk back then.\NAnd Dialogue: 0,0:02:32.80,0:02:34.39,Default,,0000,0000,0000,,what I want to do is go a little Dialogue: 0,0:02:34.39,0:02:38.26,Default,,0000,0000,0000,,bit beyond sort of these, these pithy points\Nand Dialogue: 0,0:02:38.26,0:02:41.02,Default,,0000,0000,0000,,talk a little bit about what, what's happening,\Nwhat Dialogue: 0,0:02:41.02,0:02:44.99,Default,,0000,0000,0000,,is actually going on that's causing this idea\Nto Dialogue: 0,0:02:44.99,0:02:47.73,Default,,0000,0000,0000,,occur. What's hap- causing the paradox of\Nchoice? And Dialogue: 0,0:02:47.73,0:02:49.88,Default,,0000,0000,0000,,actually there's been a lot of science, even\Nin Dialogue: 0,0:02:49.88,0:02:53.17,Default,,0000,0000,0000,,2008 there was science, but in between 2008\Nand Dialogue: 0,0:02:53.17,0:02:55.07,Default,,0000,0000,0000,,now, or certainly 2004 and now, there's been\Na Dialogue: 0,0:02:55.07,0:02:59.87,Default,,0000,0000,0000,,tremendous amount of science about what is\Ncausing the Dialogue: 0,0:02:59.87,0:03:03.21,Default,,0000,0000,0000,,paradox of choice. What is causing convention\Nover configuration Dialogue: 0,0:03:03.21,0:03:05.02,Default,,0000,0000,0000,,to be effective. Dialogue: 0,0:03:05.02,0:03:06.26,Default,,0000,0000,0000,,And if you want to Google it, if you Dialogue: 0,0:03:06.26,0:03:08.64,Default,,0000,0000,0000,,want to go find something, more information\Nabout this Dialogue: 0,0:03:08.64,0:03:13.01,Default,,0000,0000,0000,,on Wikipedia, the term is called ego depletion.\NSometimes Dialogue: 0,0:03:13.01,0:03:15.99,Default,,0000,0000,0000,,the idea of cognitive depletion. And in order\Nto Dialogue: 0,0:03:15.99,0:03:18.92,Default,,0000,0000,0000,,understand what's happening here, you first\Nneed to understand, Dialogue: 0,0:03:18.92,0:03:20.49,Default,,0000,0000,0000,,you first need to think about sort of, like, Dialogue: 0,0:03:20.49,0:03:24.27,Default,,0000,0000,0000,,your everyday, your everyday job, your, how\Nyou feel Dialogue: 0,0:03:24.27,0:03:24.95,Default,,0000,0000,0000,,during the day. Dialogue: 0,0:03:24.95,0:03:28.18,Default,,0000,0000,0000,,So you wake up in the morning. You get Dialogue: 0,0:03:28.18,0:03:30.74,Default,,0000,0000,0000,,out, you go out of the house, and you're Dialogue: 0,0:03:30.74,0:03:33.22,Default,,0000,0000,0000,,pretty much fully charged. You're ready to\Nattack the Dialogue: 0,0:03:33.22,0:03:35.58,Default,,0000,0000,0000,,world, you, hopefully it's sunny and you can\Nskip Dialogue: 0,0:03:35.58,0:03:37.96,Default,,0000,0000,0000,,down the street. And you're, you're ready\Nto do Dialogue: 0,0:03:37.96,0:03:40.23,Default,,0000,0000,0000,,anything. You're ready. You have all the,\Nthe, the Dialogue: 0,0:03:40.23,0:03:42.74,Default,,0000,0000,0000,,cognitive resources in the world. Dialogue: 0,0:03:42.74,0:03:45.19,Default,,0000,0000,0000,,And then, you know, you get to your desk. Dialogue: 0,0:03:45.19,0:03:48.86,Default,,0000,0000,0000,,I find it amusing that, that character is\Na Dialogue: 0,0:03:48.86,0:03:52.59,Default,,0000,0000,0000,,programmer. It's so perfect. So you get to\Nyour Dialogue: 0,0:03:52.59,0:03:54.47,Default,,0000,0000,0000,,desk and you know you've, you've done a little Dialogue: 0,0:03:54.47,0:03:57.29,Default,,0000,0000,0000,,bit of work, and you're cognitive resources\Nstart to Dialogue: 0,0:03:57.29,0:03:58.78,Default,,0000,0000,0000,,deplete a little bit. You got a little bit Dialogue: 0,0:03:58.78,0:04:02.03,Default,,0000,0000,0000,,fewer cognitive resources. You know, eventually\Nsomething happens during Dialogue: 0,0:04:02.03,0:04:05.59,Default,,0000,0000,0000,,the day that you might not, that might not Dialogue: 0,0:04:05.59,0:04:09.86,Default,,0000,0000,0000,,be so pleasant, and your cognitive resources\Ndeplete and Dialogue: 0,0:04:09.86,0:04:11.87,Default,,0000,0000,0000,,then you reach a point, at some point during Dialogue: 0,0:04:11.87,0:04:13.01,Default,,0000,0000,0000,,the day - this is a Van Gogh painting Dialogue: 0,0:04:13.01,0:04:15.20,Default,,0000,0000,0000,,- you reach a point some time during the Dialogue: 0,0:04:15.20,0:04:17.47,Default,,0000,0000,0000,,day where you're really flagging. You're feeling\Nlike you Dialogue: 0,0:04:17.47,0:04:18.96,Default,,0000,0000,0000,,don't have a lot of capacity to left to, Dialogue: 0,0:04:18.96,0:04:21.35,Default,,0000,0000,0000,,to do anything or to think hard. And eventually Dialogue: 0,0:04:21.35,0:04:23.55,Default,,0000,0000,0000,,you totally run out. You run out of cognitive Dialogue: 0,0:04:23.55,0:04:26.25,Default,,0000,0000,0000,,resources entirely and you're done. Dialogue: 0,0:04:26.25,0:04:28.05,Default,,0000,0000,0000,,And so the idea here is the concept of Dialogue: 0,0:04:28.05,0:04:30.72,Default,,0000,0000,0000,,cognitive depletion or ego depletion, you\Nhave a certain Dialogue: 0,0:04:30.72,0:04:32.94,Default,,0000,0000,0000,,amount of resources and they run out. And\NI Dialogue: 0,0:04:32.94,0:04:34.69,Default,,0000,0000,0000,,think most people think about this in terms\Nof, Dialogue: 0,0:04:34.69,0:04:36.56,Default,,0000,0000,0000,,like, you're day job. Right, so you wake up Dialogue: 0,0:04:36.56,0:04:39.69,Default,,0000,0000,0000,,in the morning. Throughout the day your resources\Ndeplete. Dialogue: 0,0:04:39.69,0:04:40.53,Default,,0000,0000,0000,,You get to the end of the day, you're Dialogue: 0,0:04:40.53,0:04:42.63,Default,,0000,0000,0000,,out of resources. Rinse and repeat. I think\Nthat's Dialogue: 0,0:04:42.63,0:04:43.94,Default,,0000,0000,0000,,how most people think about it and that's\Nsort Dialogue: 0,0:04:43.94,0:04:45.68,Default,,0000,0000,0000,,of how I framed it here. Dialogue: 0,0:04:45.68,0:04:48.10,Default,,0000,0000,0000,,But the really interesting thing about ego\Ndepletion or Dialogue: 0,0:04:48.10,0:04:51.24,Default,,0000,0000,0000,,cognitive depletion is that what actually\Nturns out to Dialogue: 0,0:04:51.24,0:04:52.65,Default,,0000,0000,0000,,be the case is that there's sort of this Dialogue: 0,0:04:52.65,0:04:57.14,Default,,0000,0000,0000,,one, there's this one big pool of resources,\Nthis Dialogue: 0,0:04:57.14,0:04:59.53,Default,,0000,0000,0000,,one battery, that's actually used for a lot\Nof Dialogue: 0,0:04:59.53,0:05:02.10,Default,,0000,0000,0000,,different things. And so there's a lot of\Nstudies Dialogue: 0,0:05:02.10,0:05:05.85,Default,,0000,0000,0000,,about things like grocery stores, right. So\Nwhy is Dialogue: 0,0:05:05.85,0:05:07.84,Default,,0000,0000,0000,,it that when you go to a grocery store, Dialogue: 0,0:05:07.84,0:05:10.07,Default,,0000,0000,0000,,why do you find yourself so willing to buy Dialogue: 0,0:05:10.07,0:05:12.63,Default,,0000,0000,0000,,something at the impulse, at the impulse aisle?\NRight, Dialogue: 0,0:05:12.63,0:05:13.95,Default,,0000,0000,0000,,at the end of the, at the end of Dialogue: 0,0:05:13.95,0:05:15.75,Default,,0000,0000,0000,,the grocery trip. Dialogue: 0,0:05:15.75,0:05:17.24,Default,,0000,0000,0000,,And the reason is that you spent all this Dialogue: 0,0:05:17.24,0:05:20.06,Default,,0000,0000,0000,,time in the grocery store doing not very difficult Dialogue: 0,0:05:20.06,0:05:22.62,Default,,0000,0000,0000,,activities, but you're making a lot of choices.\NSo Dialogue: 0,0:05:22.62,0:05:24.66,Default,,0000,0000,0000,,you're making choices the entire time, as\Nyou're walking Dialogue: 0,0:05:24.66,0:05:27.72,Default,,0000,0000,0000,,around the grocery store. And eventually your\Nbrain just Dialogue: 0,0:05:27.72,0:05:29.81,Default,,0000,0000,0000,,runs out of resources to do anything else,\Nand Dialogue: 0,0:05:29.81,0:05:32.55,Default,,0000,0000,0000,,it's actually drawing from the same pool of\Nresources Dialogue: 0,0:05:32.55,0:05:34.83,Default,,0000,0000,0000,,that will power comes from. So even though\Nchoice Dialogue: 0,0:05:34.83,0:05:37.02,Default,,0000,0000,0000,,making and will power feel like two totally\Ndifferent Dialogue: 0,0:05:37.02,0:05:39.05,Default,,0000,0000,0000,,things, when you get to the end of the Dialogue: 0,0:05:39.05,0:05:40.98,Default,,0000,0000,0000,,grocery trip and you've used all of your resources Dialogue: 0,0:05:40.98,0:05:44.02,Default,,0000,0000,0000,,on choice making, you're out of resources\Nto not Dialogue: 0,0:05:44.02,0:05:46.73,Default,,0000,0000,0000,,buy the candy bar at the, at the impulse, Dialogue: 0,0:05:46.73,0:05:49.24,Default,,0000,0000,0000,,from the impulse aisle. Dialogue: 0,0:05:49.24,0:05:50.60,Default,,0000,0000,0000,,And the same thing is true about a lot Dialogue: 0,0:05:50.60,0:05:52.80,Default,,0000,0000,0000,,of things. They've done studies where they'll\Njust take Dialogue: 0,0:05:52.80,0:05:54.41,Default,,0000,0000,0000,,two halves of a room, like this one, and Dialogue: 0,0:05:54.41,0:05:57.78,Default,,0000,0000,0000,,they'll say, you guys memorize two numbers,\Nyou guys Dialogue: 0,0:05:57.78,0:06:00.57,Default,,0000,0000,0000,,memorize seven numbers, and then when they're\Ntotally done Dialogue: 0,0:06:00.57,0:06:02.76,Default,,0000,0000,0000,,and you've done the memorization, they'll\Ntake you into Dialogue: 0,0:06:02.76,0:06:06.14,Default,,0000,0000,0000,,a processing room and they'll say, OK. You\Nhave, Dialogue: 0,0:06:06.14,0:06:08.77,Default,,0000,0000,0000,,you know, cookies, and you have some fruit.\NAnd Dialogue: 0,0:06:08.77,0:06:11.71,Default,,0000,0000,0000,,you get to basically decide which one to eat. Dialogue: 0,0:06:11.71,0:06:13.44,Default,,0000,0000,0000,,And it turns out that the people who did Dialogue: 0,0:06:13.44,0:06:15.74,Default,,0000,0000,0000,,the not much more difficult job of memorizing\Nseven Dialogue: 0,0:06:15.74,0:06:18.72,Default,,0000,0000,0000,,numbers are far more likely to eat the cookies. Dialogue: 0,0:06:18.72,0:06:20.06,Default,,0000,0000,0000,,And the same thing is true in the other Dialogue: 0,0:06:20.06,0:06:22.43,Default,,0000,0000,0000,,direction. If you have people eat cookies\Nfirst, and Dialogue: 0,0:06:22.43,0:06:25.30,Default,,0000,0000,0000,,then go and do a cognitively difficult task,\Nso Dialogue: 0,0:06:25.30,0:06:27.51,Default,,0000,0000,0000,,a task that requires. One of the most famous Dialogue: 0,0:06:27.51,0:06:29.53,Default,,0000,0000,0000,,experiments has to do with an impossible task.\NHow Dialogue: 0,0:06:29.53,0:06:31.81,Default,,0000,0000,0000,,long can people persevere doing a task that\Nyou Dialogue: 0,0:06:31.81,0:06:34.90,Default,,0000,0000,0000,,can literally never finish? And it turns out\Nthat Dialogue: 0,0:06:34.90,0:06:38.42,Default,,0000,0000,0000,,people who eat the cookies first actually\Nhave, spend Dialogue: 0,0:06:38.42,0:06:40.16,Default,,0000,0000,0000,,a lot more time trying to do the impossible Dialogue: 0,0:06:40.16,0:06:42.88,Default,,0000,0000,0000,,task than the people that, that were, had,\Nhad Dialogue: 0,0:06:42.88,0:06:44.20,Default,,0000,0000,0000,,to sit in front of a tray of cookies Dialogue: 0,0:06:44.20,0:06:45.76,Default,,0000,0000,0000,,and were told not to eat it. Dialogue: 0,0:06:45.76,0:06:48.00,Default,,0000,0000,0000,,And so there's, there's all these experiments,\Nthere's, by Dialogue: 0,0:06:48.00,0:06:50.18,Default,,0000,0000,0000,,now in 2014 there is a ton of them, Dialogue: 0,0:06:50.18,0:06:52.81,Default,,0000,0000,0000,,and basically what they show in aggregate\Nis that Dialogue: 0,0:06:52.81,0:06:55.33,Default,,0000,0000,0000,,there is this pool of resources that we have Dialogue: 0,0:06:55.33,0:06:59.27,Default,,0000,0000,0000,,to do our job, challenging tasks, to do cognitive Dialogue: 0,0:06:59.27,0:07:01.74,Default,,0000,0000,0000,,dissonance. So there's studies around, if\Nyou just tell Dialogue: 0,0:07:01.74,0:07:03.14,Default,,0000,0000,0000,,people, you need to get up and give a Dialogue: 0,0:07:03.14,0:07:05.39,Default,,0000,0000,0000,,speech about something that's different than\Nwhat you actually Dialogue: 0,0:07:05.39,0:07:08.74,Default,,0000,0000,0000,,believe, people who do that actually have\Nless will Dialogue: 0,0:07:08.74,0:07:10.70,Default,,0000,0000,0000,,power afterwards. They have less ability to\Ndo challenging Dialogue: 0,0:07:10.70,0:07:14.44,Default,,0000,0000,0000,,tasks. They have less general cognitive resources\Nthan people Dialogue: 0,0:07:14.44,0:07:15.65,Default,,0000,0000,0000,,who are asked to give a speech about something Dialogue: 0,0:07:15.65,0:07:17.86,Default,,0000,0000,0000,,they do believe. Even if the actual act of Dialogue: 0,0:07:17.86,0:07:22.30,Default,,0000,0000,0000,,giving the speech is equally, is equally difficult. Dialogue: 0,0:07:22.30,0:07:24.41,Default,,0000,0000,0000,,And so I think what's kind of interesting\Nabout Dialogue: 0,0:07:24.41,0:07:26.16,Default,,0000,0000,0000,,this is that, really what we want in programming Dialogue: 0,0:07:26.16,0:07:28.24,Default,,0000,0000,0000,,is we want to be doing, having as much Dialogue: 0,0:07:28.24,0:07:30.34,Default,,0000,0000,0000,,time as we can for the challenging tasks,\Nright. Dialogue: 0,0:07:30.34,0:07:32.61,Default,,0000,0000,0000,,We want to be spending all of our time Dialogue: 0,0:07:32.61,0:07:35.01,Default,,0000,0000,0000,,on challenging tasks and as little of those\Nvery Dialogue: 0,0:07:35.01,0:07:38.29,Default,,0000,0000,0000,,scarce resources as we can on things like\Nthe Dialogue: 0,0:07:38.29,0:07:40.11,Default,,0000,0000,0000,,will power to write your code in exactly the Dialogue: 0,0:07:40.11,0:07:44.08,Default,,0000,0000,0000,,right way, or making a lot of choices. Dialogue: 0,0:07:44.08,0:07:45.94,Default,,0000,0000,0000,,And here are some terms that you might have Dialogue: 0,0:07:45.94,0:07:49.56,Default,,0000,0000,0000,,heard, basically, about this paradox of choice\Nor ego Dialogue: 0,0:07:49.56,0:07:52.88,Default,,0000,0000,0000,,depletion or the concept of decision fatigue.\NThese are Dialogue: 0,0:07:52.88,0:07:54.91,Default,,0000,0000,0000,,all ways that you've heard that describe this\Ngeneral Dialogue: 0,0:07:54.91,0:07:58.12,Default,,0000,0000,0000,,concept, this general concept of you just\Nhave this Dialogue: 0,0:07:58.12,0:08:00.31,Default,,0000,0000,0000,,battery, and it runs out at some point, and Dialogue: 0,0:08:00.31,0:08:03.54,Default,,0000,0000,0000,,there's all these really counter-intuitive\Nthings that don't seem Dialogue: 0,0:08:03.54,0:08:05.70,Default,,0000,0000,0000,,like they're very hard but are taking away\Nresources Dialogue: 0,0:08:05.70,0:08:08.07,Default,,0000,0000,0000,,that you need to work on hard problems. Dialogue: 0,0:08:08.07,0:08:12.27,Default,,0000,0000,0000,,So, how do we, how do we solve this? Dialogue: 0,0:08:12.27,0:08:14.97,Default,,0000,0000,0000,,How do we actually solve this problem? Because\Nobviously Dialogue: 0,0:08:14.97,0:08:16.52,Default,,0000,0000,0000,,it's the case that you, if you want to Dialogue: 0,0:08:16.52,0:08:19.30,Default,,0000,0000,0000,,be spending a lot of time on your challenging Dialogue: 0,0:08:19.30,0:08:21.67,Default,,0000,0000,0000,,problems, if you just ignore the problem of\Nwill Dialogue: 0,0:08:21.67,0:08:24.67,Default,,0000,0000,0000,,power or the problem of, of choices, you're\Njust Dialogue: 0,0:08:24.67,0:08:26.73,Default,,0000,0000,0000,,gonna end up making a lot of mindless choices Dialogue: 0,0:08:26.73,0:08:29.30,Default,,0000,0000,0000,,all day. And, so what we need to do Dialogue: 0,0:08:29.30,0:08:31.39,Default,,0000,0000,0000,,is we need to find some psychological hacks\Nthat Dialogue: 0,0:08:31.39,0:08:33.94,Default,,0000,0000,0000,,we can apply that will keep us doing the Dialogue: 0,0:08:33.94,0:08:36.98,Default,,0000,0000,0000,,right thing, basically all the time. Keep\Nus from Dialogue: 0,0:08:36.98,0:08:39.20,Default,,0000,0000,0000,,wasting cognitive resources. Dialogue: 0,0:08:39.20,0:08:42.96,Default,,0000,0000,0000,,And I think my favorite study about, about\Nthis, Dialogue: 0,0:08:42.96,0:08:46.50,Default,,0000,0000,0000,,about the kinds of cognitive hacks that work\Neffectively, Dialogue: 0,0:08:46.50,0:08:51.27,Default,,0000,0000,0000,,is the idea of what happens to organ donation Dialogue: 0,0:08:51.27,0:08:53.94,Default,,0000,0000,0000,,if the organ donation requirement is opt in,\Nin Dialogue: 0,0:08:53.94,0:08:55.26,Default,,0000,0000,0000,,other words, you go to the DMV and there's Dialogue: 0,0:08:55.26,0:08:57.85,Default,,0000,0000,0000,,a form that says, yes, I agree to donate Dialogue: 0,0:08:57.85,0:08:59.25,Default,,0000,0000,0000,,my organs and here are the ones I agree Dialogue: 0,0:08:59.25,0:09:02.18,Default,,0000,0000,0000,,to donate. And when the organ donation is\Nopt Dialogue: 0,0:09:02.18,0:09:04.27,Default,,0000,0000,0000,,out, in other words, you have to explicitly\Nsay, Dialogue: 0,0:09:04.27,0:09:06.23,Default,,0000,0000,0000,,I do not want, I, I do not want Dialogue: 0,0:09:06.23,0:09:08.19,Default,,0000,0000,0000,,my organs to be donated. And what you can Dialogue: 0,0:09:08.19,0:09:10.73,Default,,0000,0000,0000,,see is that, in the countries where it's opt Dialogue: 0,0:09:10.73,0:09:15.47,Default,,0000,0000,0000,,in, it's actually a very, very low rate and Dialogue: 0,0:09:15.47,0:09:16.87,Default,,0000,0000,0000,,in the countries where it's opt out, it's\Na Dialogue: 0,0:09:16.87,0:09:20.15,Default,,0000,0000,0000,,surprisingly high rate. It's basically almost\Nuniversal. Dialogue: 0,0:09:20.15,0:09:21.81,Default,,0000,0000,0000,,And I, and I think to, to some degree Dialogue: 0,0:09:21.81,0:09:23.86,Default,,0000,0000,0000,,you might expect that this is the case. But Dialogue: 0,0:09:23.86,0:09:27.84,Default,,0000,0000,0000,,I think this difference is really counter-intuitive,\Nbecause you Dialogue: 0,0:09:27.84,0:09:30.49,Default,,0000,0000,0000,,would expect that if somebody, you know, goes\Nand Dialogue: 0,0:09:30.49,0:09:32.37,Default,,0000,0000,0000,,they're sitting at a form and the form says, Dialogue: 0,0:09:32.37,0:09:33.74,Default,,0000,0000,0000,,Do you want to donate your organs? And the Dialogue: 0,0:09:33.74,0:09:35.83,Default,,0000,0000,0000,,excuse that they're telling themselves in\Ntheir head for Dialogue: 0,0:09:35.83,0:09:38.34,Default,,0000,0000,0000,,not checking the check box is, you know, my Dialogue: 0,0:09:38.34,0:09:39.99,Default,,0000,0000,0000,,mom would be super angry if she found out Dialogue: 0,0:09:39.99,0:09:42.18,Default,,0000,0000,0000,,or my religion tells me that I shouldn't do Dialogue: 0,0:09:42.18,0:09:44.93,Default,,0000,0000,0000,,this or, you know, growing up, I heard people Dialogue: 0,0:09:44.93,0:09:46.98,Default,,0000,0000,0000,,say negative things or whatever, whatever\Nthe excuse is Dialogue: 0,0:09:46.98,0:09:49.02,Default,,0000,0000,0000,,you tell yourself to not check the check box, Dialogue: 0,0:09:49.02,0:09:52.05,Default,,0000,0000,0000,,you would think that some of those people,\Nmore Dialogue: 0,0:09:52.05,0:09:54.16,Default,,0000,0000,0000,,than, you know, zero point one percent of\Nthose Dialogue: 0,0:09:54.16,0:09:56.93,Default,,0000,0000,0000,,people, would pick up the pen and opt out. Dialogue: 0,0:09:56.93,0:10:00.89,Default,,0000,0000,0000,,But the interesting thing is that, by just\Nchanging Dialogue: 0,0:10:00.89,0:10:03.93,Default,,0000,0000,0000,,the default from yes to no, all of the Dialogue: 0,0:10:03.93,0:10:05.81,Default,,0000,0000,0000,,sudden, all those excuses, all those things\Nthat people Dialogue: 0,0:10:05.81,0:10:08.61,Default,,0000,0000,0000,,tell themselves about the reasons that they\Nreally shouldn't Dialogue: 0,0:10:08.61,0:10:11.17,Default,,0000,0000,0000,,check the check box, suddenly go away. Dialogue: 0,0:10:11.17,0:10:13.19,Default,,0000,0000,0000,,And what's, I think even more interesting\Nabout this Dialogue: 0,0:10:13.19,0:10:16.52,Default,,0000,0000,0000,,is that, these choices are actually made on,\Non Dialogue: 0,0:10:16.52,0:10:18.58,Default,,0000,0000,0000,,really big DMV forms. So you basically what\Nyou Dialogue: 0,0:10:18.58,0:10:20.83,Default,,0000,0000,0000,,can see is that people have already gone through Dialogue: 0,0:10:20.83,0:10:26.65,Default,,0000,0000,0000,,this really complicated, somewhat trivial\Nbut very choice-heavy process Dialogue: 0,0:10:26.65,0:10:28.51,Default,,0000,0000,0000,,of filling out this DMV form, and by the Dialogue: 0,0:10:28.51,0:10:30.53,Default,,0000,0000,0000,,time they get to the bottom and are asked Dialogue: 0,0:10:30.53,0:10:33.42,Default,,0000,0000,0000,,about organ donation, they're so cognitively\Ndepleted that they Dialogue: 0,0:10:33.42,0:10:35.33,Default,,0000,0000,0000,,have no energy left to even really think about Dialogue: 0,0:10:35.33,0:10:37.92,Default,,0000,0000,0000,,it. They basically just do the defaults. Dialogue: 0,0:10:37.92,0:10:41.46,Default,,0000,0000,0000,,So I think, honestly, defaults are our most\Npowerful Dialogue: 0,0:10:41.46,0:10:44.90,Default,,0000,0000,0000,,psychological hack, our most powerful weapon\Nin trying to Dialogue: 0,0:10:44.90,0:10:46.65,Default,,0000,0000,0000,,deal with the pro- the fact that we have Dialogue: 0,0:10:46.65,0:10:50.23,Default,,0000,0000,0000,,this limited source of cognitive capacity\Nthat we want Dialogue: 0,0:10:50.23,0:10:53.34,Default,,0000,0000,0000,,to make good use of when we're programming.\NAnd Dialogue: 0,0:10:53.34,0:10:56.00,Default,,0000,0000,0000,,the really cool thing about defaults in general\Nis Dialogue: 0,0:10:56.00,0:10:59.31,Default,,0000,0000,0000,,that defaults are actually really effective\Non both sides Dialogue: 0,0:10:59.31,0:11:01.32,Default,,0000,0000,0000,,of the spectrum. So some days, you get to Dialogue: 0,0:11:01.32,0:11:03.85,Default,,0000,0000,0000,,work, you're ready to go, you're like, in\Nan Dialogue: 0,0:11:03.85,0:11:09.76,Default,,0000,0000,0000,,amazing mood. Everything is perfect. Everything\Nis awesome. Dialogue: 0,0:11:09.76,0:11:12.07,Default,,0000,0000,0000,,And on those days, the defaults, you have\Na Dialogue: 0,0:11:12.07,0:11:15.04,Default,,0000,0000,0000,,big store of cognitive resources, and the\Ndefaults keep Dialogue: 0,0:11:15.04,0:11:17.60,Default,,0000,0000,0000,,you high up. They keep you in the charge Dialogue: 0,0:11:17.60,0:11:19.10,Default,,0000,0000,0000,,state of a longer time. You don't have to Dialogue: 0,0:11:19.10,0:11:21.43,Default,,0000,0000,0000,,make choices that would go deplete, and remember\Nthe Dialogue: 0,0:11:21.43,0:11:24.16,Default,,0000,0000,0000,,choice-making doesn't deplete per minute.\NIt's not every minute Dialogue: 0,0:11:24.16,0:11:27.16,Default,,0000,0000,0000,,of choices depletes. It's every choice depletes\Nyour cognitive Dialogue: 0,0:11:27.16,0:11:29.60,Default,,0000,0000,0000,,resources. So, having a set of defaults that\Ntells Dialogue: 0,0:11:29.60,0:11:31.47,Default,,0000,0000,0000,,you, here is what you're gonna do in general Dialogue: 0,0:11:31.47,0:11:33.18,Default,,0000,0000,0000,,and, you have to, you know, you have to Dialogue: 0,0:11:33.18,0:11:35.78,Default,,0000,0000,0000,,think hard to opt out. That's really great\Nwhen Dialogue: 0,0:11:35.78,0:11:37.76,Default,,0000,0000,0000,,you're in a good mood, when things are charged. Dialogue: 0,0:11:37.76,0:11:39.33,Default,,0000,0000,0000,,But it's actually also really great when you're\Nin Dialogue: 0,0:11:39.33,0:11:41.25,Default,,0000,0000,0000,,a bad moon. When you're really depleted and\Nyou Dialogue: 0,0:11:41.25,0:11:42.48,Default,,0000,0000,0000,,still have to go to work and do your Dialogue: 0,0:11:42.48,0:11:44.41,Default,,0000,0000,0000,,job, because the default keeps you on the\Nstraight Dialogue: 0,0:11:44.41,0:11:46.43,Default,,0000,0000,0000,,and narrow, right. You don't have enough energy\Nleft Dialogue: 0,0:11:46.43,0:11:48.66,Default,,0000,0000,0000,,to really think about what you're doing, and\Nso Dialogue: 0,0:11:48.66,0:11:51.40,Default,,0000,0000,0000,,everybody has bad days. Everybody works on\Nteams with Dialogue: 0,0:11:51.40,0:11:57.85,Default,,0000,0000,0000,,developers who aren't great. Let me say it\Na Dialogue: 0,0:11:57.85,0:11:59.37,Default,,0000,0000,0000,,different way. Everyone has at some point\Nworked on Dialogue: 0,0:11:59.37,0:12:01.74,Default,,0000,0000,0000,,a team, hopefully not. But you have junior\Ndevelopers. Dialogue: 0,0:12:01.74,0:12:03.86,Default,,0000,0000,0000,,You know, you hire people who are, who are Dialogue: 0,0:12:03.86,0:12:06.17,Default,,0000,0000,0000,,new to whatever it is that you're doing, or Dialogue: 0,0:12:06.17,0:12:08.91,Default,,0000,0000,0000,,you have a bad day, or you're stressed out Dialogue: 0,0:12:08.91,0:12:10.71,Default,,0000,0000,0000,,because your mom gave you a call at lunch Dialogue: 0,0:12:10.71,0:12:12.53,Default,,0000,0000,0000,,and now you're in a bad mood. Dialogue: 0,0:12:12.53,0:12:14.14,Default,,0000,0000,0000,,Right, so everybody gets to a point where\Nthey Dialogue: 0,0:12:14.14,0:12:21.14,Default,,0000,0000,0000,,have cognitively, my mother's gonna be so\Nangry now. Dialogue: 0,0:12:22.05,0:12:27.52,Default,,0000,0000,0000,,Let's say, an ex-girlfriend or whatever. So\Neveryone has Dialogue: 0,0:12:27.52,0:12:33.04,Default,,0000,0000,0000,,days where they're cognitively depleted. And\Non those days, Dialogue: 0,0:12:33.04,0:12:35.20,Default,,0000,0000,0000,,defaults are also really powerful, because\Nthey keep you, Dialogue: 0,0:12:35.20,0:12:37.32,Default,,0000,0000,0000,,when. Instead of having you be sort of in Dialogue: 0,0:12:37.32,0:12:39.24,Default,,0000,0000,0000,,a bad mood and you'll just sort of do Dialogue: 0,0:12:39.24,0:12:41.61,Default,,0000,0000,0000,,whatever, you know, you feel like, you're\Nbasically kept Dialogue: 0,0:12:41.61,0:12:42.73,Default,,0000,0000,0000,,on the straight and narrow. You're kept on\Nthe Dialogue: 0,0:12:42.73,0:12:43.27,Default,,0000,0000,0000,,right path. Dialogue: 0,0:12:43.27,0:12:45.83,Default,,0000,0000,0000,,And I think this actually helps to explain\Nwhy Dialogue: 0,0:12:45.83,0:12:49.53,Default,,0000,0000,0000,,yak-shaving doesn't feel as good as you might\Nthink. Dialogue: 0,0:12:49.53,0:12:52.16,Default,,0000,0000,0000,,So, yak-shaving isn't the most terrible activity\Nin the Dialogue: 0,0:12:52.16,0:12:54.18,Default,,0000,0000,0000,,world. I think sometimes you need to yak-shave.\NBut Dialogue: 0,0:12:54.18,0:12:55.84,Default,,0000,0000,0000,,I think if you think about doing, like, four Dialogue: 0,0:12:55.84,0:12:58.41,Default,,0000,0000,0000,,hours of yak-shaving in an eight hour day,\Npretty Dialogue: 0,0:12:58.41,0:13:00.24,Default,,0000,0000,0000,,much after four hours, if you, you know, let Dialogue: 0,0:13:00.24,0:13:02.68,Default,,0000,0000,0000,,me set up my, you know, my vagrant box, Dialogue: 0,0:13:02.68,0:13:04.96,Default,,0000,0000,0000,,or let me go set up my testing environment. Dialogue: 0,0:13:04.96,0:13:07.95,Default,,0000,0000,0000,,After like four hours of that, you're totally\Ncognitively Dialogue: 0,0:13:07.95,0:13:10.08,Default,,0000,0000,0000,,depleted. Doesn't matter that you only spent\Nfour hours Dialogue: 0,0:13:10.08,0:13:11.95,Default,,0000,0000,0000,,out of an eight hour day. Basically you have Dialogue: 0,0:13:11.95,0:13:14.30,Default,,0000,0000,0000,,no more cognitive resources left. And I think\Nthis, Dialogue: 0,0:13:14.30,0:13:17.05,Default,,0000,0000,0000,,this means we should be very careful about\Nyak-shaving. Dialogue: 0,0:13:17.05,0:13:19.16,Default,,0000,0000,0000,,Because yak-shaving may feel good and it may\Nbe Dialogue: 0,0:13:19.16,0:13:20.79,Default,,0000,0000,0000,,important in a lot of cases, but we need Dialogue: 0,0:13:20.79,0:13:22.78,Default,,0000,0000,0000,,to be very honest about the fact that there Dialogue: 0,0:13:22.78,0:13:26.03,Default,,0000,0000,0000,,is, there's a certain amount of cognitive\Nresources that Dialogue: 0,0:13:26.03,0:13:28.42,Default,,0000,0000,0000,,we have and yak-shaving takes up more of them Dialogue: 0,0:13:28.42,0:13:31.05,Default,,0000,0000,0000,,than you would expect. And they don't leave\Nus Dialogue: 0,0:13:31.05,0:13:33.57,Default,,0000,0000,0000,,time after, even two hours or three hours,\Nthey Dialogue: 0,0:13:33.57,0:13:35.34,Default,,0000,0000,0000,,don't leave us a lot of cognitive resources\Nto Dialogue: 0,0:13:35.34,0:13:37.58,Default,,0000,0000,0000,,actually do the task that we were yak-shaving\Ntowards. Dialogue: 0,0:13:37.58,0:13:40.78,Default,,0000,0000,0000,,So, obviously, occasionally you know you need\Nto refactor Dialogue: 0,0:13:40.78,0:13:43.82,Default,,0000,0000,0000,,and, and do all kinds of these kinds of Dialogue: 0,0:13:43.82,0:13:45.84,Default,,0000,0000,0000,,tasks, but you should be careful about thinking\Nthat Dialogue: 0,0:13:45.84,0:13:47.58,Default,,0000,0000,0000,,you'll get a lot done afterwards. Dialogue: 0,0:13:47.58,0:13:49.85,Default,,0000,0000,0000,,So, I think this is sort of the unpacking. Dialogue: 0,0:13:49.85,0:13:52.34,Default,,0000,0000,0000,,This is a scientific unpacking of what it\Nis Dialogue: 0,0:13:52.34,0:13:55.82,Default,,0000,0000,0000,,that we're talking about. But, and I think\Neveryone Dialogue: 0,0:13:55.82,0:13:57.73,Default,,0000,0000,0000,,in this room can nod their heads along with Dialogue: 0,0:13:57.73,0:13:59.91,Default,,0000,0000,0000,,what I'm saying. They can agree with what\NI'm Dialogue: 0,0:13:59.91,0:14:03.72,Default,,0000,0000,0000,,saying. Makes sense. But what ends up happening\Nin Dialogue: 0,0:14:03.72,0:14:06.88,Default,,0000,0000,0000,,the rest of the world, and also there's usually Dialogue: 0,0:14:06.88,0:14:10.76,Default,,0000,0000,0000,,a devil on your shoulder, is that people find Dialogue: 0,0:14:10.76,0:14:13.41,Default,,0000,0000,0000,,all kinds of excuses to argue against the\Nthing Dialogue: 0,0:14:13.41,0:14:14.00,Default,,0000,0000,0000,,I just said. Dialogue: 0,0:14:14.00,0:14:16.61,Default,,0000,0000,0000,,So I just outlined sort of an unpacking of Dialogue: 0,0:14:16.61,0:14:23.61,Default,,0000,0000,0000,,sort of the conventional reconfiguration story,\Nand somehow, we, Dialogue: 0,0:14:23.98,0:14:26.34,Default,,0000,0000,0000,,as a human race, actually find a lot of Dialogue: 0,0:14:26.34,0:14:30.24,Default,,0000,0000,0000,,ways to, to argue against these things. And\None Dialogue: 0,0:14:30.24,0:14:32.42,Default,,0000,0000,0000,,of these, one of these ways that we find Dialogue: 0,0:14:32.42,0:14:35.49,Default,,0000,0000,0000,,to argue against it is to tell ourselves that Dialogue: 0,0:14:35.49,0:14:38.74,Default,,0000,0000,0000,,we're unique and we're special, and I'll just\Nlet Dialogue: 0,0:14:38.74,0:14:44.58,Default,,0000,0000,0000,,David from 2008 talk about this for a second. Dialogue: 0,0:14:44.58,0:14:48.53,Default,,0000,0000,0000,,DHH: One point I keep coming back to, over Dialogue: 0,0:14:48.53,0:14:51.28,Default,,0000,0000,0000,,and over again when I talk about Ruby and Dialogue: 0,0:14:51.28,0:14:56.38,Default,,0000,0000,0000,,Rails, is that we confessed commonality. We\Nconfessed the Dialogue: 0,0:14:56.38,0:14:59.16,Default,,0000,0000,0000,,fact that we're not as special as we like Dialogue: 0,0:14:59.16,0:15:02.24,Default,,0000,0000,0000,,to believe. We confessed that we're not the\Nonly Dialogue: 0,0:15:02.24,0:15:06.71,Default,,0000,0000,0000,,ones trying to climb the same mountain. And\NI Dialogue: 0,0:15:06.71,0:15:08.98,Default,,0000,0000,0000,,think this is a real important point because\Nit's Dialogue: 0,0:15:08.98,0:15:11.44,Default,,0000,0000,0000,,somewhat counter intuitive, I think, for a\Nlot of Dialogue: 0,0:15:11.44,0:15:14.09,Default,,0000,0000,0000,,developers to think that they're not that\Nspecial. I Dialogue: 0,0:15:14.09,0:15:16.52,Default,,0000,0000,0000,,think it's counter intuitive for humans in\Ngeneral to Dialogue: 0,0:15:16.52,0:15:18.40,Default,,0000,0000,0000,,think they're not that special. Dialogue: 0,0:15:18.40,0:15:21.01,Default,,0000,0000,0000,,But, when they do think that they're special,\Nwhen Dialogue: 0,0:15:21.01,0:15:22.86,Default,,0000,0000,0000,,they do think that they're the only ones climbing Dialogue: 0,0:15:22.86,0:15:25.82,Default,,0000,0000,0000,,that mountain, they kind of get these assumptions\Nthat Dialogue: 0,0:15:25.82,0:15:28.56,Default,,0000,0000,0000,,they need very unique and special tools that\Nwill Dialogue: 0,0:15:28.56,0:15:31.50,Default,,0000,0000,0000,,only work for them. And I think that's a Dialogue: 0,0:15:31.50,0:15:36.62,Default,,0000,0000,0000,,really bad way to approach getting greater\Nproductivity. Because Dialogue: 0,0:15:36.62,0:15:39.98,Default,,0000,0000,0000,,I think what really makes this special and\Nmakes Dialogue: 0,0:15:39.98,0:15:42.93,Default,,0000,0000,0000,,it work is all the points where we recognize Dialogue: 0,0:15:42.93,0:15:44.74,Default,,0000,0000,0000,,that we're exactly the same. Dialogue: 0,0:15:44.74,0:15:47.89,Default,,0000,0000,0000,,Y.K.: And I think that's really the point,\Nis Dialogue: 0,0:15:47.89,0:15:51.27,Default,,0000,0000,0000,,that the way we gain better productivity is\Nby Dialogue: 0,0:15:51.27,0:15:54.44,Default,,0000,0000,0000,,pushing back against this impulse. I think,\Nwe have Dialogue: 0,0:15:54.44,0:15:56.35,Default,,0000,0000,0000,,it in the Rails community to some degree.\NI Dialogue: 0,0:15:56.35,0:15:59.07,Default,,0000,0000,0000,,think it's especially significant outside\Nof the Rails community, Dialogue: 0,0:15:59.07,0:16:01.55,Default,,0000,0000,0000,,where people didn't already come together\Naround the idea Dialogue: 0,0:16:01.55,0:16:04.29,Default,,0000,0000,0000,,that we're gonna build shared tools and shared\Nsolutions. Dialogue: 0,0:16:04.29,0:16:05.60,Default,,0000,0000,0000,,But I think we really do have to push Dialogue: 0,0:16:05.60,0:16:07.23,Default,,0000,0000,0000,,back against this idea. Dialogue: 0,0:16:07.23,0:16:09.21,Default,,0000,0000,0000,,And I think my favorite example of this sort Dialogue: 0,0:16:09.21,0:16:15.75,Default,,0000,0000,0000,,of, taken to an absurdist extreme, is sort\Nof Dialogue: 0,0:16:15.75,0:16:17.92,Default,,0000,0000,0000,,famous interview. What is your most surprising\Napp on Dialogue: 0,0:16:17.92,0:16:20.04,Default,,0000,0000,0000,,the home screen? Well, it's Operator. It's\Na custom-designed, Dialogue: 0,0:16:20.04,0:16:23.25,Default,,0000,0000,0000,,one-of-a-kind bespoke app I had built for\Nmy assistant Dialogue: 0,0:16:23.25,0:16:25.63,Default,,0000,0000,0000,,and I to communicate and collaborate. Did\Nthis person Dialogue: 0,0:16:25.63,0:16:29.41,Default,,0000,0000,0000,,need a custom bespoke one-of-a-kind application\Nto communicate with Dialogue: 0,0:16:29.41,0:16:31.64,Default,,0000,0000,0000,,their assistant? No. Almost certainly not. Dialogue: 0,0:16:31.64,0:16:34.16,Default,,0000,0000,0000,,But they decided they were so special, they\Nwere Dialogue: 0,0:16:34.16,0:16:37.25,Default,,0000,0000,0000,,so, they themselves were so one-of-a-kind,\Nsuch a unique Dialogue: 0,0:16:37.25,0:16:40.64,Default,,0000,0000,0000,,snowflake, that they needed a special tool\Nto communicate Dialogue: 0,0:16:40.64,0:16:42.78,Default,,0000,0000,0000,,with their assistant. And I think this is\Nsort Dialogue: 0,0:16:42.78,0:16:44.62,Default,,0000,0000,0000,,of how, this is how we act. This is Dialogue: 0,0:16:44.62,0:16:46.61,Default,,0000,0000,0000,,how we behave. And if you look at, sort Dialogue: 0,0:16:46.61,0:16:48.79,Default,,0000,0000,0000,,of, how people talk about software, you see\Nthings Dialogue: 0,0:16:48.79,0:16:50.89,Default,,0000,0000,0000,,like, this is a tool set for building the Dialogue: 0,0:16:50.89,0:16:54.53,Default,,0000,0000,0000,,framework most suited to your application\Ndevelopment. Your application, Dialogue: 0,0:16:54.53,0:16:58.36,Default,,0000,0000,0000,,your company, your industry is so special,\Nthat you Dialogue: 0,0:16:58.36,0:17:00.62,Default,,0000,0000,0000,,can't use general-purpose tools. You need\Nto use a Dialogue: 0,0:17:00.62,0:17:03.11,Default,,0000,0000,0000,,tool set to build your own framework. Dialogue: 0,0:17:03.11,0:17:07.64,Default,,0000,0000,0000,,Or, in an ecosystem where overarching, decides-everything-for-you\Nframeworks are Dialogue: 0,0:17:07.64,0:17:09.69,Default,,0000,0000,0000,,commonplace, and many libraries require your\Nsite to be Dialogue: 0,0:17:09.69,0:17:12.29,Default,,0000,0000,0000,,reorganized to suit their look, feel, and\Ndefault behavior Dialogue: 0,0:17:12.29,0:17:13.38,Default,,0000,0000,0000,,- we should continue to be a tool that Dialogue: 0,0:17:13.38,0:17:15.51,Default,,0000,0000,0000,,gives you the freedom to design the full experience Dialogue: 0,0:17:15.51,0:17:16.44,Default,,0000,0000,0000,,of your web application. Dialogue: 0,0:17:16.44,0:17:20.24,Default,,0000,0000,0000,,And, who could be against freedom? Right?\NFreedom is Dialogue: 0,0:17:20.24,0:17:24.82,Default,,0000,0000,0000,,a really effective thing to put on the wall Dialogue: 0,0:17:24.82,0:17:26.33,Default,,0000,0000,0000,,to say, this is the thing that we're arguing Dialogue: 0,0:17:26.33,0:17:28.99,Default,,0000,0000,0000,,for. We're arguing for freedom. But this is\Njust Dialogue: 0,0:17:28.99,0:17:32.10,Default,,0000,0000,0000,,another way, it's just another way that you,\Nthat Dialogue: 0,0:17:32.10,0:17:37.08,Default,,0000,0000,0000,,peoples' brains sneak in arguments against\Nthat, that helped Dialogue: 0,0:17:37.08,0:17:38.97,Default,,0000,0000,0000,,us create the paradox of choice in the first Dialogue: 0,0:17:38.97,0:17:43.35,Default,,0000,0000,0000,,place, right. People say, you know, I'm special.\NI Dialogue: 0,0:17:43.35,0:17:45.02,Default,,0000,0000,0000,,can't use these shared tools. I can't use\Nthese Dialogue: 0,0:17:45.02,0:17:46.88,Default,,0000,0000,0000,,tools that were built for everybody. I need\Nto Dialogue: 0,0:17:46.88,0:17:51.31,Default,,0000,0000,0000,,use special tools. I need to use small libraries Dialogue: 0,0:17:51.31,0:17:54.00,Default,,0000,0000,0000,,that help me build my own abstractions. I\Ncan't Dialogue: 0,0:17:54.00,0:17:56.47,Default,,0000,0000,0000,,share with the community. Dialogue: 0,0:17:56.47,0:17:59.40,Default,,0000,0000,0000,,And then, even if people come to the conclusion Dialogue: 0,0:17:59.40,0:18:02.53,Default,,0000,0000,0000,,that maybe abstractions, maybe shared solutions\Nare a good Dialogue: 0,0:18:02.53,0:18:05.35,Default,,0000,0000,0000,,idea, then you get another argument. The devil\Non Dialogue: 0,0:18:05.35,0:18:07.80,Default,,0000,0000,0000,,your shoulder or the devil in your community.\NIt Dialogue: 0,0:18:07.80,0:18:10.49,Default,,0000,0000,0000,,makes another argument, which is the law of\Nleaky Dialogue: 0,0:18:10.49,0:18:12.15,Default,,0000,0000,0000,,abstractions. And this is not, this is sort\Nof Dialogue: 0,0:18:12.15,0:18:15.55,Default,,0000,0000,0000,,like the law of Demeter. It's not a suggestion, Dialogue: 0,0:18:15.55,0:18:20.11,Default,,0000,0000,0000,,or an observation. It's a law. The law of Dialogue: 0,0:18:20.11,0:18:21.32,Default,,0000,0000,0000,,leaky abstractions. Dialogue: 0,0:18:21.32,0:18:24.50,Default,,0000,0000,0000,,And I think any time somebody couches an observation Dialogue: 0,0:18:24.50,0:18:28.04,Default,,0000,0000,0000,,about software development as a law, you know\Nsomething Dialogue: 0,0:18:28.04,0:18:31.38,Default,,0000,0000,0000,,fishy is going on. You know that something's\Nnot Dialogue: 0,0:18:31.38,0:18:35.46,Default,,0000,0000,0000,,right. Because software development isn't\Na science. You, basically Dialogue: 0,0:18:35.46,0:18:38.09,Default,,0000,0000,0000,,people want you to put on your science hat, Dialogue: 0,0:18:38.09,0:18:40.71,Default,,0000,0000,0000,,and say, aha! It's a law! It's like the Dialogue: 0,0:18:40.71,0:18:43.85,Default,,0000,0000,0000,,law of gravity. I can derive some conclusions\Nfrom Dialogue: 0,0:18:43.85,0:18:46.48,Default,,0000,0000,0000,,this law. What, what, what conclusions do\Nthey want Dialogue: 0,0:18:46.48,0:18:49.02,Default,,0000,0000,0000,,you to derive? Abstractions are bad. You should\Nnever Dialogue: 0,0:18:49.02,0:18:51.52,Default,,0000,0000,0000,,use abstractions. You should do everything\Nyourself. Dialogue: 0,0:18:51.52,0:18:54.73,Default,,0000,0000,0000,,And, so this law of leaky abstractions was\Noriginally Dialogue: 0,0:18:54.73,0:18:59.11,Default,,0000,0000,0000,,built by, or written by Joel Spolsky, and\NJeff Dialogue: 0,0:18:59.11,0:19:01.79,Default,,0000,0000,0000,,Atwood, who was his partner at Stack Overflow,\Nactually Dialogue: 0,0:19:01.79,0:19:04.72,Default,,0000,0000,0000,,responded, I think, kind of brilliantly to\Nthis. And Dialogue: 0,0:19:04.72,0:19:07.20,Default,,0000,0000,0000,,he said, you know, I'd argue, that virtually\Nall Dialogue: 0,0:19:07.20,0:19:09.61,Default,,0000,0000,0000,,good programming abstractions are failed abstractions.\NI don't think Dialogue: 0,0:19:09.61,0:19:11.06,Default,,0000,0000,0000,,I've ever used one that didn't leak like a Dialogue: 0,0:19:11.06,0:19:13.79,Default,,0000,0000,0000,,sieve. But I think that's an awfully architecture\Nastronaut Dialogue: 0,0:19:13.79,0:19:17.00,Default,,0000,0000,0000,,way of looking at things. Instead, let's ask\Nourselves Dialogue: 0,0:19:17.00,0:19:19.70,Default,,0000,0000,0000,,a more programatic question: does this abstraction\Nmake our Dialogue: 0,0:19:19.70,0:19:21.78,Default,,0000,0000,0000,,code at least a little easier to write? To Dialogue: 0,0:19:21.78,0:19:24.00,Default,,0000,0000,0000,,understand? To troubleshoot? Are we better\Noff with this Dialogue: 0,0:19:24.00,0:19:26.24,Default,,0000,0000,0000,,abstraction than we were without it? Dialogue: 0,0:19:26.24,0:19:28.41,Default,,0000,0000,0000,,It's out job as modern programmers not to\Nabandon Dialogue: 0,0:19:28.41,0:19:31.23,Default,,0000,0000,0000,,abstractions due to these deficiencies, but\Nto embrace the Dialogue: 0,0:19:31.23,0:19:33.51,Default,,0000,0000,0000,,useful elements of them. To adapt the working\Nparts Dialogue: 0,0:19:33.51,0:19:36.05,Default,,0000,0000,0000,,and construct ever so slightly less leaky\Nand broken Dialogue: 0,0:19:36.05,0:19:37.83,Default,,0000,0000,0000,,abstractions over time. Dialogue: 0,0:19:37.83,0:19:42.17,Default,,0000,0000,0000,,And I think people use this idea, these excuses, Dialogue: 0,0:19:42.17,0:19:44.83,Default,,0000,0000,0000,,things like the law of leaky abstractions,\Nto give Dialogue: 0,0:19:44.83,0:19:48.77,Default,,0000,0000,0000,,an excuse for themselves to not share solutions.\NAnd Dialogue: 0,0:19:48.77,0:19:50.82,Default,,0000,0000,0000,,I think sort of the hilarious thing, and this Dialogue: 0,0:19:50.82,0:19:54.42,Default,,0000,0000,0000,,is sort of a compressed super conflated set\Nof Dialogue: 0,0:19:54.42,0:19:56.61,Default,,0000,0000,0000,,abstractions. Every single one of us is sitting\Non Dialogue: 0,0:19:56.61,0:20:01.19,Default,,0000,0000,0000,,top of abstractions that maybe occasionally\Nleak, but really, Dialogue: 0,0:20:01.19,0:20:02.85,Default,,0000,0000,0000,,how many people ever have to drop down into Dialogue: 0,0:20:02.85,0:20:05.39,Default,,0000,0000,0000,,the X86 or the arm level? Or even the Dialogue: 0,0:20:05.39,0:20:09.59,Default,,0000,0000,0000,,C level? Right. People. We can build higher\Nand Dialogue: 0,0:20:09.59,0:20:12.38,Default,,0000,0000,0000,,higher sets of abstractions, and we can keep,\Nwe Dialogue: 0,0:20:12.38,0:20:15.26,Default,,0000,0000,0000,,can keep building on top of these abstractions,\Nand Dialogue: 0,0:20:15.26,0:20:17.88,Default,,0000,0000,0000,,build, and, and allow us to sort of eliminate Dialogue: 0,0:20:17.88,0:20:20.37,Default,,0000,0000,0000,,more and more code that we had to write Dialogue: 0,0:20:20.37,0:20:22.49,Default,,0000,0000,0000,,before. That we had to write in 1960, 1970, Dialogue: 0,0:20:22.49,0:20:24.98,Default,,0000,0000,0000,,1980. Sort of every year is another set of Dialogue: 0,0:20:24.98,0:20:27.46,Default,,0000,0000,0000,,things that we have discovered as a community\Nthat Dialogue: 0,0:20:27.46,0:20:29.15,Default,,0000,0000,0000,,we don't have to worry about, that were shared. Dialogue: 0,0:20:29.15,0:20:30.52,Default,,0000,0000,0000,,And I think, sort of, people look at us Dialogue: 0,0:20:30.52,0:20:31.73,Default,,0000,0000,0000,,and they say, oh my god it's a pile Dialogue: 0,0:20:31.73,0:20:34.06,Default,,0000,0000,0000,,of hacks. It's hacks on hacks on hacks on Dialogue: 0,0:20:34.06,0:20:35.97,Default,,0000,0000,0000,,hacks. But actually it's not. Actually what's\Ngoing on Dialogue: 0,0:20:35.97,0:20:39.14,Default,,0000,0000,0000,,here is that every single time you start off Dialogue: 0,0:20:39.14,0:20:41.68,Default,,0000,0000,0000,,with this sort of experimental playground,\Npeople are building, Dialogue: 0,0:20:41.68,0:20:43.21,Default,,0000,0000,0000,,you know, at the bottom layer, people were\Nbuilding Dialogue: 0,0:20:43.21,0:20:45.63,Default,,0000,0000,0000,,their own hardware. And eventually people\Ncame to the Dialogue: 0,0:20:45.63,0:20:47.55,Default,,0000,0000,0000,,conclusion that you don't have to build your\Nown Dialogue: 0,0:20:47.55,0:20:50.91,Default,,0000,0000,0000,,hardware. We can standardize around things\Nlike X86. Dialogue: 0,0:20:50.91,0:20:53.65,Default,,0000,0000,0000,,And then we standardized around it and people\Nstopped Dialogue: 0,0:20:53.65,0:20:55.98,Default,,0000,0000,0000,,worrying about all the craziness that was\Nunderneath. And Dialogue: 0,0:20:55.98,0:20:58.58,Default,,0000,0000,0000,,then people said, we can build C, and if Dialogue: 0,0:20:58.58,0:21:01.45,Default,,0000,0000,0000,,we build C, people can stop worrying, most\Nof Dialogue: 0,0:21:01.45,0:21:03.76,Default,,0000,0000,0000,,the time, about what's below it. So really\Nevery Dialogue: 0,0:21:03.76,0:21:05.09,Default,,0000,0000,0000,,one of these layers is not a pile of Dialogue: 0,0:21:05.09,0:21:07.24,Default,,0000,0000,0000,,hacks built on a pile of hacks. It's us, Dialogue: 0,0:21:07.24,0:21:10.13,Default,,0000,0000,0000,,as a group of people, as a community of Dialogue: 0,0:21:10.13,0:21:12.48,Default,,0000,0000,0000,,programmers, deciding that 90% of the things\Nthat we're Dialogue: 0,0:21:12.48,0:21:14.92,Default,,0000,0000,0000,,doing, we've figured out we don't actually\Nneed to, Dialogue: 0,0:21:14.92,0:21:16.09,Default,,0000,0000,0000,,to worry about. Dialogue: 0,0:21:16.09,0:21:19.21,Default,,0000,0000,0000,,And, I think, fundamentally, this is about,\Nsort of Dialogue: 0,0:21:19.21,0:21:21.58,Default,,0000,0000,0000,,the history of programming is that we have\Nshared Dialogue: 0,0:21:21.58,0:21:25.84,Default,,0000,0000,0000,,solutions. We make progress by building up\Nthe stack. Dialogue: 0,0:21:25.84,0:21:27.73,Default,,0000,0000,0000,,By eliminating code that we didn't have to\Nwrite. Dialogue: 0,0:21:27.73,0:21:30.78,Default,,0000,0000,0000,,And Steve Jobs actually talked about this\Nin 1995. Dialogue: 0,0:21:30.78,0:21:32.94,Default,,0000,0000,0000,,Sort of exactly the same thing. So let me Dialogue: 0,0:21:32.94,0:21:33.90,Default,,0000,0000,0000,,let him talk. Dialogue: 0,0:21:33.90,0:21:37.06,Default,,0000,0000,0000,,STEVE JOBS: Because it's all about managing\Ncomplexity, right. Dialogue: 0,0:21:37.06,0:21:39.73,Default,,0000,0000,0000,,You're developers. You know that. It's all\Nabout managing Dialogue: 0,0:21:39.73,0:21:44.10,Default,,0000,0000,0000,,complexity. It's, like, scaffolding, right.\NYou erect some scaffolding, Dialogue: 0,0:21:44.10,0:21:46.01,Default,,0000,0000,0000,,and if you keep going up and up and Dialogue: 0,0:21:46.01,0:21:49.77,Default,,0000,0000,0000,,up, eventually the scaffolding collapses of\Nits own weight, Dialogue: 0,0:21:49.77,0:21:53.59,Default,,0000,0000,0000,,right. That's what building software is. It's,\Nhow much Dialogue: 0,0:21:53.59,0:21:56.77,Default,,0000,0000,0000,,scaffolding can you erect before the whole\Nthing collapses Dialogue: 0,0:21:56.77,0:21:57.32,Default,,0000,0000,0000,,of its own weight. Dialogue: 0,0:21:57.32,0:21:58.75,Default,,0000,0000,0000,,Doesn't matter how many people you have working\Non Dialogue: 0,0:21:58.75,0:22:01.30,Default,,0000,0000,0000,,it. Doesn't matter if you're Microsoft with\Nthree, four Dialogue: 0,0:22:01.30,0:22:03.71,Default,,0000,0000,0000,,hundred people, five hundred people on the\Nteam. It Dialogue: 0,0:22:03.71,0:22:06.47,Default,,0000,0000,0000,,will collapse under its own weight. You've\Nread the Dialogue: 0,0:22:06.47,0:22:09.38,Default,,0000,0000,0000,,Mythical Man Month, right. Basic premise of\Nthis is, Dialogue: 0,0:22:09.38,0:22:11.89,Default,,0000,0000,0000,,a software development project gets to a certain\Nsize Dialogue: 0,0:22:11.89,0:22:13.89,Default,,0000,0000,0000,,where if you add one more person, the amount Dialogue: 0,0:22:13.89,0:22:16.19,Default,,0000,0000,0000,,of energy to communicate with that person\Nis actually Dialogue: 0,0:22:16.19,0:22:18.87,Default,,0000,0000,0000,,greater than their net contribution to the\Nproject, so Dialogue: 0,0:22:18.87,0:22:19.69,Default,,0000,0000,0000,,it slows down. Dialogue: 0,0:22:19.69,0:22:22.31,Default,,0000,0000,0000,,So you have local maximum and then it comes Dialogue: 0,0:22:22.31,0:22:25.28,Default,,0000,0000,0000,,down. We all know that about software. It's\Nabout Dialogue: 0,0:22:25.28,0:22:29.90,Default,,0000,0000,0000,,managing complexity. These tools allow you\Nto not have Dialogue: 0,0:22:29.90,0:22:32.71,Default,,0000,0000,0000,,to worry about ninety percent of the stuff\Nyou Dialogue: 0,0:22:32.71,0:22:35.70,Default,,0000,0000,0000,,worry about, so that you can erect your five Dialogue: 0,0:22:35.70,0:22:39.80,Default,,0000,0000,0000,,stories of scaffolding, but starting at story\Nnumber twenty-three Dialogue: 0,0:22:39.80,0:22:43.18,Default,,0000,0000,0000,,instead of starting at story number six. You\Nget Dialogue: 0,0:22:43.18,0:22:45.10,Default,,0000,0000,0000,,a lot higher. Dialogue: 0,0:22:45.10,0:22:47.51,Default,,0000,0000,0000,,Y.K.: And I think that's fundamentally what\Nwe do Dialogue: 0,0:22:47.51,0:22:49.78,Default,,0000,0000,0000,,as software people. For all of the complaints\Nthat Dialogue: 0,0:22:49.78,0:22:53.17,Default,,0000,0000,0000,,people make about, you know, oh my god, every Dialogue: 0,0:22:53.17,0:22:57.88,Default,,0000,0000,0000,,abstraction leaks. All we've ever done, even\Nin, even Dialogue: 0,0:22:57.88,0:23:00.30,Default,,0000,0000,0000,,as far back as, you know, in the 60s, Dialogue: 0,0:23:00.30,0:23:03.54,Default,,0000,0000,0000,,but even in 1995, Steve Jobs was already talking Dialogue: 0,0:23:03.54,0:23:05.83,Default,,0000,0000,0000,,about this idea that we can build higher by Dialogue: 0,0:23:05.83,0:23:08.40,Default,,0000,0000,0000,,building shared solutions. And I'm gonna let\Nhim speak Dialogue: 0,0:23:08.40,0:23:12.35,Default,,0000,0000,0000,,one more time, because I think, really, it's\Nreally Dialogue: 0,0:23:12.35,0:23:14.82,Default,,0000,0000,0000,,fascinating how much this idea of how you\Nget Dialogue: 0,0:23:14.82,0:23:18.64,Default,,0000,0000,0000,,better programmer productivity hasn't really\Nchanged, fundamentally, since that Dialogue: 0,0:23:18.64,0:23:19.04,Default,,0000,0000,0000,,time. Dialogue: 0,0:23:19.04,0:23:22.21,Default,,0000,0000,0000,,STEVE JOBS: But, on top of that, we're gonna Dialogue: 0,0:23:22.21,0:23:29.21,Default,,0000,0000,0000,,put something called open step. And open step\Nlets Dialogue: 0,0:23:34.17,0:23:38.40,Default,,0000,0000,0000,,you start developing your apps on the twentieth\Nfloor. Dialogue: 0,0:23:38.40,0:23:40.43,Default,,0000,0000,0000,,And the kinds of apps you can deliver are Dialogue: 0,0:23:40.43,0:23:44.25,Default,,0000,0000,0000,,phenomenal. But there's another hidden advantage. Dialogue: 0,0:23:44.25,0:23:47.76,Default,,0000,0000,0000,,Most of the great break through, the page\Nmakers, Dialogue: 0,0:23:47.76,0:23:52.20,Default,,0000,0000,0000,,the illustrators, et cetera, the directors,\Ncome from smaller Dialogue: 0,0:23:52.20,0:23:54.57,Default,,0000,0000,0000,,software companies. That's been said a few\Ntimes today. Dialogue: 0,0:23:54.57,0:23:57.00,Default,,0000,0000,0000,,They don't come from the large software companies.\NThey Dialogue: 0,0:23:57.00,0:23:59.21,Default,,0000,0000,0000,,come from the smaller ones. And one of the Dialogue: 0,0:23:59.21,0:24:03.37,Default,,0000,0000,0000,,greatest things is that using this new technology,\Ntwo Dialogue: 0,0:24:03.37,0:24:06.54,Default,,0000,0000,0000,,people or three people in a garage can build Dialogue: 0,0:24:06.54,0:24:09.29,Default,,0000,0000,0000,,an app and get it from concept to market Dialogue: 0,0:24:09.29,0:24:11.59,Default,,0000,0000,0000,,in six to nine months, that is every bit Dialogue: 0,0:24:11.59,0:24:15.75,Default,,0000,0000,0000,,as feature-rich, every bit as reliable, and\Nevery bit Dialogue: 0,0:24:15.75,0:24:18.29,Default,,0000,0000,0000,,as exciting as a giant software company can\Ndo Dialogue: 0,0:24:18.29,0:24:20.99,Default,,0000,0000,0000,,with a hundred fifty person team. Dialogue: 0,0:24:20.99,0:24:22.04,Default,,0000,0000,0000,,It's phenomenal. Dialogue: 0,0:24:22.04,0:24:26.14,Default,,0000,0000,0000,,Y.K.: So, I think what's kind of cool about Dialogue: 0,0:24:26.14,0:24:31.64,Default,,0000,0000,0000,,this is that, this idea that we can take Dialogue: 0,0:24:31.64,0:24:35.05,Default,,0000,0000,0000,,shared problems that everyone has, shared\Nproblems that a Dialogue: 0,0:24:35.05,0:24:37.78,Default,,0000,0000,0000,,community of people have, solving the same\Nproblem, and Dialogue: 0,0:24:37.78,0:24:40.26,Default,,0000,0000,0000,,we can build up shared solutions. This is\Nnot Dialogue: 0,0:24:40.26,0:24:43.82,Default,,0000,0000,0000,,new. It's not, it shouldn't be controversial.\NIt's kind Dialogue: 0,0:24:43.82,0:24:47.10,Default,,0000,0000,0000,,of fundamental to what we do as software developers. Dialogue: 0,0:24:47.10,0:24:50.07,Default,,0000,0000,0000,,And yet, if someone isn't up here telling\Nyou Dialogue: 0,0:24:50.07,0:24:52.41,Default,,0000,0000,0000,,this, it's so easy to forget. There are so Dialogue: 0,0:24:52.41,0:24:55.11,Default,,0000,0000,0000,,many excuses that people tell themselves. Dialogue: 0,0:24:55.11,0:24:56.77,Default,,0000,0000,0000,,Sort of what happens in reality is you have Dialogue: 0,0:24:56.77,0:24:58.76,Default,,0000,0000,0000,,this bulk of shared solutions, you have an\Narea Dialogue: 0,0:24:58.76,0:25:01.49,Default,,0000,0000,0000,,of experimentation - sort of the wild west\N- Dialogue: 0,0:25:01.49,0:25:03.75,Default,,0000,0000,0000,,and you let the area of experimentation fold\Nback Dialogue: 0,0:25:03.75,0:25:05.65,Default,,0000,0000,0000,,into shared solutions. This is sort of how\NRails Dialogue: 0,0:25:05.65,0:25:08.02,Default,,0000,0000,0000,,works, right. So you build higher and higher\Nand Dialogue: 0,0:25:08.02,0:25:10.89,Default,,0000,0000,0000,,higher stacks. You get to a point where you, Dialogue: 0,0:25:10.89,0:25:12.59,Default,,0000,0000,0000,,you know, you could build something like Devise\Nin Dialogue: 0,0:25:12.59,0:25:15.07,Default,,0000,0000,0000,,the Rails community, because there's so much\Nof what Dialogue: 0,0:25:15.07,0:25:18.93,Default,,0000,0000,0000,,underpins Devise, you know, everybody uses\Nthe same set Dialogue: 0,0:25:18.93,0:25:22.31,Default,,0000,0000,0000,,of model abstractions, everyone has similar\Nways of talking Dialogue: 0,0:25:22.31,0:25:25.24,Default,,0000,0000,0000,,about users, right. So you can build an abstraction Dialogue: 0,0:25:25.24,0:25:27.06,Default,,0000,0000,0000,,on top of that because everyone has sort of Dialogue: 0,0:25:27.06,0:25:28.87,Default,,0000,0000,0000,,built up this shared understanding of what\Nit is Dialogue: 0,0:25:28.87,0:25:30.06,Default,,0000,0000,0000,,that we're doing. Dialogue: 0,0:25:30.06,0:25:33.17,Default,,0000,0000,0000,,And, it's so easy to let yourself be confused Dialogue: 0,0:25:33.17,0:25:35.63,Default,,0000,0000,0000,,by the fact that the area of experimentation\Nis Dialogue: 0,0:25:35.63,0:25:38.40,Default,,0000,0000,0000,,the wild west, and forget that that area of Dialogue: 0,0:25:38.40,0:25:41.82,Default,,0000,0000,0000,,experimentation is sitting on top of huge,\Na huge Dialogue: 0,0:25:41.82,0:25:43.80,Default,,0000,0000,0000,,stack of abstractions. And this is sort of,\NI Dialogue: 0,0:25:43.80,0:25:45.91,Default,,0000,0000,0000,,think, to me, the answer to why the node Dialogue: 0,0:25:45.91,0:25:49.78,Default,,0000,0000,0000,,community seems, they're sitting on top of\Nmaybe, you Dialogue: 0,0:25:49.78,0:25:53.34,Default,,0000,0000,0000,,know, the most advanced dynamic language git\Nin the Dialogue: 0,0:25:53.34,0:25:57.48,Default,,0000,0000,0000,,world, on top of all kinds of abstractions.\NAnd Dialogue: 0,0:25:57.48,0:25:58.63,Default,,0000,0000,0000,,they sit on top and they say, oh my Dialogue: 0,0:25:58.63,0:26:00.92,Default,,0000,0000,0000,,god, we need to build a lot of tiny Dialogue: 0,0:26:00.92,0:26:02.75,Default,,0000,0000,0000,,modules, because if we don't build tiny modules,\Nthis, Dialogue: 0,0:26:02.75,0:26:04.29,Default,,0000,0000,0000,,the abstraction's gonna kill us. Dialogue: 0,0:26:04.29,0:26:06.83,Default,,0000,0000,0000,,But, for me, this has always been a paradox. Dialogue: 0,0:26:06.83,0:26:08.65,Default,,0000,0000,0000,,You're sitting on top of a stack of abstractions Dialogue: 0,0:26:08.65,0:26:10.85,Default,,0000,0000,0000,,that's far higher than anything that you're\Nclaiming to Dialogue: 0,0:26:10.85,0:26:12.35,Default,,0000,0000,0000,,be afraid of. So, why are you so afraid? Dialogue: 0,0:26:12.35,0:26:13.90,Default,,0000,0000,0000,,And I think it's because of this area of Dialogue: 0,0:26:13.90,0:26:16.60,Default,,0000,0000,0000,,experimentation, right. When you're in an\Narea of experimentation, Dialogue: 0,0:26:16.60,0:26:18.64,Default,,0000,0000,0000,,of course abstractions are gonna leak. You're\Nstill figuring Dialogue: 0,0:26:18.64,0:26:20.65,Default,,0000,0000,0000,,out what it is that you're doing. Dialogue: 0,0:26:20.65,0:26:22.49,Default,,0000,0000,0000,,But the goal of a good community that's gonna Dialogue: 0,0:26:22.49,0:26:25.16,Default,,0000,0000,0000,,help people be more productive is to eventually\Nnotice Dialogue: 0,0:26:25.16,0:26:28.60,Default,,0000,0000,0000,,that the area of experimentation is over.\NAnd move Dialogue: 0,0:26:28.60,0:26:31.60,Default,,0000,0000,0000,,into a conventional system where you can say,\Nwe Dialogue: 0,0:26:31.60,0:26:33.06,Default,,0000,0000,0000,,don't need to argue about this anymore. It\Nwas Dialogue: 0,0:26:33.06,0:26:34.97,Default,,0000,0000,0000,,a worthy thing for us to discuss when we Dialogue: 0,0:26:34.97,0:26:37.18,Default,,0000,0000,0000,,were thinking about the problem, but we can\Ntake Dialogue: 0,0:26:37.18,0:26:38.82,Default,,0000,0000,0000,,that and we can roll it in, into our Dialogue: 0,0:26:38.82,0:26:40.29,Default,,0000,0000,0000,,set of shared defaults, and we can climb up Dialogue: 0,0:26:40.29,0:26:41.07,Default,,0000,0000,0000,,the ladder, right. Dialogue: 0,0:26:41.07,0:26:42.80,Default,,0000,0000,0000,,And this is what, this is what Steve was Dialogue: 0,0:26:42.80,0:26:46.00,Default,,0000,0000,0000,,saying. He was saying, you know, instead of\Nhaving Dialogue: 0,0:26:46.00,0:26:48.45,Default,,0000,0000,0000,,everybody start from some, some floor, sort\Nof this Dialogue: 0,0:26:48.45,0:26:52.70,Default,,0000,0000,0000,,is how iOS programming works today, right.\NIronically. Is Dialogue: 0,0:26:52.70,0:26:55.23,Default,,0000,0000,0000,,everyone starts from the same base. There\Nis not Dialogue: 0,0:26:55.23,0:26:57.39,Default,,0000,0000,0000,,a lot of shared programming. A lot of shared Dialogue: 0,0:26:57.39,0:27:01.19,Default,,0000,0000,0000,,solutions. And I think, fundamentally, open\Nsource has been Dialogue: 0,0:27:01.19,0:27:04.64,Default,,0000,0000,0000,,something that has really kick started this\Nidea of Dialogue: 0,0:27:04.64,0:27:06.83,Default,,0000,0000,0000,,experimentation merging through the shared\Nsolutions. Dialogue: 0,0:27:06.83,0:27:09.35,Default,,0000,0000,0000,,Because trying to essentially plan it the\Nway big Dialogue: 0,0:27:09.35,0:27:11.59,Default,,0000,0000,0000,,companies like Apple or Microsoft do it, is\Njust Dialogue: 0,0:27:11.59,0:27:14.12,Default,,0000,0000,0000,,not gonna get the job done across the board. Dialogue: 0,0:27:14.12,0:27:16.90,Default,,0000,0000,0000,,It'll, it'll solve some problems, but getting\Nthe open Dialogue: 0,0:27:16.90,0:27:19.06,Default,,0000,0000,0000,,source communities, the power of the open\Nsource community, Dialogue: 0,0:27:19.06,0:27:21.34,Default,,0000,0000,0000,,means that you can have all these little verticals, Dialogue: 0,0:27:21.34,0:27:23.61,Default,,0000,0000,0000,,all these little areas where people are trying\Nto Dialogue: 0,0:27:23.61,0:27:27.16,Default,,0000,0000,0000,,build higher abstractions for shared communities. Dialogue: 0,0:27:27.16,0:27:30.80,Default,,0000,0000,0000,,And interestingly, it's not enough to make\Nthese abstractions Dialogue: 0,0:27:30.80,0:27:33.41,Default,,0000,0000,0000,,cheap. I think when you think about how people Dialogue: 0,0:27:33.41,0:27:35.75,Default,,0000,0000,0000,,actually go and they build on top of these Dialogue: 0,0:27:35.75,0:27:38.34,Default,,0000,0000,0000,,stacks, it's not enough, if every layer in\Nthe Dialogue: 0,0:27:38.34,0:27:41.17,Default,,0000,0000,0000,,abstraction, in fact, if x86 and then C and, Dialogue: 0,0:27:41.17,0:27:42.72,Default,,0000,0000,0000,,you know, Linux, and Posits. If every one\Nof Dialogue: 0,0:27:42.72,0:27:44.77,Default,,0000,0000,0000,,those things cost a little, by the time you Dialogue: 0,0:27:44.77,0:27:46.68,Default,,0000,0000,0000,,actually got to build software, you would\Nbe so Dialogue: 0,0:27:46.68,0:27:48.65,Default,,0000,0000,0000,,overwhelmed with the weight of the abstraction\Nthat you Dialogue: 0,0:27:48.65,0:27:49.72,Default,,0000,0000,0000,,would never be able to do anything. Dialogue: 0,0:27:49.72,0:27:53.27,Default,,0000,0000,0000,,So, it's really fundamental that the abstractions\Nthat we Dialogue: 0,0:27:53.27,0:27:56.03,Default,,0000,0000,0000,,build eventually get to the point where they're\Nbasically Dialogue: 0,0:27:56.03,0:27:58.00,Default,,0000,0000,0000,,free. Where they have no cognitive capacity.\NSo that Dialogue: 0,0:27:58.00,0:27:59.86,Default,,0000,0000,0000,,we can keep building higher and higher and\Nhigher, Dialogue: 0,0:27:59.86,0:28:03.02,Default,,0000,0000,0000,,right. And the Rails philosophy is basically,\Nhow do Dialogue: 0,0:28:03.02,0:28:04.21,Default,,0000,0000,0000,,you do that? How do you, how do, how Dialogue: 0,0:28:04.21,0:28:05.30,Default,,0000,0000,0000,,do you say, you know, we're gonna experiment\Nfor Dialogue: 0,0:28:05.30,0:28:07.80,Default,,0000,0000,0000,,a little bit, but eventually we're gonna work\Nreally Dialogue: 0,0:28:07.80,0:28:10.39,Default,,0000,0000,0000,,hard, we're gonna push really hard at making\Nthe Dialogue: 0,0:28:10.39,0:28:12.24,Default,,0000,0000,0000,,cost of that thing that everyone was just\Nexperimenting Dialogue: 0,0:28:12.24,0:28:14.18,Default,,0000,0000,0000,,with a minute, a little, a minute ago free, Dialogue: 0,0:28:14.18,0:28:15.65,Default,,0000,0000,0000,,so that we can go build another level up Dialogue: 0,0:28:15.65,0:28:16.96,Default,,0000,0000,0000,,and another level up. Dialogue: 0,0:28:16.96,0:28:19.83,Default,,0000,0000,0000,,And, I have a few sort of closing points Dialogue: 0,0:28:19.83,0:28:23.45,Default,,0000,0000,0000,,to make about the ecosystem. So, first of\Nall, Dialogue: 0,0:28:23.45,0:28:24.73,Default,,0000,0000,0000,,Rails is not the only way that we have Dialogue: 0,0:28:24.73,0:28:28.16,Default,,0000,0000,0000,,to share. I think I was pretty sad when Dialogue: 0,0:28:28.16,0:28:31.53,Default,,0000,0000,0000,,the queue abstraction didn't end up in Rails,\Nbut Dialogue: 0,0:28:31.53,0:28:33.85,Default,,0000,0000,0000,,I kind of am sad that we didn't get Dialogue: 0,0:28:33.85,0:28:35.87,Default,,0000,0000,0000,,to see sort of what you can build up Dialogue: 0,0:28:35.87,0:28:38.49,Default,,0000,0000,0000,,on top of the queue abstraction, there's really\Nno Dialogue: 0,0:28:38.49,0:28:41.03,Default,,0000,0000,0000,,reason that all the queue guys didn't get\Ntogether Dialogue: 0,0:28:41.03,0:28:44.36,Default,,0000,0000,0000,,and say, you know, we're gonna build some\Nabstraction Dialogue: 0,0:28:44.36,0:28:45.80,Default,,0000,0000,0000,,on top of that. And once you build the Dialogue: 0,0:28:45.80,0:28:47.49,Default,,0000,0000,0000,,abstraction on top of that, then you can see Dialogue: 0,0:28:47.49,0:28:49.27,Default,,0000,0000,0000,,how high you can go, right. Dialogue: 0,0:28:49.27,0:28:50.57,Default,,0000,0000,0000,,And a sort of similar thing happened in the Dialogue: 0,0:28:50.57,0:28:52.36,Default,,0000,0000,0000,,JavaScript community. In the JavaScript community\Nthere were a Dialogue: 0,0:28:52.36,0:28:57.60,Default,,0000,0000,0000,,lot of different promise implementations,\Nand what happened over Dialogue: 0,0:28:57.60,0:28:59.29,Default,,0000,0000,0000,,time is that people realized that not having\Na Dialogue: 0,0:28:59.29,0:29:01.19,Default,,0000,0000,0000,,standard way to talk about this was actually\Nmaking Dialogue: 0,0:29:01.19,0:29:02.94,Default,,0000,0000,0000,,it hard to build up. Dialogue: 0,0:29:02.94,0:29:05.27,Default,,0000,0000,0000,,So we said, let's actually get together and\Nlet's Dialogue: 0,0:29:05.27,0:29:06.74,Default,,0000,0000,0000,,decide that we're gonna have a standard way\Nof Dialogue: 0,0:29:06.74,0:29:09.76,Default,,0000,0000,0000,,talking about that. We'll call it PromisesA+.\NAnd now Dialogue: 0,0:29:09.76,0:29:12.45,Default,,0000,0000,0000,,Promises are in the DOM. And now, you know, Dialogue: 0,0:29:12.45,0:29:14.79,Default,,0000,0000,0000,,we can build up another level and make asynchronous Dialogue: 0,0:29:14.79,0:29:16.88,Default,,0000,0000,0000,,things look synchronous. And then we can build\Nup Dialogue: 0,0:29:16.88,0:29:19.03,Default,,0000,0000,0000,,another level, and we can put that idea into Dialogue: 0,0:29:19.03,0:29:20.16,Default,,0000,0000,0000,,the language. Dialogue: 0,0:29:20.16,0:29:22.39,Default,,0000,0000,0000,,And, you know, I don't know where we're gonna Dialogue: 0,0:29:22.39,0:29:24.21,Default,,0000,0000,0000,,go from there. But we can start building higher Dialogue: 0,0:29:24.21,0:29:26.57,Default,,0000,0000,0000,,and higher abstractions. But it requires taking\Nthe first Dialogue: 0,0:29:26.57,0:29:30.35,Default,,0000,0000,0000,,step. So I, I guess what I'm saying is, Dialogue: 0,0:29:30.35,0:29:32.28,Default,,0000,0000,0000,,getting something into Rails core is not the\Nonly Dialogue: 0,0:29:32.28,0:29:34.31,Default,,0000,0000,0000,,way that you can build these abstractions.\NIt, it Dialogue: 0,0:29:34.31,0:29:36.83,Default,,0000,0000,0000,,requires some discipline to actually get to\Nthe point Dialogue: 0,0:29:36.83,0:29:38.95,Default,,0000,0000,0000,,where we're agreeing on something, but I think\Nif Dialogue: 0,0:29:38.95,0:29:41.22,Default,,0000,0000,0000,,you find that there is some topic, like, for Dialogue: 0,0:29:41.22,0:29:45.93,Default,,0000,0000,0000,,example, jobs or, you know, queuing or jobs,\Nand Dialogue: 0,0:29:45.93,0:29:47.45,Default,,0000,0000,0000,,everybody does them or a lot of people do Dialogue: 0,0:29:47.45,0:29:48.62,Default,,0000,0000,0000,,them but we don't have a good way of Dialogue: 0,0:29:48.62,0:29:51.04,Default,,0000,0000,0000,,building on top of them, that's a good opportunity Dialogue: 0,0:29:51.04,0:29:52.62,Default,,0000,0000,0000,,for someone to go and say, I'm gonna do Dialogue: 0,0:29:52.62,0:29:54.57,Default,,0000,0000,0000,,the hard work to say, let's create a shared Dialogue: 0,0:29:54.57,0:29:55.96,Default,,0000,0000,0000,,idea of what it is that we're doing. Dialogue: 0,0:29:55.96,0:29:58.13,Default,,0000,0000,0000,,And sometimes it's via an inter-op player\Nand sometimes Dialogue: 0,0:29:58.13,0:30:00.81,Default,,0000,0000,0000,,it's via standardizing around one solution. Dialogue: 0,0:30:00.81,0:30:04.06,Default,,0000,0000,0000,,And, another part of this is, when I started Dialogue: 0,0:30:04.06,0:30:06.53,Default,,0000,0000,0000,,working on Ember in the JavaScript community,\NI thought Dialogue: 0,0:30:06.53,0:30:08.66,Default,,0000,0000,0000,,a lot of these ideas were obvious. I thought Dialogue: 0,0:30:08.66,0:30:10.84,Default,,0000,0000,0000,,it was gonna be, you know, a slam dunk. Dialogue: 0,0:30:10.84,0:30:12.73,Default,,0000,0000,0000,,Everybody should agree that building a shared\Nset of Dialogue: 0,0:30:12.73,0:30:15.69,Default,,0000,0000,0000,,solutions is the right thing. And what I found Dialogue: 0,0:30:15.69,0:30:20.06,Default,,0000,0000,0000,,was that, what I found instead is how powerful Dialogue: 0,0:30:20.06,0:30:23.57,Default,,0000,0000,0000,,the unique snowflake bias is, and how powerful\Nthe Dialogue: 0,0:30:23.57,0:30:27.22,Default,,0000,0000,0000,,leaky abstraction fallacy can be in communities\Nthat don't Dialogue: 0,0:30:27.22,0:30:28.75,Default,,0000,0000,0000,,place a high value on shared solutions. Dialogue: 0,0:30:28.75,0:30:31.13,Default,,0000,0000,0000,,So, if you don't see the power of shared Dialogue: 0,0:30:31.13,0:30:33.81,Default,,0000,0000,0000,,solutions, if you're not familiar with the\Nidea, with Dialogue: 0,0:30:33.81,0:30:36.04,Default,,0000,0000,0000,,the wins, it's really easy to pull out those Dialogue: 0,0:30:36.04,0:30:38.43,Default,,0000,0000,0000,,olds canards, the I am a unique snow flake, Dialogue: 0,0:30:38.43,0:30:41.39,Default,,0000,0000,0000,,I can't use a tool like Ember, because I Dialogue: 0,0:30:41.39,0:30:44.25,Default,,0000,0000,0000,,have special needs. I need to use a toolkit Dialogue: 0,0:30:44.25,0:30:46.39,Default,,0000,0000,0000,,that lets me build my own framework, because\Nmy Dialogue: 0,0:30:46.39,0:30:47.15,Default,,0000,0000,0000,,needs are oh-so-special. Dialogue: 0,0:30:47.15,0:30:51.08,Default,,0000,0000,0000,,Or, you know, you know, I looked at Ember Dialogue: 0,0:30:51.08,0:30:52.92,Default,,0000,0000,0000,,when it was new, and Ember leaked all over Dialogue: 0,0:30:52.92,0:30:54.78,Default,,0000,0000,0000,,the place. So the law of leaky abstractions\Nmeans Dialogue: 0,0:30:54.78,0:30:57.21,Default,,0000,0000,0000,,you can't build in JavaScript a shared solution.\NBut, Dialogue: 0,0:30:57.21,0:30:58.45,Default,,0000,0000,0000,,of course these things are not true. And I Dialogue: 0,0:30:58.45,0:31:01.27,Default,,0000,0000,0000,,think, what I want to say is, I think Dialogue: 0,0:31:01.27,0:31:03.86,Default,,0000,0000,0000,,Rails, ten years on, has basically proved\Nthat these Dialogue: 0,0:31:03.86,0:31:06.68,Default,,0000,0000,0000,,things are not true. Dialogue: 0,0:31:06.68,0:31:08.84,Default,,0000,0000,0000,,Before Rails, people spent a lot of time working Dialogue: 0,0:31:08.84,0:31:11.33,Default,,0000,0000,0000,,on their own bespoke solutions, convinced\Nthat their problem Dialogue: 0,0:31:11.33,0:31:14.59,Default,,0000,0000,0000,,was just too special for shared solutions.\NAn when Dialogue: 0,0:31:14.59,0:31:16.97,Default,,0000,0000,0000,,Rails came out, they looked at the very idea Dialogue: 0,0:31:16.97,0:31:20.28,Default,,0000,0000,0000,,of convention over configuration as a joke.\NAnd then, Dialogue: 0,0:31:20.28,0:31:22.97,Default,,0000,0000,0000,,one day, Rails developers started beating\Nthe pants off Dialogue: 0,0:31:22.97,0:31:27.20,Default,,0000,0000,0000,,those people. And I think, in closing, if\Nyou Dialogue: 0,0:31:27.20,0:31:29.84,Default,,0000,0000,0000,,find yourself in an ecosystem where developers\Nstill start Dialogue: 0,0:31:29.84,0:31:32.58,Default,,0000,0000,0000,,from floor one every time, learn the lessons\Nof Dialogue: 0,0:31:32.58,0:31:34.02,Default,,0000,0000,0000,,Rails. Dialogue: 0,0:31:34.02,0:31:37.63,Default,,0000,0000,0000,,Everybody should band together, push back,\Nboth in your Dialogue: 0,0:31:37.63,0:31:40.37,Default,,0000,0000,0000,,own brain and on other people, on the excuses Dialogue: 0,0:31:40.37,0:31:42.54,Default,,0000,0000,0000,,that drive us apart instead of the things\Nthat Dialogue: 0,0:31:42.54,0:31:46.58,Default,,0000,0000,0000,,bind us together. The legacy of Rails isn't\NMVC Dialogue: 0,0:31:46.58,0:31:49.77,Default,,0000,0000,0000,,or even Ruby. It's powerful ten years of evidence Dialogue: 0,0:31:49.77,0:31:52.10,Default,,0000,0000,0000,,that by sticking to our guns, we can build Dialogue: 0,0:31:52.10,0:31:54.22,Default,,0000,0000,0000,,far higher than anyone ever imagined. Dialogue: 0,0:31:54.22,0:31:56.86,Default,,0000,0000,0000,,Thank you very much.