YouTube2Text

Spec-Driven Dev Is Back. But Not How You Think • Daniel Terhorst-North & Gojko Adzic • GOTO 2026 — Transcript

by GOTO Conferences · 7,254 words · 1,144 segments · language en · Watch on YouTube

Full transcript

  1. 0:13Well, hello.
  2. 0:15Well, hello
  3. 0:16what are you doing there? Hey, I'm doing
  4. 0:18wonderful. How are you doing?
  5. 0:21I'm very well, thank you.
  6. 0:23So, one of the things I'm I'm kind of
  7. 0:25really curious to
  8. 0:26get your opinion on is whether this
  9. 0:29whole spec-driven thing is going back to
  10. 0:31waterfall and whether it's negating
  11. 0:34pretty much everything we've talked
  12. 0:35about in the last 30 years or is it kind
  13. 0:39of really giving us superpowers to do
  14. 0:41fast feedback the way we never had
  15. 0:43powers to do.
  16. 0:45And so let let let's I guess we should
  17. 0:47probably start with some terms. The the
  18. 0:49thing that I've
  19. 0:51I've seen spec-driven
  20. 0:53a lot on the LinkedIn. I don't know why
  21. 0:55I'm on LinkedIn. It's just kind of it's
  22. 0:56become the new Twitter. It's where
  23. 0:58people go and just It's a bit less
  24. 1:00racist. It's what? It's a bit less
  25. 1:03racist. It's it's a bit less hatey. It's
  26. 1:05a bit more respectful.
  27. 1:07But certainly [laughter]
  28. 1:09there's still a lot of nonsense on
  29. 1:10there. Spec-driven then is where someone
  30. 1:14puts together a to-do list or a list of
  31. 1:18bullets or something.
  32. 1:20Um they say, "Right, this is what the
  33. 1:21system needs to do." And it might be
  34. 1:23prose. It might be a description of a
  35. 1:25product. It might be
  36. 1:27a bullet list of features.
  37. 1:30Everyone agree? Haiku is best.
  38. 1:32>> It could be high I mean haiku is
  39. 1:33fantastic. I I still want to see an
  40. 1:35entirely limerick-driven
  41. 1:38GenAI. I think that'd be wonderful. Just
  42. 1:40after St. Patrick's Day, I feel like
  43. 1:42that's a thing. But no no I I think I
  44. 1:44think what I'm seeing is we're using
  45. 1:47spec-driven in two very different
  46. 1:48contexts and it's the
  47. 1:50the context that matters. So,
  48. 1:52spec-driven as a one-shot is the thing
  49. 1:55that I think you're referring to and I
  50. 1:56it's just it's never going to work,
  51. 1:58right? I'm going to put it out there.
  52. 1:59It's never going to work. You can't
  53. 2:01describe a fully functional, fully
  54. 2:03complete application
  55. 2:06and give it to
  56. 2:07a bot or a swarm of bots or whatever and
  57. 2:10get a product out the other end. I don't
  58. 2:12think that's a thing. Um or at least I
  59. 2:14don't think that's the thing that I
  60. 2:15would ever want to put into production
  61. 2:17with any kind of security, resilience,
  62. 2:20availability, compliance, accessibility
  63. 2:23guarantees anywhere, right?
  64. 2:25But I think the
  65. 2:27the idea of the agent doing the coding
  66. 2:30bit
  67. 2:32in a in an iterative spec-driven world,
  68. 2:36I I haven't yet done this, but I don't
  69. 2:39see any reason why that shouldn't
  70. 2:41be a thing and be the thing that gets
  71. 2:43better and better.
  72. 2:45Because, you know, I keep hearing this
  73. 2:47all the programming's the easy part, the
  74. 2:48coding's the easy part. No, I mean it's
  75. 2:50it's the easier part. It's the more
  76. 2:52deterministic part of a very large
  77. 2:54number of parts. It's still not easy or
  78. 2:56at least if it were easy, I would see a
  79. 2:59lot more I would consider good,
  80. 3:01readable, legible, habitable code in the
  81. 3:03world and I don't.
  82. 3:05So, it's very easy to type things into a
  83. 3:08computer. It's very easy to type things
  84. 3:10in such a way that a an appropriate
  85. 3:13compiler or interpreter can run them and
  86. 3:15do stuff.
  87. 3:16Um as Martin Fowler said as far back as
  88. 3:191996, any idiot can write
  89. 3:22code for a computer that a computer can
  90. 3:23understand. Programming is about writing
  91. 3:25software that humans can understand. And
  92. 3:28I think we're a long way off any of the
  93. 3:29GenAIs, any of the frontier models
  94. 3:31writing software that a that a human can
  95. 3:33understand.
  96. 3:35But I think if we're going to go in in
  97. 3:36little iterative loops with plenty of
  98. 3:38feedback, automated feedback,
  99. 3:40prompt-based feedback, developing the
  100. 3:43spec as we go, that kind of really is
  101. 3:45BDD, right?
  102. 3:46Yeah, I get the same feeling. So,
  103. 3:48there's a couple of things I tried last
  104. 3:49few months. There's there's some tooling
  105. 3:52around this spec-driven development
  106. 3:54that's promoted by Microsoft/GitHub. So,
  107. 3:57there's the spec kit, there's the open
  108. 3:58spec that's like an open open-source
  109. 4:01version of it. There's a Although this
  110. 4:02one is open-source as well. So, we're
  111. 4:04getting an open-source version of an
  112. 4:06open-source tool.
  113. 4:07>> [laughter]
  114. 4:08>> And then there's like Kiro from Amazon.
  115. 4:10There's a bunch of other things and
  116. 4:12everybody and their dog seems to be
  117. 4:14publishing their own kind of spec-driven
  118. 4:16process now, which is a kind of a bunch
  119. 4:19of markdown files effectively
  120. 4:21implementing what what's it like
  121. 4:23the password for this is an RPI loop
  122. 4:25like research, plan, and and implement.
  123. 4:28Kind of my experience is that
  124. 4:30a lot of these things are basically
  125. 4:33creating a a sourdough starter for a
  126. 4:36process where
  127. 4:38you're supposed to take that and then
  128. 4:40heavily modify it for your use. Some
  129. 4:41I've kind of had
  130. 4:44a reasonable success teaching Claude
  131. 4:46code how to develop the code in a way I
  132. 4:48like to. Mhm. And it's producing code
  133. 4:50that is
  134. 4:51if you take me for a human then humanly
  135. 4:54developed. Um it took a lot of work to
  136. 4:57get it there and and I've kind of
  137. 4:59inspired by some of these frameworks or
  138. 5:02elements of of kind of reduced it to the
  139. 5:04amount that's useful for me and that's
  140. 5:06what I I think
  141. 5:08is going to happen is that people will
  142. 5:10take these things and
  143. 5:12reduce them or or modify them in a way
  144. 5:16that's useful for their process where
  145. 5:19if you just take Kiro or or take spec
  146. 5:21kit, you're effectively
  147. 5:24uh implementing Microsoft's process, not
  148. 5:27Amazon's process, not your process. I I
  149. 5:30think the problem with a bunch of these
  150. 5:32things is kind of the generator wall of
  151. 5:33text that nobody reads and and we know
  152. 5:35that from like last 30 years of work.
  153. 5:41I I still remember working with business
  154. 5:44analysts who would produce like a
  155. 5:45500-page Word document that the
  156. 5:47developer is supposed to read and we're
  157. 5:49getting to the point where
  158. 5:52these tools are becoming those business
  159. 5:54analysts producing 500 pages of text
  160. 5:56that nobody reads and then approves and
  161. 5:58and no wonder the result is kind of not
  162. 6:00up to spec. So, I think I I agree with
  163. 6:02you in a sense where yeah, we can we can
  164. 6:05force through small iterative loops and
  165. 6:07that would be amazing and that is
  166. 6:08actually kind of BDD and and that's
  167. 6:11where kind of all these good ideas
  168. 6:14around clarifying things come in. Um
  169. 6:17I'm concerned though that
  170. 6:19people are going to be overly
  171. 6:22enthusiastic about just
  172. 6:26browsing through walls of text and
  173. 6:28approving them and getting getting
  174. 6:29really surprised on the other end. And
  175. 6:31you know, you used the word compiler.
  176. 6:34I think the danger is where people start
  177. 6:36assuming that agents are compilers and
  178. 6:40that they can actually transform
  179. 6:42a spec into a product in a
  180. 6:45deterministic, reproducible way and and
  181. 6:47that's not what's happening at the
  182. 6:49moment. Maybe it will in the future.
  183. 6:51>> [laughter]
  184. 6:51>> Well, and I think you need to follow the
  185. 6:52money here. I mean,
  186. 6:54when you say, you know, there's there's
  187. 6:55these products coming out, these tools
  188. 6:57coming out, I I get the same the same
  189. 7:00flavor as things like the case tools of
  190. 7:02the '90s or the model-driven
  191. 7:03architecture tools of the 2000s
  192. 7:06where there's a buzz around a thing and
  193. 7:09the the the thing this time is using
  194. 7:11natural language to get a computer to
  195. 7:14write code for another computer.
  196. 7:16And if we anthropomorphize the middle
  197. 7:18computer, we can call it an agent and
  198. 7:20use the words like understanding where
  199. 7:21there is no understanding cuz there's no
  200. 7:23sentience.
  201. 7:24But it's it's exciting to then say,
  202. 7:26"Hey, enterprise senior purchasing
  203. 7:28person, you can buy this tool and this
  204. 7:31tool will be your business analyst."
  205. 7:33Right? Um assuming that the role of a
  206. 7:35business analyst is writing documents
  207. 7:38rather than understanding a problem
  208. 7:39domain.
  209. 7:40Right?
  210. 7:41>> [laughter]
  211. 7:41>> And coming in with a vast amount of
  212. 7:44pre-existing domain knowledge.
  213. 7:46Um in the same way that programming is
  214. 7:48is typing tokens into a computer rather
  215. 7:50than understanding how the stack works
  216. 7:53and mechanical sympathy and any of that,
  217. 7:55you know, good engineering stuff. So, I
  218. 7:57think from the commercial angle, I I I
  219. 7:58understand why these tools are coming
  220. 8:00into existence and
  221. 8:02I predict exactly the same commercial
  222. 8:05arc for them as happened with with the
  223. 8:07case tools, with the MDA tools, with the
  224. 8:09the various other attempts at removing
  225. 8:11humans.
  226. 8:12And and but but the the frustrating I
  227. 8:15>> [clears throat]
  228. 8:15>> you know, you I'm going to keep on
  229. 8:17banging on about this. I'm going to keep
  230. 8:18on I suspect a lot of folks like me are
  231. 8:20going to.
  232. 8:21>> [snorts]
  233. 8:21>> It's a machine, right? It's a very
  234. 8:23clever mimicking machine. Yeah, back to
  235. 8:25Emily Bender's like lovely phrase,
  236. 8:27stochastic parrot.
  237. 8:28It it the the the robots have no
  238. 8:31understanding. The robots have no
  239. 8:33semantic awareness. In particular, the
  240. 8:35robots don't care about your stuff cuz
  241. 8:36they don't care, right?
  242. 8:39So, any attempt at code quality has to
  243. 8:41come from not just defining guardrails
  244. 8:44cuz that's not hard, right? And I
  245. 8:45suspect
  246. 8:47the Venn diagram of lots of different
  247. 8:49people's quality code quality guardrails
  248. 8:51does start to converge on a circle or at
  249. 8:54least a circle with some bumps on it,
  250. 8:55you know?
  251. 8:56Uh I imagine if I were to write down in
  252. 8:58markdown files the things I care about
  253. 9:00and you were So, I don't think that's
  254. 9:02the hard bit. The hard bit is is keeping
  255. 9:06the the GenAI, keeping the agents,
  256. 9:09keeping the bots on the rails with all
  257. 9:11that written. I've been I mean, you
  258. 9:12know, you've been doing this in anger
  259. 9:14for a while. I'm sort of dipping my toe.
  260. 9:19And what I'm finding and it's prob could
  261. 9:21well be user error, could be my lack of
  262. 9:23understanding of how this stuff works.
  263. 9:25I'm giving Claude code in my case very
  264. 9:28clear rules that it stashes away as
  265. 9:31memories and it has global memories and
  266. 9:33it has project memories of specific
  267. 9:35things I wanted to do or not do.
  268. 9:37And then it immediately just carries on
  269. 9:39and does them
  270. 9:40>> [laughter]
  271. 9:41>> about 10 minutes later.
  272. 9:43And I say things like that you So, I'm
  273. 9:46I'm desperately trying not to
  274. 9:48anthropomorphize it. The model I'm using
  275. 9:50is I'm imagining it's a text-based
  276. 9:52adventure game. You know, open box, go
  277. 9:55north, get key, that kind of thing,
  278. 9:57right? Rather than you do this and
  279. 9:59having a chassis interface with it.
  280. 10:01And one of the rules I have is do not
  281. 10:03speak in the first person.
  282. 10:04Right, I don't want the robot having
  283. 10:05[clears throat] a personality.
  284. 10:07But yeah, I I'm I'm clearly failing at
  285. 10:10these guardrails, right? At defining the
  286. 10:12guardrails and and having it stick to
  287. 10:13the guardrails. And when I say, "You're
  288. 10:15not sticking to the guardrails." it
  289. 10:16goes,
  290. 10:17"Catch." Or something equally chirpy.
  291. 10:20Like, I just deleted your stuff.
  292. 10:22>> on that, here's my thought on that and
  293. 10:24I've I've kind of hit the same bump and
  294. 10:26I've actually I think I have a good
  295. 10:27solution for that.
  296. 10:29So, Uh genius.
  297. 10:32Yeah,
  298. 10:32>> [laughter]
  299. 10:32>> so so that
  300. 10:33you know, given that this is kind of
  301. 10:35supposed to be a chat, I'll give you a
  302. 10:36slightly convoluted and a convoluted
  303. 10:38kind of way to get there because I I
  304. 10:40want to give you the thinking model
  305. 10:41behind this.
  306. 10:42>> All right, all right, please say. So, I
  307. 10:43I had a couple of these very very
  308. 10:45domain-specific rules around writing
  309. 10:47JavaScript.
  310. 10:49There's a specific class called workflow
  311. 10:52and you're not supposed to mock uh
  312. 10:53certain elements of the workflow. You're
  313. 10:55supposed to use them directly in tests
  314. 10:56and when you
  315. 10:57>> All right. production. So, this is very
  316. 10:59very project domain-specific. Really
  317. 11:01project domain-specific.
  318. 11:02And I I I I I wrote markdown files and
  319. 11:07markdown files and exception to markdown
  320. 11:08files and got Claude to write its own
  321. 11:11markdown files
  322. 11:12and then occasionally it still made
  323. 11:13mistakes.
  324. 11:15And I was thinking about this like
  325. 11:17I'm using ESLint to lint things,
  326. 11:21but it's linting things that are like
  327. 11:23use tabs, not spaces, lint this, lint
  328. 11:25that. If I had a tool like ESLint that
  329. 11:28could do my domain-specific stuff,
  330. 11:31then I wouldn't have to rely on these
  331. 11:33markdown files. I could even unit test
  332. 11:34that this works well.
  333. 11:36And I I
  334. 11:39was kind of thinking about well, how
  335. 11:40would I do this? And then I I asked
  336. 11:42Claude like
  337. 11:45write a custom ESLint rule
  338. 11:48that detects
  339. 11:50a workflow class being mocked and give
  340. 11:53yourself an error of saying, "Never mock
  341. 11:56this method, use the real method
  342. 11:57instead."
  343. 11:58And then I got it to write a unit test
  344. 12:00for this and I got it to run the unit
  345. 12:02test so I can see that ESLint is with a
  346. 12:04positive and negative doing these things
  347. 12:05correctly.
  348. 12:07And from then on, I have a fully
  349. 12:09deterministic, properly automated check
  350. 12:12for my domain rules.
  351. 12:14And
  352. 12:15once the first one worked, I really kind
  353. 12:17of that started going off the rails
  354. 12:18because now I have hundreds of
  355. 12:20domain-specific rules for very very
  356. 12:23particular things that are particular to
  357. 12:25my project. I have custom HTML linting
  358. 12:28tools. I have custom CSS linting rules.
  359. 12:30I have all these things.
  360. 12:31>> Okay, okay, okay, okay,
  361. 12:33you're giving away far too much here.
  362. 12:34What you have is a software quality
  363. 12:38product, commercial software quality
  364. 12:40quality product for JavaScript that
  365. 12:42you're going to now start selling into
  366. 12:44the enterprise. What I have here What I
  367. 12:45have here is What I have here is I think
  368. 12:48this thing where if you look at the, you
  369. 12:50know, Simon Wardley's how how things
  370. 12:53transform from like a totally bespoke
  371. 12:55thing to a
  372. 12:57commoditized product, some things that
  373. 12:59kept
  374. 13:00bumping up and you identify the rules.
  375. 13:02Once you identify the rules, you kind of
  376. 13:04transform them into a hard not
  377. 13:07hard-coded, but into a coded
  378. 13:08deterministic check that's specific to
  379. 13:10your project. And really, if I was if I
  380. 13:13had that superpower 10 years ago, I
  381. 13:15would have been doing it for all my
  382. 13:16projects, but
  383. 13:18there was never enough time to like
  384. 13:20write custom linting rules. You you
  385. 13:24communicating to developers, "You
  386. 13:25shouldn't do this, you shouldn't do
  387. 13:26this, you shouldn't do this, you
  388. 13:27shouldn't do this." Or you kept it in,
  389. 13:29you know, some kind of classic knowledge
  390. 13:31in in There was never explicit. And I
  391. 13:33think
  392. 13:34one of the things I'm I'm kind of
  393. 13:35thinking about now is like I had a
  394. 13:38conversation with with with
  395. 13:40a friend last week and the metaphor we
  396. 13:43came up with is imagine you had to
  397. 13:45onboard a new developer to your team
  398. 13:46every hour because that's what's
  399. 13:48happening when you're launching an
  400. 13:49agent.
  401. 13:51What would you have to do? Well, all the
  402. 13:52rules like they shouldn't be in Word
  403. 13:54documents. You know, people should get
  404. 13:56feedback from the system in a good way.
  405. 13:58If they do something, the bumpers should
  406. 14:01be in the system automated. So, if
  407. 14:02you're coding it the wrong way, Yeah.
  408. 14:05the system should kind of fix you. And
  409. 14:07And the other piece of the puzzle came
  410. 14:08from this conference talk I I saw by
  411. 14:12somebody from Google doing the MCP for
  412. 14:15for Chrome
  413. 14:16where they realized that the error
  414. 14:18messages for humans
  415. 14:20were
  416. 14:22not as good as like the error messages
  417. 14:24needed for agents because the agents
  418. 14:26were getting stuck in a loop. They said,
  419. 14:28"Oh, you know, access denied." And they
  420. 14:29would just try 10 times instead of a
  421. 14:32human basically saying, "Access denied,
  422. 14:33let me check what's wrong with the
  423. 14:34access keys." Mhm. And they said what
  424. 14:37the what what one of the key lessons was
  425. 14:39that error messages have to instruct
  426. 14:42how to fix the problem. So, "Access
  427. 14:44denied." is not good enough. "Access
  428. 14:46denied, check your access keys." or
  429. 14:48"Access denied,
  430. 14:50um check your configuration." or
  431. 14:51something like that. So, all of these
  432. 14:53custom linting errors have proper here's
  433. 14:56how to fix me.
  434. 14:58And I think that that itself is almost
  435. 15:00at that. You you want some meta rules.
  436. 15:02You want rules for your rules, right?
  437. 15:04>> Yeah, yeah, yeah. And And And then And
  438. 15:06then kind of what's really wonderful is
  439. 15:08like this is wonderfully useful for for
  440. 15:10humans as well. It's just good. Yeah,
  441. 15:12yeah. It's It's And And I can switch
  442. 15:15from Claude to some other system
  443. 15:17tomorrow.
  444. 15:19I don't have to worry about whether they
  445. 15:20read markdown the same way. I have this
  446. 15:22in ESLint. It can't be ignored because
  447. 15:24the CI system runs linting rules
  448. 15:26separately from Claude and and Claude,
  449. 15:29you know, Claude will need to take
  450. 15:30feedback from the CI system. It can't
  451. 15:32push things out that don't pass CI. You
  452. 15:35can do pre-commit hooks. You can do all
  453. 15:36sorts of things. So, I think the
  454. 15:38guardrails
  455. 15:40as they stabilize should be pushed to
  456. 15:42existing tools, not not to And And this
  457. 15:44saves tokens so you're not wasting time
  458. 15:47on this kind of meta textual analysis.
  459. 15:49It makes it more kind of project-based.
  460. 15:52It makes it oriented towards humans as
  461. 15:54well. And I I think that's kind of where
  462. 15:56these things need to go. And And I think
  463. 15:58it's quite empowering to be able to
  464. 16:00build up these bumpers on the road. I I
  465. 16:02I like this kind of metaphor from
  466. 16:05product-led growth where they say you
  467. 16:06have kind of this lane where you need
  468. 16:07to, but you put bumpers so that users
  469. 16:10can stay in the lane.
  470. 16:12And these things are bumpers, really. I
  471. 16:13mean, if Claude goes there, you just
  472. 16:15bump it a bit back and you tell it where
  473. 16:16to go. And instead of keeping it in
  474. 16:19these markdown files, I think as soon as
  475. 16:21you figure out what the rule is,
  476. 16:24Yeah. you get Claude to automate it in a
  477. 16:26different way. And I got it to write
  478. 16:28custom CLI tools.
  479. 16:30I got it to use existing kind of tools.
  480. 16:33I got it to do grep with with like
  481. 16:35bizarre grep rules to check for CSS
  482. 16:39violations and a bunch of other things,
  483. 16:42but I think that's that's the way
  484. 16:43really. As soon as you figure out these
  485. 16:45things, push them into get Claude to
  486. 16:48push it or write write deterministic
  487. 16:50rules for itself using something else. I
  488. 16:53like that. So, for me, Getting Claude to
  489. 16:55do this for you right now, that's that's
  490. 16:57cheating.
  491. 16:58So, [snorts]
  492. 16:59So, So, I I there's two things I want to
  493. 17:01tease out there that I found really
  494. 17:02really I I'm going to take away at
  495. 17:04least. I found really useful.
  496. 17:06So, there there there's a class of rule,
  497. 17:08if you like, there's a class of
  498. 17:09heuristic that is about your code.
  499. 17:12And there is something that you could it
  500. 17:15if there were if there were a linter for
  501. 17:17it, you could write a linting rule.
  502. 17:19And if there isn't, you could probably
  503. 17:20write a linter for it and then write
  504. 17:22rules for the linter, you know? Yeah,
  505. 17:24exactly. Can Can you push that kind of
  506. 17:26linting into that domain? Something that
  507. 17:27I'm realizing, and again, this might be
  508. 17:30a learning thing for me or it might be
  509. 17:31just where the tools are going.
  510. 17:33I found
  511. 17:35rather than using Claude to write core
  512. 17:38stuff,
  513. 17:39you know, I tend to still write core
  514. 17:41stuff. Maybe I'm not good enough with
  515. 17:43Claude yet or whatever on or the
  516. 17:44tooling. I know we're both talking about
  517. 17:46Claude cuz we're both using it, but um
  518. 17:47other other LLMs are available. Other
  519. 17:49frontier models are available.
  520. 17:51But I find what what I found is rather
  521. 17:54than saying, "I'm going to use Claude
  522. 17:55for this."
  523. 17:56it's more I'm using it for lots and lots
  524. 17:59of little itch-scratching things that I
  525. 18:02would never have got around to
  526. 18:03otherwise. So, it's like I'm not
  527. 18:06designing I'm not using it to build a
  528. 18:08car, but I'm using it to make the
  529. 18:10headrest a bit more comfortable or to
  530. 18:13give me a little button on the side that
  531. 18:14automatically moves things backwards or
  532. 18:17to have memorized seating position for
  533. 18:20different drivers or just stuff that I
  534. 18:22could probably get around to, but I
  535. 18:24haven't got time for, Yeah. Yeah. It
  536. 18:26seems to really fit neatly into that
  537. 18:29niche of if you're going to look at the
  538. 18:31Neil Nicholson the purpose alignment
  539. 18:33thing, things that are non-critical,
  540. 18:37right? They're non-differentiating, but
  541. 18:39they're quality of life things. And I I
  542. 18:41I feel like that's a really nice right
  543. 18:43now at their level of maturity, a really
  544. 18:45nice kind of niche for them. Absolutely.
  545. 18:48And I think you know, when when you when
  546. 18:49you look at something like this, like I
  547. 18:50always remember in in discussions like
  548. 18:52this, there was
  549. 18:54You probably worked on billing systems
  550. 18:55that reconcile banking information. I
  551. 18:58don't know
  552. 18:59>> [laughter]
  553. 19:00>> What gives you that idea?
  554. 19:02Realistically, realistically, you know,
  555. 19:04like money shouldn't be lost between
  556. 19:06here and here. Right. I But But somehow,
  557. 19:11you know, we need to build
  558. 19:12reconciliation systems to to make sure
  559. 19:14that the money is not lost or or where
  560. 19:16it's lost, to to find how much is lost.
  561. 19:18No, there's an entire You need to
  562. 19:20understand there's an entire domain
  563. 19:22language around this.
  564. 19:24So, So, in in banking in in settle So,
  565. 19:26settlements in banking for those who
  566. 19:28don't know, basically lots and lots and
  567. 19:30lots of counterparties all trade with
  568. 19:32each other and there might be millions
  569. 19:34of trades in a day worth trillions of
  570. 19:36dollars and at the end of the day we've
  571. 19:37got to figure out who owes who what,
  572. 19:39right? And we could just make everyone
  573. 19:41make all those payments and that would
  574. 19:42just take forever. Or we add up all the
  575. 19:44money Goiko spent, all the money Daniel
  576. 19:46spent and we figure out that actually
  577. 19:48Goiko just owes Daniel a few million
  578. 19:49euros or whatever. And that's called
  579. 19:51netting. So, settlements and netting.
  580. 19:52And as you say, this is generally across
  581. 19:54lots of independent stovepipe systems
  582. 19:56that all have slightly different
  583. 19:57rounding rules or currency rules or
  584. 19:59storage rules or
  585. 20:00>> A leaky leaky pipe with the water
  586. 20:01leaking.
  587. 20:02>> pipe. And and the the
  588. 20:04>> [laughter]
  589. 20:04>> and the the language the domain terms
  590. 20:06for this is breaks and fails.
  591. 20:09And breaks and fails are your two types
  592. 20:11of things going wrong. One is where the
  593. 20:14trade didn't happen at one end or the
  594. 20:16other, but the other counterparty thinks
  595. 20:18it did. And the other is where is the
  596. 20:21leaky pipe. Is logically it's all
  597. 20:23happened. Semantically it's all
  598. 20:25happened, but somewhere we're missing 84
  599. 20:28euro cents, right? And we don't know
  600. 20:30where they've gone.
  601. 20:32>> [laughter]
  602. 20:33>> Or you know, 84 million euros. Or 84
  603. 20:36million euros, you know, I mean, yeah,
  604. 20:38between friends, right?
  605. 20:39>> Yeah, let me say 84 million, so
  606. 20:42So so so you know, I I remember us
  607. 20:44working with this client where the
  608. 20:46business users were insisting that they
  609. 20:49can't do any automated testing
  610. 20:52for reasons and and needed to do like
  611. 20:54human review and things like that. And
  612. 20:56actually, I mean,
  613. 20:58some of it made sense because some of it
  614. 21:00needs like human human you know, like
  615. 21:04domain knowledge reasoning, whatever.
  616. 21:06But 99% of a test
  617. 21:10had nothing to do with that evaluation
  618. 21:12moment.
  619. 21:1399% of the time spent in a test was
  620. 21:16loading the data, cleaning up the data,
  621. 21:19unloading the data, re-restarting the
  622. 21:21the thing, restarting the Those were all
  623. 21:23kind of it's not quality of life, but
  624. 21:26small chunks, small buttons that that
  625. 21:28actually got the thing moving. And these
  626. 21:31were all deterministic parts. I remember
  627. 21:32kind of when we built a data loader from
  628. 21:34Excel
  629. 21:36that allowed them to prepare a test case
  630. 21:38without opening five different
  631. 21:40applications and kind of registering
  632. 21:43different things and approving and and
  633. 21:45pushing them through the pipeline, just
  634. 21:46you know, get everything through. They
  635. 21:48were amazed. And and I think that's
  636. 21:50where again, there's a lot of benefit
  637. 21:52for this even if you don't want to get
  638. 21:54it to do the the like the core core bit.
  639. 21:56There's so much stuff around it
  640. 21:59that
  641. 22:00needs to work,
  642. 22:02but is not
  643. 22:03the differentiating factor. It's not
  644. 22:06the the kind of human making this
  645. 22:08evaluation. It's not your key domain
  646. 22:11knowledge. It's just like loading Excel
  647. 22:13into five databases.
  648. 22:15Well, I mean, I can give you an example
  649. 22:17of where I I was clawed one time. But
  650. 22:20actually, before I do that, I just want
  651. 22:21to pick out again something that you
  652. 22:22mentioned. I think it's I really want to
  653. 22:23kind of pull it out and give it a name.
  654. 22:25I feel like you're talking about the
  655. 22:26difference between semantic validation
  656. 22:28versus like syntactic or structural
  657. 22:30validation. I mean, you say it's just
  658. 22:32validation. I'm talking about how you
  659. 22:33have you have kind of you know, stuff
  660. 22:36that
  661. 22:38uh is is deterministic and and and is a
  662. 22:40side quest or a you know, a supporting
  663. 22:43task that
  664. 22:45basically just can't be done in in a
  665. 22:47reasonably good way and we can farm it
  666. 22:49out to machines. Yeah. Yeah.
  667. 22:53And and well, I I as opposed to stuff
  668. 22:55that needs a human in terms of domain
  669. 22:57knowledge or experience or context or
  670. 22:58whatever. So, so quick sidebar, I was at
  671. 23:01a large American bank many years ago
  672. 23:04and they had a one of their core again,
  673. 23:06but perhaps attached to the settlements
  674. 23:07process was a system that would
  675. 23:10it it used to take I don't know,
  676. 23:11millions and millions of trades and put
  677. 23:12them into lots of buckets, couple
  678. 23:15hundred buckets. It's all it's one of
  679. 23:16the banks in America, is it?
  680. 23:18It could well be one of the largest
  681. 23:20banks in America, yes.
  682. 23:21>> [laughter]
  683. 23:23>> And and they had a large complicated I
  684. 23:26think it was Oracle PL/SQL thing
  685. 23:29that would go through, you know,
  686. 23:30bajillions of rows. Okay.
  687. 23:33That's
  688. 23:34>> [clears throat]
  689. 23:34>> And and and for each row each record it
  690. 23:37would put it into one of these buckets.
  691. 23:39And this process had gradually over time
  692. 23:41had created more and more rules. And the
  693. 23:43rules were literally if, you know, this
  694. 23:45this field has this value in it and this
  695. 23:47field matches this and da da da da da da
  696. 23:48da da da da da dozen of these things.
  697. 23:50And so many many hundreds of checks.
  698. 23:53And if it also failed, suddenly it was
  699. 23:55like a catch-all bucket at the bottom.
  700. 23:56And it would do this big if else if else
  701. 23:58if else for each of several bajillion
  702. 24:00records.
  703. 24:01>> easily hide like if name equals Goiko,
  704. 24:03then you know,
  705. 24:04>> Easily. Absolutely. You know, let give
  706. 24:06me the rounding error into my offshore
  707. 24:07account. And this thing, you know, had
  708. 24:10gradually crept up, you know, from 20
  709. 24:12minutes to an hour to two hours to and
  710. 24:14it was now it had gone from nine hours
  711. 24:16to And the problem is going from nine
  712. 24:18hours to 10 hours is a lot more serious
  713. 24:19than going from seven hours to eight
  714. 24:21hours because going from nine hours to
  715. 24:2210 hours means that if I start at the
  716. 24:25close today, it won't be finished by the
  717. 24:28open tomorrow. And suddenly it was this
  718. 24:30big deal.
  719. 24:31And it was a Friday afternoon and we'd
  720. 24:33basically finished what we needed to do.
  721. 24:35And I said to a couple of the folks, I
  722. 24:36said, "I don't understand this domain
  723. 24:38model at all. My my PL/SQL is pretty
  724. 24:40good, right?
  725. 24:42Uh I'm going to try Well, I looked at
  726. 24:43your stored proc and it's basically the
  727. 24:45same thing over and over and over again.
  728. 24:47Guess what, right? Copy paste stuff.
  729. 24:49And I feel like that is not what stored
  730. 24:52procs do. Stored procs do set-based
  731. 24:55operations, right? Relational databases.
  732. 24:57Whereas a language like Python or Java
  733. 25:00or whatever is really really good at
  734. 25:02sequences of things.
  735. 25:03So, I'm going to I'm going to just as a
  736. 25:05as a Friday afternoon thing, we'll
  737. 25:07timebox it to two hours.
  738. 25:09We will pull out all of the records,
  739. 25:12apply the same logic, again, guess what,
  740. 25:14using graph and set and or can whatever
  741. 25:16to pull out the logic bits and turn it
  742. 25:18into some Python code.
  743. 25:20Turn it into the equivalent Python code
  744. 25:22and run it.
  745. 25:23And it turned out that the the Python
  746. 25:26code you know, we tested it against the
  747. 25:28last several days worth of data and the
  748. 25:30buckets that it all ended up in. So, it
  749. 25:32wasn't test-driven or anything. It
  750. 25:33literally it was just a spike. And this
  751. 25:35spike got the right records in the right
  752. 25:38buckets for all of the data
  753. 25:40except that it was now taking something
  754. 25:43like 11 seconds
  755. 25:45instead of nine hours.
  756. 25:47>> [laughter]
  757. 25:48>> Because it was the right tool. And
  758. 25:50again, it was it turns out it was a
  759. 25:51two-hour fix, right? With without any
  760. 25:52robots. No one in that team had enough
  761. 25:56breadth across more than one technology
  762. 25:58and no one outside of that team cared
  763. 26:00enough about going in and helping them
  764. 26:02to do this.
  765. 26:04Um I then went away. Someone whose
  766. 26:06Python was much better than mine made it
  767. 26:07like eight seconds.
  768. 26:09And then someone else migrated that to
  769. 26:12Java and then that ran in like three
  770. 26:14seconds.
  771. 26:15And the brilliant thing with a
  772. 26:17three-second job as opposed to a
  773. 26:18seven-hour job is that you can then put
  774. 26:20a web app in front of it cuz it's only
  775. 26:22reading. It's only a read lock.
  776. 26:24And you can put a web app in front of it
  777. 26:26and now hand it to the audit teams
  778. 26:29because it was an audit job and they
  779. 26:31could now run this thing real time
  780. 26:34intraday
  781. 26:35whenever they liked. It was no longer
  782. 26:37part of the nightly run book. So, I
  783. 26:39accidentally [laughter]
  784. 26:41took this job out of the run book and
  785. 26:42turned it into an app. I mean,
  786. 26:43ironically you know, you can run Java
  787. 26:46Java stored procs in Oracle. Like you I
  788. 26:48think that that was that was impossible
  789. 26:51for a long time. So, I don't know when
  790. 26:52you did that, but
  791. 26:54I mean, this is still not where I would
  792. 26:56want to have held my I'd love to know
  793. 26:58about the version control or source
  794. 27:00control of Java code embedded in Oracle.
  795. 27:03It's where you know, we we we did we did
  796. 27:05like something
  797. 27:07something where the code was in in
  798. 27:09version control, but there was a
  799. 27:10publishing process that was updating the
  800. 27:12database. So, it's like it's a
  801. 27:14deployment thing. It's uh but Yeah, but
  802. 27:16you know, I mean, the the yeah, but the
  803. 27:18the the the point really of all that is
  804. 27:20A, you don't need robots to do this. But
  805. 27:23you know, I I I again, I'm looking at
  806. 27:25LLM as you know, it's a tool, right?
  807. 27:27It's neither necessary nor sufficient.
  808. 27:29It can be useful in the right context.
  809. 27:31And if you put it in the right context
  810. 27:32and you use it well, it can be a massive
  811. 27:34multiplier. Most cases I'm seeing most
  812. 27:37content most environments I'm seeing,
  813. 27:39they're not using it well. They're using
  814. 27:40it as a blanket edict. Yeah, you have to
  815. 27:42rub AI into this otherwise you don't get
  816. 27:44your bonus.
  817. 27:45And they're not being given the support.
  818. 27:46They're not being given the learning
  819. 27:47tools. And they're not being given that
  820. 27:49tinker time. I mean, the thing about
  821. 27:50being independent, I'm both independent,
  822. 27:53is you can decide Goiko as Goiko's boss
  823. 27:56can decide to give Goiko a couple of
  824. 27:59days just to muck around with this and
  825. 28:01see what happens.
  826. 28:02Right? And I would argue that everyone's
  827. 28:05boss should be giving them a couple of
  828. 28:06days to muck around with this and see
  829. 28:07what happens cuz that's how learning
  830. 28:08works,
  831. 28:10And they're not. They're being told,
  832. 28:11"Whatever you're delivering right now,
  833. 28:13carry on delivering that and rub some
  834. 28:15co-pilot into it or whatever.
  835. 28:17Um other you know, otherwise otherwise
  836. 28:19there's going to be trouble. And also
  837. 28:21double your throughput."
  838. 28:23And
  839. 28:24>> [laughter]
  840. 28:24>> And none of this makes sense.
  841. 28:27Mhm.
  842. 28:28So, I I I kind of you know, there's
  843. 28:30there's a couple of things there. I
  844. 28:31think people generally don't
  845. 28:35accept [clears throat]
  846. 28:36like how do you put this?
  847. 28:38I think
  848. 28:39our industry is kind of obsessed with
  849. 28:41automation. I mean, by by by by the
  850. 28:43definition, we're obsessed with
  851. 28:45automation. And I think people think
  852. 28:47that automation makes things better, but
  853. 28:48it doesn't. Automation makes things
  854. 28:50faster.
  855. 28:52Well, I see Does it make it better or
  856. 28:54worse? It just makes it faster. I want
  857. 28:55to unpack this this this obsession
  858. 28:57thing. I There's a There's a certain
  859. 29:00level of executive certain level in
  860. 29:01organization that's obsessed with
  861. 29:03cheaper. Yeah. And the association is
  862. 29:05that automation means cheaper
  863. 29:08>> [clears throat]
  864. 29:09>> and we can get rid of a bunch of
  865. 29:10headcount.
  866. 29:11I think the
  867. 29:12There has I think we we we we like we
  868. 29:14like automation, but it's you're
  869. 29:16absolutely right. It
  870. 29:18It doesn't just make things faster. And
  871. 29:20this is the really important thing with
  872. 29:21automation. Automation is a trade-off.
  873. 29:24It makes [clears throat] things faster
  874. 29:26and it makes them the same.
  875. 29:29And when I say the same, that means if
  876. 29:32you got the description or the
  877. 29:33definition of the thing wrong,
  878. 29:35it will continue to be wrong every time.
  879. 29:38If you got it absolutely right and the
  880. 29:40world moves on and it becomes wrong, it
  881. 29:43will continue to remain wrong every
  882. 29:45time. So, as soon as you automate
  883. 29:47something, you lock it in, right? You
  884. 29:49lock it into whatever. If the thing
  885. 29:51you're locking it into is stable, is
  886. 29:54stable across time, is stable across the
  887. 29:56portfolio, whatever, brilliant. So, I
  888. 29:58build automation, path to live
  889. 30:00automation is a fantastic idea once your
  890. 30:03product is reasonably stable.
  891. 30:05You know, if the tech if the tech stack
  892. 30:06in your product is is volatile, is
  893. 30:08changing all the time,
  894. 30:10any effort you spend automating, you're
  895. 30:12going to throw away tomorrow to automate
  896. 30:14something else.
  897. 30:16So, that ties back really nice with with
  898. 30:17the kind of, you know, tooling thing we
  899. 30:18were talking about. You know, you start
  900. 30:20with your rules, you kind of clarify
  901. 30:22them in markdown. Once they become
  902. 30:24stable enough,
  903. 30:26you automate them using a linter, or you
  904. 30:28automate them and and you were talking
  905. 30:29about this kind of semantic and and
  906. 30:31syntactic and things like that. And I
  907. 30:32think, yeah, that was for syntactic
  908. 30:34stuff, this is kind of trivially easy.
  909. 30:36For semantic stuff, I I I think we still
  910. 30:39have a way to go to to, you know, have
  911. 30:41tools that semantically validate things.
  912. 30:43But, I think it's not it's not beyond
  913. 30:46implementing something that checks like
  914. 30:48semantically this needs to be in this
  915. 30:50way. We just need to kind of figure out
  916. 30:52what the rules are. And
  917. 30:54I I I think
  918. 30:55quite often on a semantic level,
  919. 30:58people don't have stable rules. These
  920. 31:00things evolve. They're kind of broad
  921. 31:01guidelines uh that are in people's heads
  922. 31:04that evolve. And And that's the
  923. 31:05interesting part, like how would you
  924. 31:07express that in a meaningful way?
  925. 31:10Yeah, I think And something else I I'd
  926. 31:12actually wanted to ask your advice on
  927. 31:14really, ask your Again, you've been
  928. 31:15around this You've been sort of
  929. 31:17tinkering with this more than I have.
  930. 31:19So, we've been talking about the rules,
  931. 31:21the the heuristics, the the guardrails
  932. 31:24for the product, right? Whether that be
  933. 31:26the code base, the whatever it is.
  934. 31:29I'm the the the thing I keep on tripping
  935. 31:31over at the moment is the rules, the
  936. 31:34heuristics for the
  937. 31:36bot itself.
  938. 31:38So, I'm saying to Claude, this is how I
  939. 31:40want you to operate.
  940. 31:43This is how I want you to do things.
  941. 31:45Phrases that don't don't refer to
  942. 31:47yourself in the in the first person.
  943. 31:49Don't you know, don't come back with
  944. 31:50chirpy, you know, whatever. Act like a
  945. 31:53computer cuz you're a computer, sort of
  946. 31:55thing. And it says, "Okay." And then it
  947. 31:58does start acting like it for about 5
  948. 31:59minutes. Then it says,
  949. 32:00"I think that's a great idea." And I'm
  950. 32:02like,
  951. 32:03you have a memory to not use the first
  952. 32:05person. "Oh, good catch."
  953. 32:09>> [laughter]
  954. 32:09>> Uh
  955. 32:10and so, I like I I'd love to figure out
  956. 32:13a way to
  957. 32:14to keep that stuff honest cuz it's it's
  958. 32:18clearly not. So, I I I do some of this
  959. 32:21through a pre-command and post-command
  960. 32:24tools. So, for example, I I wanted to
  961. 32:28never use a directory change in a
  962. 32:31command in the same kind of CD something
  963. 32:34and then something else because then it
  964. 32:36can't check what's been pre-approved in
  965. 32:38the other command and it keeps asking me
  966. 32:40for stupid stuff to approve that I've
  967. 32:42already approved. So, I've I've got it
  968. 32:44to build a pre-tool use hook that
  969. 32:47detects and and
  970. 32:49and detects if CD is at the start and
  971. 32:51and basically gives it a
  972. 32:53message saying don't combine CD and this
  973. 32:55thing, do something else. So, it would
  974. 32:57be reasonably simple to get it to write
  975. 33:00a command that says, you know, if you
  976. 33:02catch any of these words like great or I
  977. 33:05or whatever,
  978. 33:06just, you know, don't don't reply
  979. 33:10in like
  980. 33:11anthropomorphized
  981. 33:13>> Yeah. Yeah. And and yeah, it it's it's
  982. 33:15kind of So, I think anything anything
  983. 33:18that you can define in a reasonably good
  984. 33:20way, I think you can get it to write a
  985. 33:22tool for itself to to kind of
  986. 33:23self-correct. And and I would punish it
  987. 33:27by by doing this. You know, waste more
  988. 33:30tokens, but tokens are not the problem,
  989. 33:32your time is. And and
  990. 33:34the more it can review itself, the less
  991. 33:36you have to review it. And I think
  992. 33:38again, that, you know,
  993. 33:40all these tools now support hooks.
  994. 33:42Claude supports hooks for lots and lots
  995. 33:43of different things. Get it to kind of
  996. 33:47respect its hook get it to respect its
  997. 33:49its commands its instructions by hooks.
  998. 33:52But then again, they're bytecode in
  999. 33:54Claude, so it's not beyond them to kind
  1000. 33:56of bytecode something that stops
  1001. 33:58respecting hooks, but
  1002. 34:00we'll see.
  1003. 34:02Fantastic. So, okay, so we we started we
  1004. 34:04started on on spec driven. We we
  1005. 34:07discovered a bifurcation there. We're
  1006. 34:09like spec driven meaning one shot versus
  1007. 34:11spec driven meaning iterative.
  1008. 34:13Then we got on through heuristics into
  1009. 34:15rules into linting
  1010. 34:18checks, which that's I I I really like
  1011. 34:21that. That's that's my takeaway. That's
  1012. 34:22my back pocket takeaway.
  1013. 34:24And then we were thinking, okay, what
  1014. 34:25would the lint
  1015. 34:27uh analog be for a bunch of other use
  1016. 34:29cases,
  1017. 34:31up to and including pre and post hooks
  1018. 34:34for for Claude itself.
  1019. 34:36Uh um the idea that that
  1020. 34:38perhaps right now with the level of
  1021. 34:40maturity we've got, we should be using
  1022. 34:42it much more for the the quality of life
  1023. 34:44things than the
  1024. 34:46than the core domain itself, but who
  1025. 34:48knows? I think it changed it enough to
  1026. 34:50to do like core domain the way I want to
  1027. 34:51do it, but it took a few months to get
  1028. 34:53it to do that. Yeah.
  1029. 34:55>> So,
  1030. 34:56um and and you know, the nice thing
  1031. 34:57about it being a robot is that once you
  1032. 34:59do it for one project, you just kind of
  1033. 35:02scale it to other projects as well. And
  1034. 35:04that's what makes it really powerful
  1035. 35:05because I have I'm I'm currently working
  1036. 35:07on two products, and I'm kind of
  1037. 35:09effectively because it evolved on one
  1038. 35:11product, I was able to just apply it on
  1039. 35:13the other product without
  1040. 35:14having to show it. But, I I do think it
  1041. 35:17does take
  1042. 35:18it does take quite a quite an investment
  1043. 35:20in time to to train it to work properly.
  1044. 35:22And okay, so so you said we're wrapping
  1045. 35:24up. Where where would I look for that?
  1046. 35:26So, I'm I'm potentially I'm advising
  1047. 35:29some folks on on exactly this journey.
  1048. 35:31You know, some higher-up has said adopt
  1049. 35:33blah.
  1050. 35:34And rather saying, you know,
  1051. 35:36push back or adopt it blindly, how do we
  1052. 35:38do this in a sensible way that's going
  1053. 35:40to be sustainable, realistic, work for
  1054. 35:42us?
  1055. 35:43What would a good place cuz there's so
  1056. 35:45much noise out there. There's so little
  1057. 35:47signal.
  1058. 35:48>> is publishing their own frameworks. I
  1059. 35:49think Yeah. I I I really think about
  1060. 35:51them as sourdough starters. So, any of
  1061. 35:54them is going to be equally bad for for
  1062. 35:56what you need to do.
  1063. 35:58But,
  1064. 35:58>> [laughter]
  1065. 35:58>> I I if you take something that works for
  1066. 36:00somebody else and quickly iterate on on
  1067. 36:03removing the parts that don't work for
  1068. 36:04you,
  1069. 36:05and and and noticing really really
  1070. 36:07noticing where
  1071. 36:12you're hitting your head or where the
  1072. 36:15machine is constantly making the same
  1073. 36:16mistakes, and then you're quickly
  1074. 36:18evolving rules around that for your your
  1075. 36:20stuff. I I think that's the way to go.
  1076. 36:22And And from that perspective, it really
  1077. 36:24doesn't matter if you adopt like one of
  1078. 36:27these B mod or or or was it Spark or any
  1079. 36:31of these other kind of published
  1080. 36:32frameworks, or just like start yourself
  1081. 36:35with automating bits and pieces of your
  1082. 36:37process. I think that's also a good
  1083. 36:38thing where
  1084. 36:40spotting parts in your process where
  1085. 36:42you're wasting time.
  1086. 36:44Yeah.
  1087. 36:45And automating parts of that. So, at the
  1088. 36:47moment, I'm And I'm not saying copy
  1089. 36:49this, I just want to kind of give you an
  1090. 36:50example of what I have is I have a
  1091. 36:54command that helps me write like a
  1092. 36:57commander's intent template and reminds
  1093. 37:00me to do goals, anti-goals, constraints,
  1094. 37:03and things like that. Just because it
  1095. 37:05can do some code analysis and and and
  1096. 37:07figure out similar things in the past.
  1097. 37:08Anti-goals are probably going to be the
  1098. 37:10same for kind of a bunch of things we
  1099. 37:11do.
  1100. 37:12Then I have a command that does
  1101. 37:15from that impact analysis on an idea
  1102. 37:18that goes through the code base and
  1103. 37:19figures out all the places that need to
  1104. 37:21be changed without changing them and and
  1105. 37:24figuring out what what we're missing in
  1106. 37:26terms of functionality, demo pages, UI
  1107. 37:29design, APIs, and and just documenting
  1108. 37:32these things. Then I have another
  1109. 37:33command that from that like creates an
  1110. 37:37iterative implementation plan where a
  1111. 37:40user can actually see observe results at
  1112. 37:43every every step and do change no more
  1113. 37:46than three files at every step. So, I
  1114. 37:48can review it quickly through Git diff.
  1115. 37:50And then I I basically just let it run.
  1116. 37:53So, I think this whole kind of a set
  1117. 37:54that the mental model for this is the
  1118. 37:56RPI loop like research, plan, and and
  1119. 37:58invest implement, but people do it in in
  1120. 38:01different ways. Some people like seeing
  1121. 38:02pseudo code. Some people like seeing
  1122. 38:05Like, for example, with this product I'm
  1123. 38:07working on now, I get it to do static
  1124. 38:10HTML pages that I can review.
  1125. 38:12Like key moments
  1126. 38:14of the application, how the application
  1127. 38:16changes, and then I can play on the
  1128. 38:17static pages. Once that's
  1129. 38:19to my satisfaction, I just let it
  1130. 38:21implement.
  1131. 38:23Um so, diff- different products,
  1132. 38:24different things will need different
  1133. 38:26approaches, but I think kind of figuring
  1134. 38:28out what your process is and kind of
  1135. 38:29codifying it is really important. And
  1136. 38:32then starting with any of these kind of
  1137. 38:34frameworks
  1138. 38:36is is perfectly fine as long as you
  1139. 38:38approach it as as like we are very
  1140. 38:40quickly going to kind of modify it to
  1141. 38:42our stuff.
  1142. 38:43That sounds like some
  1143. 38:45solid gold advice to leave our listeners
  1144. 38:47with.

About this transcript

This page contains the full transcript of Spec-Driven Dev Is Back. But Not How You Think • Daniel Terhorst-North & Gojko Adzic • GOTO 2026 by GOTO Conferences, generated from the public captions YouTube serves with the video. The transcript has 7,254 words across 1,144 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.

What you can do with it

Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.

Free YouTube transcript tool

YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.