YouTube2Text

Simon Martinelli - Lessons from Spec-driven Development - AI Native DevCon June 2026 — Transcript

by AI Native Dev · 5,113 words · 829 segments · language en · Watch on YouTube

Full transcript

  1. 0:00Okay, we are going to go ahead and get
  2. 0:02started. Thank you guys for coming.
  3. 0:04Again, another time slot with a bit of
  4. 0:07competition, but you guys are the smart
  5. 0:09ones, I can see. Um this is Simon
  6. 0:12Martinelli, who needs no introduction if
  7. 0:16you've been involved in the Java
  8. 0:17community. Um he is a legend there, and
  9. 0:21he's going to be talking about some
  10. 0:22lessons learned from spec-driven
  11. 0:25development. Let's give Simon a hand.
  12. 0:30>> [applause]
  13. 0:33>> Hey, welcome everybody. Uh let me start
  14. 0:36by telling you a story.
  15. 0:38So, I'm in a sports club. I'm from
  16. 0:40Switzerland, and I live in a very small
  17. 0:42town, and we do sports events. So, we
  18. 0:45are mainly doing track and field, and we
  19. 0:48have competitions for kids already for
  20. 0:5045 years.
  21. 0:52And um since 1997, I'm doing software
  22. 0:55for them, because I realized that uh
  23. 0:58doing competition and doing competition
  24. 1:01ranking list and stuff like that uh
  25. 1:03needs a lot of people back in the days,
  26. 1:04like we have were 12 to 15 people, and
  27. 1:07now it's just me using software doing
  28. 1:09that for them.
  29. 1:11But, that's not the only thing that we
  30. 1:12do. We also have different events, and
  31. 1:15we always need volunteers.
  32. 1:18And it was in summer 2024 when we had a
  33. 1:21public holiday in Switzerland, someone
  34. 1:23of the club came to me and said, "Hey
  35. 1:25Simon, we have an issue. We have a
  36. 1:27volunteer management system, but that's
  37. 1:29outdated and doesn't work anymore. So,
  38. 1:31you're a software engineer, and I heard
  39. 1:33about this AI stuff. You can certainly
  40. 1:35do that better. Let's go."
  41. 1:37And I said, "Okay, why not?" And then I
  42. 1:39started to use WinSurf. That was around
  43. 1:42uh fall 2024, and that was relatively
  44. 1:45fast, and I had a volunteer management
  45. 1:47system, but the problem was
  46. 1:49uh some
  47. 1:50one else from um music festival
  48. 1:52approached me and said, "Hey, I heard
  49. 1:53that you're building a volunteer
  50. 1:55management system. We need that as well.
  51. 1:58And then I had an issue. I had no clue
  52. 2:00what I was implementing and I had no
  53. 2:02issue and no clue how I could change the
  54. 2:05features so that it will fulfill the
  55. 2:07requirements of this music festival. And
  56. 2:10this brought me to spectrum development.
  57. 2:13Um
  58. 2:14as I was already already introduced, I'm
  59. 2:16doing mostly Java development. I'm a
  60. 2:17consultant in Switzerland for 17 years.
  61. 2:20And I'm working for insurance companies,
  62. 2:23wholesale, retail, government, large
  63. 2:26enterprises mostly. And I'm doing
  64. 2:28business applications. So I don't do
  65. 2:29tools, I don't do products, I do
  66. 2:32business applications.
  67. 2:33And during that time when I was kind of
  68. 2:37lost, I found the website. It was called
  69. 2:40AI Native Dev.io. You may know that.
  70. 2:42It's Tessel.
  71. 2:43And there I found an article from Simon
  72. 2:46Maple.
  73. 2:47And he was writing about AI Native
  74. 2:50development and that caught my attention
  75. 2:52and I
  76. 2:53read about spectrum development. But at
  77. 2:56that time, spectrum development was
  78. 2:58relatively new. So the term spectrum
  79. 3:00development is very old, right? That's
  80. 3:02from the 2000s or maybe late '90s. But
  81. 3:05the spectrum development with AI was
  82. 3:07relatively new, so I started to think
  83. 3:10about what could specs be. And because
  84. 3:12I'm doing business applications, I had a
  85. 3:15different take probably on spectrum
  86. 3:17development and I tried to find a way to
  87. 3:20do that. And so in the meanwhile, if we
  88. 3:23look at the spectrum development
  89. 3:25ecosystem, there are flavors of spectrum
  90. 3:29development. And there is one
  91. 3:31process-centric, that's my process. I
  92. 3:33created this AI Unified Process. I will
  93. 3:35show you that in a minute. But on the
  94. 3:38other hand, we have tools. We have
  95. 3:39Amazon Kiro, we have GitHub Spec Kit, we
  96. 3:41have Behave Method. These are all great
  97. 3:44tools. And also Tessel created spectrum
  98. 3:46tools back then, let's say early 2025.
  99. 3:50But they are all in my opinion at least
  100. 3:54two developer-centric.
  101. 3:56And I try to cover the whole
  102. 3:59software development life cycle,
  103. 4:01especially for enterprises where you not
  104. 4:04are solopreneur, you're someone in a
  105. 4:07larger team with different roles in a
  106. 4:10large organization.
  107. 4:12And there's a web website called AI
  108. 4:17Unified Process. Let me switch that and
  109. 4:19there you will see kind of a diagram
  110. 4:22with some colors. So the colors mean
  111. 4:24that you usually if you're on a green
  112. 4:26field, I will talk about brown fields as
  113. 4:27well because I'm rarely on green field
  114. 4:29projects.
  115. 4:31You start with a vision. And then you
  116. 4:32start gathering requirements, however
  117. 4:35you would do that.
  118. 4:36By the way, there is the International
  119. 4:38Requirements Engineering Board and they
  120. 4:40just created something called the
  121. 4:42micro-credential. It's called AI for
  122. 4:44requirements engineering and they have
  123. 4:46prompting guides, skills and stuff.
  124. 4:47They're working on that how requirements
  125. 4:49engineering you can be uh speed up with
  126. 4:52AI. And then we have testing and stuff
  127. 4:54like that. And the green thing is
  128. 4:56probably what's interesting here.
  129. 4:59I was thinking about what could be good
  130. 5:01specs that AI understands, but also all
  131. 5:05stakeholders in the project can
  132. 5:07understand. And I ended up with SysML
  133. 5:10use cases. By the way, who knows SysML
  134. 5:12use cases? Who knows that?
  135. 5:15Not a lot of people as I thought. So in
  136. 5:17SysML use cases were created by Ivar
  137. 5:19Jacobson back in 1987.
  138. 5:23And then later on we had UML and OOP and
  139. 5:26stuff like that. That was that movement
  140. 5:29late '80s, early '90s. But I was using
  141. 5:33SysML use cases for when I was working
  142. 5:35for Swiss Railways early 2000 and this
  143. 5:39quite worked well as a communication
  144. 5:42specification between stakeholders and
  145. 5:44developers back then. And I thought,
  146. 5:46"Okay, if that worked back then, why
  147. 5:48shouldn't it work together with AI?"
  148. 5:50And then we need something else. I call
  149. 5:52it the the entity model, but it's more
  150. 5:54like a domain model. So, it depends if
  151. 5:56you're doing domain-driven design or how
  152. 5:58you work. Uh these are the more or less
  153. 6:01usually the data at at the end, but we
  154. 6:03need to model that.
  155. 6:05And these things together with some
  156. 6:08software architecture, I will talk about
  157. 6:09that later,
  158. 6:10uh can be used to directly generate
  159. 6:12code. Because the difference from my
  160. 6:15approach to the tool approach is the
  161. 6:17tool approach is always the same. So,
  162. 6:19usually if you look at Amazon Kiva, for
  163. 6:22example, you have product requirements
  164. 6:23document. From that you generate some
  165. 6:26plan, and out of the plan there will be
  166. 6:28tasks, and finally AI will implement the
  167. 6:31tasks. I skip the plan task phase. I
  168. 6:34just use SysML case and entity model and
  169. 6:37generate code directly. So, now SysML
  170. 6:39cases are not enough because usually
  171. 6:42there's a UI, for example, or you if you
  172. 6:45build an API of an API spec, so you need
  173. 6:47additional information to that. So, the
  174. 6:50SysML case just defines the behavior,
  175. 6:53but how it looks can be, for example, a
  176. 6:56Figma design that you can integrate with
  177. 6:58MCP server and directly interact with
  178. 7:00Figma out of that. And then usually um
  179. 7:03code is generated and test is generated.
  180. 7:05The question is in which order? So, I'm
  181. 7:08mostly doing
  182. 7:10uh full-stack development. That means I
  183. 7:12have a UI. And if you have a UI,
  184. 7:14test-driven development is difficult
  185. 7:16because you first need to figure out how
  186. 7:18the UI will look like before you can
  187. 7:20start to create the tests.
  188. 7:22If you do APIs, for example, I would
  189. 7:24always go for test-driven development.
  190. 7:26So, start with the tests and then use
  191. 7:28the tests also to drive the code
  192. 7:31generation. And finally,
  193. 7:33uh as we can see always there is a
  194. 7:34review phase. So, most often things are
  195. 7:38reviewed. The question is how much
  196. 7:40review do you need? And that's all about
  197. 7:42risk management.
  198. 7:44So, I'm currently working on the
  199. 7:46modernization of an ERP system for the
  200. 7:48largest wholesale company in
  201. 7:49Switzerland.
  202. 7:50And if you look at an ERP system, you
  203. 7:52have different modules in the system
  204. 7:55that don't have all the same,
  205. 7:58how should I say, criticality? So, that
  206. 8:01means if you have the product management
  207. 8:02or the inventory part, if that doesn't
  208. 8:05work, that's probably not even a problem
  209. 8:07because people that are working with
  210. 8:09that inventory management system, they
  211. 8:11can just go and grab a coffee.
  212. 8:13If the order management system doesn't
  213. 8:15work, that's
  214. 8:17more
  215. 8:18of a problem because then the company
  216. 8:20probably will lose money, right? So, you
  217. 8:23should do risk management and then
  218. 8:25decide how much review
  219. 8:27um your code probably needs. But that's
  220. 8:29not different from AI or manual-driven
  221. 8:31development. That
  222. 8:32That's uh just how it works. Now,
  223. 8:35uh let's have a look in the details. So,
  224. 8:37if we have a greenfield project, for
  225. 8:39example,
  226. 8:43we would start with uh with the specs.
  227. 8:45So, the specs means we have some
  228. 8:46requirements engineers, product owners,
  229. 8:49business analysts, um
  230. 8:51depending on how the people are called
  231. 8:54in your organization, and they create
  232. 8:56the entity model and use cases. So, they
  233. 8:58can also derive that directly from
  234. 9:00requirements, for example, and uh then
  235. 9:03we will have a phase where we can review
  236. 9:05that. So,
  237. 9:07there will be something like a
  238. 9:09definition of time, and uh the the
  239. 9:11software engineer together with AI and
  240. 9:13the requirements engineer with will
  241. 9:14decide when the use case is done
  242. 9:17or the specification is done, and then
  243. 9:19we use the agent. And the agent comes
  244. 9:21with
  245. 9:22what a lot of people were already
  246. 9:24talking about. So, we need skills, MCP,
  247. 9:27guidelines, guardrails,
  248. 9:29whatever. We will see that uh in a
  249. 9:31minute in a demo.
  250. 9:33But uh because we We do the plan and
  251. 9:36task phase. We need that in the middle.
  252. 9:38That
  253. 9:39is probably the most important thing of
  254. 9:42the whole process. So, that means the
  255. 9:44skills must match the outcome. That
  256. 9:47means we need skills that
  257. 9:49knows how the code and test should be
  258. 9:51generated and that's not always the
  259. 9:53same. So, I'm working currently for six
  260. 9:56customers with that process
  261. 9:58and all the skills are different.
  262. 10:00Because I have customers that use React
  263. 10:02and Spring Boot. Others use Vaadin and
  264. 10:04Spring Boot. That's a Java framework.
  265. 10:05Others are using Angular and Quarkus.
  266. 10:09So, I have a variety of different um
  267. 10:12frameworks and also um
  268. 10:15some in-house frameworks maybe that need
  269. 10:18to be um
  270. 10:20working in in that context.
  271. 10:23Now, that's a greenfield project, but I
  272. 10:24really rarely do that. What I do mostly
  273. 10:27is software modernization. So, I'm doing
  274. 10:29modernization for uh enterprise
  275. 10:32applications for about 8 years now.
  276. 10:35And there I just uh
  277. 10:38change the process. That means I
  278. 10:41extract
  279. 10:42um use case and entity model from code
  280. 10:45and test and documentation. Maybe I have
  281. 10:46Confluence, Jira, whatever. Because
  282. 10:48usually the documentation is spread
  283. 10:51around um
  284. 10:52multiple artifacts that we have. And
  285. 10:54then we have the entity model and the
  286. 10:56use cases. They will be revised or
  287. 10:57reviewed by the business people and then
  288. 11:00we generate the new code.
  289. 11:02Because there are a lot of ideas that we
  290. 11:05can directly transform maybe from COBOL
  291. 11:08to Java. So, that's also something that
  292. 11:10I'm Tropic is is telling us, but that
  293. 11:12never worked. So, we did that like 30
  294. 11:15years ago, COBOL to C or COBOL to C++ or
  295. 11:18something, but that's not helpful
  296. 11:21because that's just lift and shift. And
  297. 11:24modernization is not lift and shift.
  298. 11:26Modernization is rethinking how people
  299. 11:29are working with the software,
  300. 11:30integrating features that maybe are not
  301. 11:32there. And because of this reverse
  302. 11:34engineering,
  303. 11:35we also have
  304. 11:38a positive feedback from the end users
  305. 11:40because
  306. 11:41we are not transforming from one
  307. 11:44technology to another
  308. 11:46because we're going over use case and
  309. 11:47identity model and we can integrate new
  310. 11:49features.
  311. 11:50Because usually you don't do that. So
  312. 11:52the
  313. 11:53guideline when we started with the
  314. 11:55modernization project 2 years ago was we
  315. 11:58want to have the exact same system just
  316. 12:01in another technology and you don't add
  317. 12:02new features because we don't want to
  318. 12:04introduce new bugs.
  319. 12:06And now we can just do that because we
  320. 12:07just change
  321. 12:09the specification.
  322. 12:11Now the question is maybe why use cases?
  323. 12:15Because user usually people are user
  324. 12:16stories or any other product
  325. 12:19requirements document. The point is use
  326. 12:21cases are very well defined and even AI
  327. 12:24knows how to write use cases because
  328. 12:26it's around for a very long time. That
  329. 12:29means we have the use case that has
  330. 12:31usually that form, right? We have
  331. 12:32precondition, post conditions and we
  332. 12:35have scenarios.
  333. 12:37Usually have a main success scenario and
  334. 12:39then you have alternative flows. And if
  335. 12:41we compare that with user stories, we
  336. 12:44can see that user stories are just a
  337. 12:46collection or a use case is a collection
  338. 12:48of user story usually. So one user story
  339. 12:50is usually
  340. 12:53a flow in a use case and in my opinion
  341. 12:58or in my experience use cases are better
  342. 13:00than use cases because they are simply
  343. 13:02bigger.
  344. 13:03And so we have that.
  345. 13:05And I created a small project. So do we
  346. 13:07have Java developers here by the way?
  347. 13:10You certainly know the application that
  348. 13:13I
  349. 13:14was already
  350. 13:15displaying before. We have the Spring
  351. 13:17Pet Clinic. So that's kind of a demo
  352. 13:19project from the Spring Framework.
  353. 13:21Just some history. Spring
  354. 13:24was using Pet Clinic because before we
  355. 13:26had Java Enterprise Edition and they had
  356. 13:29the pet shop. And they wanted to stay in
  357. 13:31this pet
  358. 13:33industry, so to say, and they created
  359. 13:35that. So, what we can do here, we can uh
  360. 13:38see the doctors, we can uh find owners,
  361. 13:41and owners have pets. For example,
  362. 13:43Eduardo Rodriguez has Jewel and Rosie.
  363. 13:46And for example, um Jewel is here and uh
  364. 13:51has a broken leg.
  365. 13:55And we can add the visit. So, that's
  366. 13:56more or less that. Um that's a very
  367. 13:58simple a very very simple application,
  368. 14:00but it's more or less what I'm doing.
  369. 14:02So, I don't do that simple applications,
  370. 14:04but I'm doing business applications. So,
  371. 14:06we have UIs, data, stuff like that. And
  372. 14:08[snorts] what I did, I reverse
  373. 14:10engineered um
  374. 14:12the pet clinic. And that's a use case
  375. 14:15UML diagram, by the way. And this is
  376. 14:18quite helpful because on the diagram we
  377. 14:19have actors, so we have two, the visitor
  378. 14:21and the clinic user. And these usually
  379. 14:24are also roles in the system. And then
  380. 14:26we have like use cases. They are grouped
  381. 14:29into parts or in modules, whatever. So,
  382. 14:32we have a welcome page with the the
  383. 14:35doctors, then the owner management, the
  384. 14:37pet management, and uh finally the visit
  385. 14:40or the the visit management that I just
  386. 14:42did.
  387. 14:43And uh when I do reverse engineering, I
  388. 14:46just go on that level. We also have an
  389. 14:47entity model, so that's usually derived
  390. 14:49from the database model. It depends if
  391. 14:51you have a SQL database or other
  392. 14:53database, but usually you have
  393. 14:55information to cover that. And uh here
  394. 14:58we have a diagram that just contains uh
  395. 15:00the types that we can see how things are
  396. 15:03related in the system, and then we have
  397. 15:05definition of of the entities.
  398. 15:08Um I will talk about architecture in a
  399. 15:10minute because uh working like that or
  400. 15:13working with AI, in my opinion, has a
  401. 15:15huge impact on the architecture styles
  402. 15:17or which architecture fits well. And
  403. 15:20then we have uh created or reverse
  404. 15:23engineered uh
  405. 15:25the use cases. Let's go and look at that
  406. 15:27one. That's the
  407. 15:28the [snorts] list of the doctors. And
  408. 15:30here you can see that we have an actor,
  409. 15:32we have pre-conditions, scenarios. And
  410. 15:35this one also contains an API that's
  411. 15:37irrelevant. That's was just reverse
  412. 15:39engineered. And then we have
  413. 15:40post-conditions. And the post-conditions
  414. 15:42are kind of acceptance criteria if you
  415. 15:44think about user stories that can be
  416. 15:47verified in tests to check if the use
  417. 15:49case
  418. 15:49finally
  419. 15:51was successful. And from that, because I
  420. 15:54have skills and everything, I just can
  421. 15:57call implement. So that means
  422. 16:00in those projects, we don't prompt. So
  423. 16:03we have skills for everything and we
  424. 16:04iterate on the skills. So we try to
  425. 16:06improve them constantly. We share the
  426. 16:08skills in the organization. That's kind
  427. 16:09of a problem currently, because not
  428. 16:12everybody in the organization is maybe
  429. 16:14using the same agent. So we need some
  430. 16:17skill distribution.
  431. 16:18I'm using Cloud Code here. I do things
  432. 16:21that I usually don't do. So I don't run
  433. 16:23it here inside the IDE. That's just for
  434. 16:25for demo purposes. And now it it
  435. 16:28looks at that. What I also have and
  436. 16:34what you heard in the last talk if you
  437. 16:36were here in that room, I have a Cloud
  438. 16:38MD.
  439. 16:39And this more or less has not much
  440. 16:41inside, but the very important part.
  441. 16:44Where is it?
  442. 16:46Somewhere I can't find it, but somewhere
  443. 16:48there's a reverence to some guidelines.
  444. 16:50So we have guidelines for architecture
  445. 16:53for example, how we structure the
  446. 16:55application, how the package structure
  447. 16:57looks like, what tools we are using that
  448. 16:59AI knows about that. But most of the
  449. 17:01things are in the skills. And my browser
  450. 17:04also comes with skills. So if you go
  451. 17:06there, and we don't have time to to look
  452. 17:08at that, but if you go there and look at
  453. 17:09it, you see there are two levels of
  454. 17:11skills. So we have skills
  455. 17:14primarily for specification and there is
  456. 17:16skills specific for one stack that I'm
  457. 17:18using.
  458. 17:20But I stopped adding more skills for
  459. 17:22more stacks because there are so many
  460. 17:23combinations out there that that's
  461. 17:25probably a thing that the company has to
  462. 17:28do.
  463. 17:29And now it it works on that.
  464. 17:31And
  465. 17:33maybe I go back to this one because I
  466. 17:37was already talking about that. In my
  467. 17:39opinion,
  468. 17:41uh the architecture has an impact on how
  469. 17:43well things work. So, first of all,
  470. 17:47in the past 15 years or so, we were
  471. 17:50doing microservices.
  472. 17:52And most of my customers did
  473. 17:54microservices in a very naive way.
  474. 17:57So, they have way too many microservices
  475. 18:00because they were focusing on the micro
  476. 18:02in microservices.
  477. 18:04And that's probably a problem, so they
  478. 18:06have this distributed big ball of mud.
  479. 18:08So, I'm working for an insurance company
  480. 18:10and they have around 500 microservices.
  481. 18:13And that's kind of an impact because
  482. 18:15they also have a
  483. 18:17kind of 500 micro front ends. And they
  484. 18:21are kind of related, right? So, we have
  485. 18:23an N2M relationship between
  486. 18:26uh front end and back end. And that's
  487. 18:29the worst case scenario.
  488. 18:31Because if you have if you want to work
  489. 18:33with AI on a certain part of your
  490. 18:35system, you have to have the context.
  491. 18:37So, you need the code that the AI should
  492. 18:39work on
  493. 18:40in a single place, at least on your
  494. 18:42machine or wherever you work with that
  495. 18:45with AI.
  496. 18:46And if you have 500 microservices, a lot
  497. 18:48of components somewhere, and you have to
  498. 18:50mix and match that, that becomes very
  499. 18:52difficult.
  500. 18:54Now, there's a movement away from
  501. 18:56microservices to
  502. 18:58monolithic or modular monolithic
  503. 19:00application. And I would
  504. 19:03say stop here, don't do that because
  505. 19:05that's not the right way. Because maybe
  506. 19:09you have like a huge monolith that we
  507. 19:12have currently ERP system has
  508. 19:15thousands of database tables and a lot
  509. 19:17of modules.
  510. 19:18And that's a problem, right? Because the
  511. 19:20context is too big. So, how can we work
  512. 19:23on that? And there's an architecture
  513. 19:24style that's not so well known, but it's
  514. 19:27approximately
  515. 19:29um
  516. 19:30created when microservices were created.
  517. 19:33It's called self-contained system. And
  518. 19:35the self-contained system architecture
  519. 19:36just says we create verticals. So, we
  520. 19:39split our application into verticals
  521. 19:41which has UIs, business logic, and
  522. 19:43database in one repo usually or in one
  523. 19:46project at least.
  524. 19:48Or in one application. And if you have
  525. 19:50that, if you can split that, and we do
  526. 19:52that with ERP modernization,
  527. 19:54then
  528. 19:55the AI can exactly work on that. And you
  529. 19:58can also add skills
  530. 20:00in
  531. 20:01depending on what technology you're
  532. 20:03using. So, for example, in the inventory
  533. 20:05system here we're using Vaadin as I do
  534. 20:07in my demo. That's a
  535. 20:09web framework in Java, but for the order
  536. 20:12management system, for example, we have
  537. 20:14React in the front end. So, we can have
  538. 20:16different technology in different
  539. 20:17self-contained systems.
  540. 20:19Um there's another thing that if you can
  541. 20:21stay on one stack, so for example, if
  542. 20:23you stay with the Java stack or uh stay
  543. 20:26with the JavaScript TypeScript stack or
  544. 20:28ecosystem, then probably creating harder
  545. 20:31is simpler because you need to create
  546. 20:33skills and all the stuff just for one
  547. 20:36technology. Otherwise, if you do what my
  548. 20:38customers usually doing, they have a
  549. 20:40single page framework like
  550. 20:42um React or Angular and then usually
  551. 20:44Spring Boot or Quarkus in the back end,
  552. 20:46they have to create this twice and also
  553. 20:49maintain that twice, right?
  554. 20:52And once
  555. 20:54another thing that's also quite
  556. 20:56interesting is the impact on the teams,
  557. 20:59and that's the bigger change. So, for
  558. 21:02those other company, that's relatively
  559. 21:04simple because that's not a huge team.
  560. 21:07And they already work in maintenance
  561. 21:09mode, so they don't really do Scrum
  562. 21:12anymore, right? They don't have fixed
  563. 21:13sprints. They work on depending on what
  564. 21:16features they have to implement. But
  565. 21:18because we
  566. 21:20uh
  567. 21:20use like the specs as an input as we
  568. 21:24also kind of did with the stories by the
  569. 21:26way in a in a Scrum
  570. 21:28uh
  571. 21:29development way.
  572. 21:32But we are way faster, so we cannot wait
  573. 21:34to
  574. 21:35weeks. So that's way too long. So we
  575. 21:38need maybe 2 weeks to do the
  576. 21:39specification, but we don't need 2 weeks
  577. 21:42to create the software. And we also
  578. 21:44reduce the team size. We are
  579. 21:47uh per self-contained system one to two
  580. 21:48developers.
  581. 21:50Preferable two because of uh knowledge
  582. 21:52exchange and maybe it's uh boring to
  583. 21:55work on a project [clears throat] alone.
  584. 21:58But we reduced that from like five to
  585. 22:00seven to one to or two.
  586. 22:02And as I said, we do no more sprints. We
  587. 22:04do continuous flow, and we use the use
  588. 22:06cases kind of uh in a Kanban way to
  589. 22:09track the progress. That's all we do,
  590. 22:11right?
  591. 22:13Then something that or we can go back.
  592. 22:16Man, that's probably done. And what it
  593. 22:18created is just uh the implementation of
  594. 22:22that.
  595. 22:27And now we have the list of doctors
  596. 22:29here. So that's what's created. Oh.
  597. 22:33You're right.
  598. 22:35I really don't like PowerPoint because
  599. 22:37this changes everything. So that's
  600. 22:40what's done. It took 1 and 1/2 uh minute
  601. 22:43or so. And now we see the doctors,
  602. 22:45right? So that's a simple use case, but
  603. 22:47that's something that we have a lot in
  604. 22:50the ERP system, something like that,
  605. 22:52right?
  606. 22:53And why did this work?
  607. 22:55Uh first of all, because of this
  608. 23:01guardrails that I was talking about. So,
  609. 23:03first of all, my recommendation, never
  610. 23:06let AI create a project. First of all,
  611. 23:09you just waste tokens if you do that.
  612. 23:12But, if you do that, you probably end up
  613. 23:14with an outdated application. So, if you
  614. 23:17have like Spring, for example, in the
  615. 23:19trial field there's start.spring.io, you
  616. 23:21can create an application, you get the
  617. 23:23newest dependencies, you get them the
  618. 23:25way how the Spring team currently thinks
  619. 23:27about creating applications. Maybe you
  620. 23:29have a CLI for your tools, use that.
  621. 23:32Don't use AI for that.
  622. 23:34And then you have to define the rules.
  623. 23:35So, that means you don't put everything
  624. 23:38in Claude MD or in the agents MD because
  625. 23:41there's a study from the ETH University
  626. 23:43in Zurich, and they say the bigger the
  627. 23:47system prompt, the
  628. 23:49more hallucinations you get probably.
  629. 23:51So, it's maybe even better to have none
  630. 23:54of those files than a big one.
  631. 23:57And then you can add architecture. So,
  632. 23:59we usually do
  633. 24:01kind of architecture, um or arc42,
  634. 24:05that's a kind of a format how you can do
  635. 24:07architecture documentation. Then we add
  636. 24:09skills, that's the important thing. A
  637. 24:11lot of people were talking about that.
  638. 24:13And we also have MCP service because um
  639. 24:16skills shouldn't be that big, and we
  640. 24:19have huge documentation, for example,
  641. 24:20for in-house frameworks where we get MCP
  642. 24:23service in vector search that AI can
  643. 24:25directly search in the documentation.
  644. 24:29That's um how we do that. And if you do
  645. 24:31a good job and iterate on that, you
  646. 24:33really get probably um
  647. 24:37a near deterministic solution. So, what
  648. 24:41I did before, I can delete everything,
  649. 24:43do it again, I will get more or less the
  650. 24:45same outcome. Right.
  651. 24:48But, very important, the human should
  652. 24:50review
  653. 24:51depending, as I said, on the risk, what
  654. 24:53happens when your system doesn't work or
  655. 24:55have bugs, then you should uh probably
  656. 24:58go and add more reviews or depending on
  657. 25:02if you do reviews by hand or you use AI
  658. 25:05to review or however you work on that.
  659. 25:08So, we don't do pull requests, by the
  660. 25:10way, at the moment. We do trunk-based
  661. 25:12development and we do kind of an ongoing
  662. 25:16review process. So, we work on something
  663. 25:19and then we do peer reviews. So, we work
  664. 25:22if we are two developers, they work
  665. 25:24together and do the review together. So,
  666. 25:27they try to explain parts of the system
  667. 25:29that
  668. 25:30they created with the other. So, we
  669. 25:32don't do pull requests anymore in that
  670. 25:34those projects.
  671. 25:36So, to conclude,
  672. 25:37um specs reduce nondeterminism, but not
  673. 25:40specs are not enough. So, you need to
  674. 25:42harness, you need all the context around
  675. 25:45that that this really works.
  676. 25:47And something that I didn't talk about
  677. 25:49is, in my opinion, specs are very
  678. 25:52sustainable or hopefully they will be
  679. 25:55sustainable in the future because
  680. 25:57currently what I'm doing is reverse
  681. 25:58engineering of existing code into specs.
  682. 26:02And if we have specs, we can probably
  683. 26:04generate the same application in
  684. 26:06different technology with a different
  685. 26:08UI. Maybe we don't have even a UI, we
  686. 26:10have chat or something directly from the
  687. 26:12specs.
  688. 26:13And
  689. 26:15the business people can directly change
  690. 26:18the way the system should behave without
  691. 26:20developers. So, they don't need
  692. 26:21developers um talking about that or
  693. 26:24looking into that.
  694. 26:26And this accelerates development. The
  695. 26:28problem is it it at the moment it just
  696. 26:32accelerates development.
  697. 26:34Right? So, the requirements phase and
  698. 26:36the spec phase takes some time. For
  699. 26:39example, I'm working for Swiss
  700. 26:40government, for the parliament, they are
  701. 26:43uh
  702. 26:44have a business case management software
  703. 26:45that we want to modernize. And I'm the
  704. 26:48only one during the proof of concept
  705. 26:50doing something with code.
  706. 26:52but we have two product owner
  707. 26:54requirements engineers that work on the
  708. 26:56spec and they have much more
  709. 26:58work to do than I have. I just automate
  710. 27:00everything, so currently I'm working on
  711. 27:03on the pipeline that they can just
  712. 27:05change the markdown files and everything
  713. 27:07will automatically generated.
  714. 27:09Um so the kind of the work moves or
  715. 27:12shifts left. So everything shifts left
  716. 27:15to requirements engineering in my
  717. 27:16opinion because now that's obvious.
  718. 27:18Before like if it is scrum you had 2
  719. 27:22weeks to work on the requirements
  720. 27:24somehow and then developers were 2 weeks
  721. 27:27working on the implementation. Now you
  722. 27:29have 2 weeks and then 5 minutes and 2
  723. 27:31weeks. Something like that, right?
  724. 27:34And the most important thing is you
  725. 27:36should know your architecture and domain
  726. 27:38and this will lead us to the discussion
  727. 27:40about the junior developers, but I think
  728. 27:42we stop here
  729. 27:44at this. And that's it from my side.
  730. 27:46Thank you very much.
  731. 27:50>> [applause]
  732. 27:54>> Thank you so much, Simon. Um we have a
  733. 27:57few minutes for questions if anyone
  734. 27:59would like to ask something, okay? We'll
  735. 28:01start here.
  736. 28:03>> Um thank you for nice hands-on
  737. 28:05presentation. I have a question about
  738. 28:07use cases. Uh
  739. 28:09did I understand correctly that you
  740. 28:11initially generate diagram in PlantUML
  741. 28:13and then from that diagram you generate
  742. 28:16detailed text requirements in markdown?
  743. 28:18>> So usually you you would
  744. 28:21So on a greenfield project you would
  745. 28:23have like a requirements catalog or
  746. 28:25something or a product requirements
  747. 28:27document and from that I would first
  748. 28:29generate the use case diagram that you
  749. 28:31have no view what we have.
  750. 28:33And maybe this would even give you an
  751. 28:35idea how to split your application into
  752. 28:37models.
  753. 28:38And then from that you can go ahead and
  754. 28:40generate that because since use cases
  755. 28:42are kind of in the user story included,
  756. 28:45right? It's just more detailed with all
  757. 28:47the steps. And um
  758. 28:50yeah, our requirements engineers and
  759. 28:52product owners use AI a lot just to
  760. 28:55verify the use cases, to find maybe
  761. 28:58duplicates or things that are missing,
  762. 29:01and they work a lot on on that with AI.
  763. 29:04Yeah, but we go use case by use case
  764. 29:06because a lot of people say spectrum
  765. 29:08development is waterfall, and that's
  766. 29:10simply not true.
  767. 29:11It just is It's just requirements and
  768. 29:14then test and implementation, but that's
  769. 29:17also the case with Agile, right? You
  770. 29:18have to do that but but we don't do big
  771. 29:20up front design, we just go use case by
  772. 29:23use case.
  773. 29:28>> Maybe it's a follow-up question,
  774. 29:31but like say your user story is wrong
  775. 29:34and you need to update it,
  776. 29:36what's the flow? Do you
  777. 29:39regenerate the whole application?
  778. 29:41Do you
  779. 29:42append
  780. 29:43a new requirement document? I I don't
  781. 29:46understand.
  782. 29:47>> So, if I have a use case, for example,
  783. 29:49let's go here and I have What did I do
  784. 29:51before? I think
  785. 29:54I did that one, right? And now I see,
  786. 29:56okay, there's
  787. 29:58What do we have something here?
  788. 30:00So, it says that that displays the
  789. 30:03doctor with first name, last name, and
  790. 30:04the comma-separated list of specialties,
  791. 30:07for example.
  792. 30:09And now I could go ahead and say, "No,
  793. 30:10that's not comma-separated, that's maybe
  794. 30:13um
  795. 30:15the at sign that I need to separate."
  796. 30:17And what I would do now, I would go
  797. 30:19ahead and say again the same that I did
  798. 30:22before, implement.
  799. 30:23Because at the moment, we need to code
  800. 30:26or we read the code, right? And I don't
  801. 30:29want I could throw it away, for sure.
  802. 30:31But then my Git history wouldn't look
  803. 30:33nice and it would be harder to review
  804. 30:34the changes, right? That would be an
  805. 30:36issue.
  806. 30:37In my opinion, or not in my opinion, in
  807. 30:40opinions of some people is AI doesn't
  808. 30:43need the source code. So, I'm a Java
  809. 30:44developer, that's bytecode that's
  810. 30:46executed. AI could generate the
  811. 30:48bytecode, there's no reason to generate
  812. 30:51the source code, maybe. Or maybe we end
  813. 30:54up with a programming language that's
  814. 30:56more AI-friendly and less
  815. 30:57human-readable. I don't know.
  816. 31:00But at the moment, we just work as you
  817. 31:02would if you would do that
  818. 31:04manually. So, we really change the use
  819. 31:06cases or the entity model, and then we
  820. 31:08say just apply the changes. Yeah.
  821. 31:13>> I'm so sorry. There's so many more
  822. 31:15questions, but we are out of time. You
  823. 31:17guys can hunt down Simon and ask him
  824. 31:21yourselves.
  825. 31:22Um our next session is going to be in 10
  826. 31:25minutes, but big round of applause for
  827. 31:26Simon.
  828. 31:29>> [music]
  829. 31:34[music]

About this transcript

This page contains the full transcript of Simon Martinelli - Lessons from Spec-driven Development - AI Native DevCon June 2026 by AI Native Dev, generated from the public captions YouTube serves with the video. The transcript has 5,113 words across 829 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.