[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:01.52,Default,,0000,0000,0000,,Metaphor Dialogue: 0,0:00:03.86,0:00:07.83,Default,,0000,0000,0000,,I became interested in the way metaphors Dialogue: 0,0:00:07.83,0:00:10.43,Default,,0000,0000,0000,,influence how we think Dialogue: 0,0:00:10.43,0:00:13.51,Default,,0000,0000,0000,,after reading George Lakoff and Mark Johnson's Dialogue: 0,0:00:13.51,0:00:15.15,Default,,0000,0000,0000,,"Metaphors We Live By". Dialogue: 0,0:00:15.30,0:00:17.82,Default,,0000,0000,0000,,An important idea is that Dialogue: 0,0:00:17.82,0:00:23.64,Default,,0000,0000,0000,,we reason by analogy with the metaphors Dialogue: 0,0:00:23.64,0:00:25.69,Default,,0000,0000,0000,,that have entered our language. Dialogue: 0,0:00:26.36,0:00:27.98,Default,,0000,0000,0000,,Debt Dialogue: 0,0:00:29.74,0:00:33.51,Default,,0000,0000,0000,,I coined the debt metaphor to explain Dialogue: 0,0:00:33.51,0:00:35.59,Default,,0000,0000,0000,,the refactoring that we were doing Dialogue: 0,0:00:35.59,0:00:38.73,Default,,0000,0000,0000,,on the WyCash product. Dialogue: 0,0:00:38.73,0:00:41.87,Default,,0000,0000,0000,,This was an early product Dialogue: 0,0:00:41.87,0:00:45.02,Default,,0000,0000,0000,,done in Digitalk Smalltalk Dialogue: 0,0:00:45.02,0:00:47.65,Default,,0000,0000,0000,,and it was important to me that Dialogue: 0,0:00:47.65,0:00:50.32,Default,,0000,0000,0000,,we accumulate the learnings we did Dialogue: 0,0:00:50.32,0:00:52.40,Default,,0000,0000,0000,,about the application over time Dialogue: 0,0:00:52.40,0:00:57.24,Default,,0000,0000,0000,,by modifying the program to look Dialogue: 0,0:00:57.24,0:01:00.52,Default,,0000,0000,0000,,as if we have known what we were doing Dialogue: 0,0:01:00.52,0:01:03.96,Default,,0000,0000,0000,,all along and to look as if it had been easy Dialogue: 0,0:01:03.96,0:01:06.58,Default,,0000,0000,0000,,to do in Smalltalk. Dialogue: 0,0:01:06.58,0:01:09.01,Default,,0000,0000,0000,,The explanation I gave to my boss, Dialogue: 0,0:01:09.01,0:01:11.06,Default,,0000,0000,0000,,and this was financial software, Dialogue: 0,0:01:11.06,0:01:15.27,Default,,0000,0000,0000,,was a financial analogy I called "the debt metaphor". Dialogue: 0,0:01:15.27,0:01:19.21,Default,,0000,0000,0000,,And that said that if we failed to make our Dialogue: 0,0:01:19.21,0:01:22.56,Default,,0000,0000,0000,,program align to what we then understood Dialogue: 0,0:01:22.56,0:01:25.88,Default,,0000,0000,0000,,to be the proper way to think about our Dialogue: 0,0:01:25.88,0:01:28.61,Default,,0000,0000,0000,,financial objects, then we were going to Dialogue: 0,0:01:28.61,0:01:31.69,Default,,0000,0000,0000,,continually stumble over that disagreement Dialogue: 0,0:01:31.69,0:01:34.38,Default,,0000,0000,0000,,and that would slow us down which was like Dialogue: 0,0:01:34.38,0:01:36.51,Default,,0000,0000,0000,,paying interests on a loan. Dialogue: 0,0:01:37.02,0:01:38.84,Default,,0000,0000,0000,,Speed Dialogue: 0,0:01:39.88,0:01:42.50,Default,,0000,0000,0000,,With borrowed money you can Dialogue: 0,0:01:42.50,0:01:45.06,Default,,0000,0000,0000,,do something sooner than you might otherwise Dialogue: 0,0:01:45.06,0:01:47.96,Default,,0000,0000,0000,,but then until you pay back that money Dialogue: 0,0:01:47.96,0:01:50.76,Default,,0000,0000,0000,,you will be paying interest. Dialogue: 0,0:01:52.20,0:01:55.79,Default,,0000,0000,0000,,I thought borrowing money was a good idea Dialogue: 0,0:01:55.79,0:01:58.90,Default,,0000,0000,0000,,I thought that rushing software out the door Dialogue: 0,0:01:58.90,0:02:01.94,Default,,0000,0000,0000,,to get some experience with it was a good idea Dialogue: 0,0:02:01.94,0:02:06.100,Default,,0000,0000,0000,,but that of course you would eventually go back Dialogue: 0,0:02:06.100,0:02:09.16,Default,,0000,0000,0000,,and as you learned things about that software Dialogue: 0,0:02:09.16,0:02:11.99,Default,,0000,0000,0000,,you would repay that loan Dialogue: 0,0:02:11.99,0:02:15.52,Default,,0000,0000,0000,,by refactoring the program Dialogue: 0,0:02:15.52,0:02:19.69,Default,,0000,0000,0000,,to reflect your experience as you acquired it. Dialogue: 0,0:02:20.25,0:02:21.100,Default,,0000,0000,0000,,Burden Dialogue: 0,0:02:22.81,0:02:24.92,Default,,0000,0000,0000,,I think that there were plenty of cases Dialogue: 0,0:02:24.92,0:02:28.95,Default,,0000,0000,0000,,where people would rush software out the door Dialogue: 0,0:02:28.95,0:02:32.24,Default,,0000,0000,0000,,and learn things but never put that Dialogue: 0,0:02:32.24,0:02:34.51,Default,,0000,0000,0000,,learning back into the program Dialogue: 0,0:02:34.51,0:02:39.48,Default,,0000,0000,0000,,and that by analogy was borrowing money Dialogue: 0,0:02:39.48,0:02:42.71,Default,,0000,0000,0000,,thinking that you never had to pay it back. Dialogue: 0,0:02:42.71,0:02:45.55,Default,,0000,0000,0000,,Of course, if you do that, say with your Dialogue: 0,0:02:45.55,0:02:48.06,Default,,0000,0000,0000,,credit card, eventually all your income Dialogue: 0,0:02:48.06,0:02:50.35,Default,,0000,0000,0000,,goes to interest and your purchasing power Dialogue: 0,0:02:50.35,0:02:53.34,Default,,0000,0000,0000,,goes to zero. By the same token, if you Dialogue: 0,0:02:53.34,0:02:55.96,Default,,0000,0000,0000,,develop a program for a long period of time Dialogue: 0,0:02:55.96,0:02:57.70,Default,,0000,0000,0000,,by only adding features Dialogue: 0,0:02:57.70,0:03:00.37,Default,,0000,0000,0000,,and never reorganizing it to reflect Dialogue: 0,0:03:00.37,0:03:02.59,Default,,0000,0000,0000,,your understanding of those features Dialogue: 0,0:03:02.59,0:03:04.74,Default,,0000,0000,0000,,then eventually that program simply Dialogue: 0,0:03:04.74,0:03:07.13,Default,,0000,0000,0000,,does not contain any understanding Dialogue: 0,0:03:07.13,0:03:08.93,Default,,0000,0000,0000,,and all efforts to work on it Dialogue: 0,0:03:08.93,0:03:11.16,Default,,0000,0000,0000,,take longer and longer. Dialogue: 0,0:03:11.16,0:03:14.29,Default,,0000,0000,0000,,In other words, the interest is total, Dialogue: 0,0:03:14.29,0:03:15.93,Default,,0000,0000,0000,,you make zero progress. Dialogue: 0,0:03:16.35,0:03:18.14,Default,,0000,0000,0000,,Agility Dialogue: 0,0:03:19.23,0:03:23.32,Default,,0000,0000,0000,,A lot of bloggers at least have explained Dialogue: 0,0:03:23.32,0:03:26.83,Default,,0000,0000,0000,,the debt metaphor and confused it, I think, Dialogue: 0,0:03:26.83,0:03:31.19,Default,,0000,0000,0000,,with the idea that you could write code poorly Dialogue: 0,0:03:31.19,0:03:33.86,Default,,0000,0000,0000,,with the intention of doing a good job later Dialogue: 0,0:03:33.86,0:03:35.32,Default,,0000,0000,0000,,and thinking that Dialogue: 0,0:03:35.32,0:03:38.50,Default,,0000,0000,0000,,that was the primary source of debt. Dialogue: 0,0:03:38.50,0:03:41.74,Default,,0000,0000,0000,,I am never in favor of writing code poorly Dialogue: 0,0:03:41.74,0:03:45.73,Default,,0000,0000,0000,,but I am in favor of writing code to reflect Dialogue: 0,0:03:45.73,0:03:47.58,Default,,0000,0000,0000,,your current understanding of a problem Dialogue: 0,0:03:47.58,0:03:49.95,Default,,0000,0000,0000,,even if that understanding is partial. Dialogue: 0,0:03:49.95,0:03:53.98,Default,,0000,0000,0000,,If you want to be able to go into Dialogue: 0,0:03:53.98,0:03:57.33,Default,,0000,0000,0000,,debt that way by developing software Dialogue: 0,0:03:57.33,0:03:59.12,Default,,0000,0000,0000,,that you do not completely understand, Dialogue: 0,0:03:59.12,0:04:02.95,Default,,0000,0000,0000,,you are wise to make that software reflect Dialogue: 0,0:04:02.95,0:04:05.15,Default,,0000,0000,0000,,your understanding as best as you can Dialogue: 0,0:04:05.15,0:04:08.28,Default,,0000,0000,0000,,so that when it does come time to refactor Dialogue: 0,0:04:08.28,0:04:09.60,Default,,0000,0000,0000,,it is clear what you were thinking Dialogue: 0,0:04:09.60,0:04:11.33,Default,,0000,0000,0000,,when you wrote it, Dialogue: 0,0:04:11.33,0:04:13.95,Default,,0000,0000,0000,,making it easier to refactor it Dialogue: 0,0:04:13.95,0:04:16.11,Default,,0000,0000,0000,,into what your current thinking is now. Dialogue: 0,0:04:16.11,0:04:18.50,Default,,0000,0000,0000,,In other words, the whole debt metaphor, Dialogue: 0,0:04:18.50,0:04:21.22,Default,,0000,0000,0000,,let's say, the ability to pay back debt, Dialogue: 0,0:04:21.22,0:04:23.74,Default,,0000,0000,0000,,and make the debt metaphor work for your Dialogue: 0,0:04:23.74,0:04:26.03,Default,,0000,0000,0000,,advantage depends upon your writing Dialogue: 0,0:04:26.03,0:04:29.02,Default,,0000,0000,0000,,code that is clean enough to be able to refactor Dialogue: 0,0:04:29.02,0:04:31.57,Default,,0000,0000,0000,,as you come to understand your problem. Dialogue: 0,0:04:31.57,0:04:34.33,Default,,0000,0000,0000,,I think that is a good methodology. Dialogue: 0,0:04:34.33,0:04:36.97,Default,,0000,0000,0000,,It is at the heart of Extreme Programming. Dialogue: 0,0:04:36.97,0:04:39.62,Default,,0000,0000,0000,,The debt metaphor is an explanation, Dialogue: 0,0:04:39.62,0:04:41.61,Default,,0000,0000,0000,,one of many explanations for why Dialogue: 0,0:04:41.61,0:04:43.64,Default,,0000,0000,0000,,Extreme Programming works.