{"id":23820,"date":"2025-11-15T19:47:30","date_gmt":"2025-11-15T19:47:30","guid":{"rendered":"https:\/\/pokecon.jp\/job\/?p=23820"},"modified":"2025-11-15T19:47:30","modified_gmt":"2025-11-15T19:47:30","slug":"spec-driven-development-the-waterfall-strikes-back","status":"publish","type":"post","link":"https:\/\/pokecon.jp\/job\/23820\/","title":{"rendered":"Spec-Driven Development: The Waterfall Strikes Back"},"content":{"rendered":"\n<\/p>\n<div>\n<p>Spec-Driven Development (SDD) revives the old idea of heavy documentation before coding \u2014 an echo of the Waterfall era. While it promises structure for AI-driven programming, it risks burying agility under layers of Markdown. This post explores why a more iterative, natural-language approach may better fit modern development.<\/p>\n<p>Coding assistants are intimidating: instead of an IDE full of familiar menus and buttons, developers are left with a simple chat input. How can we ensure that the code is correct with so little guidance?<\/p>\n<p><img src=\"https:\/\/marmelab.com\/_astro\/before-after.fEW0y8It_Z2geGnl.webp\" alt=\"Before and after\" width=\"960\" height=\"326\" loading=\"lazy\" decoding=\"async\"\/><\/p>\n<p>To help people write good software with coding assistants, the open-source community designed a clever way to guide a coding agent. Based on an initial prompt and a few instructions, an LLM generates product specifications, an implementation plan, and a detailed list of tasks. Each document depends on the previous one, and users can edit the documents to refine the spec.<\/p>\n<p><img src=\"https:\/\/marmelab.com\/_astro\/SDD.BHlY9x0e_2bwTOz.svg\" alt=\"Spec-Driven-Development\" width=\"2030\" height=\"356\" loading=\"lazy\" decoding=\"async\"\/><\/p>\n<p>Eventually, these documents are handed over to a coding agent (Claude Code, Cursor, Copilot, you name it). The agent, now properly guided, should write solid code that satisfies the business requirements.<\/p>\n<p>This approach is called Spec-Driven Development (SDD), and several toolkits can get you started. To name a few:<\/p>\n<p>If you want a comparison of these tools, I recommend the excellent article <a target=\"_blank\" href=\"https:\/\/martinfowler.com\/articles\/exploring-gen-ai\/sdd-3-tools.html\">Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl<\/a> by Birgitta B\u00f6ckeler.<\/p>\n<p>How does a spec look? It\u2019s essentially a bunch of Markdown files. Here\u2019s an example using GitHub\u2019s spec-kit, where a developer wanted to display the current date on a time-tracking app, resulting in <a target=\"_blank\" href=\"https:\/\/github.com\/adguernier\/frequentito\/pull\/42\/files\">8 files and 1,300 lines of text<\/a>:<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/marmelab.com\/_astro\/spec-kit-spec.D5naodjc.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https:\/\/marmelab.com\/_astro\/spec-kit-spec.D5naodjc_Z1d2x03.webp\" alt=\"Spec-Kit generated spec for Frequentito\" width=\"1200\" height=\"816\" loading=\"lazy\" decoding=\"async\" class=\"mb-2\"\/><\/a><\/p>\n<p>Here\u2019s another example using Kiro for a small feature (adding a \u201creferred by\u201d field to contacts in <a target=\"_blank\" href=\"https:\/\/marmelab.com\/atomic-crm\/\">Atomic CRM<\/a>):<\/p>\n<p><a target=\"_blank\" href=\"data:text\/markdown;base64,IyBSZXF1aXJlbWVudHMgRG9jdW1lbnQKCiMjIEludHJvZHVjdGlvbgoKVGhpcyBmZWF0dXJlIGFkZHMgYSAicmVmZXJyZWQgYnkiIGZpZWxkIHRvIHRoZSBjb250YWN0cyBzeXN0ZW0sIGVuYWJsaW5nIHVzZXJzIHRvIHRyYWNrIHJlZmVycmFsIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBjb250YWN0cy4gVGhpcyBhbGxvd3MgdGhlIENSTSB0byBjYXB0dXJlIGFuZCBkaXNwbGF5IHdoaWNoIGV4aXN0aW5nIGNvbnRhY3QgcmVmZXJyZWQgYSBuZXcgY29udGFjdCwgc3VwcG9ydGluZyByZWZlcnJhbCB0cmFja2luZyBhbmQgcmVsYXRpb25zaGlwIG1hcHBpbmcuCgojIyBHbG9zc2FyeQoKLSAqKkNvbnRhY3RfU3lzdGVtKio6IFRoZSBjb250YWN0cyBtYW5hZ2VtZW50IG1vZHVsZSB3aXRoaW4gdGhlIEF0b21pYyBDUk0gYXBwbGljYXRpb24KLSAqKlJlZmVycmVkX0J5X0ZpZWxkKio6IEEgcmVmZXJlbmNlIGZpZWxkIHRoYXQgbGlua3Mgb25lIGNvbnRhY3QgdG8gYW5vdGhlciBjb250YWN0IHdobyBwcm92aWRlZCB0aGUgcmVmZXJyYWwKLSAqKkNvbnRhY3RfUmVjb3JkKio6IEEgc2luZ2xlIGNvbnRhY3QgZW50aXR5IHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UKLSAqKkNvbnRhY3RfRm9ybSoqOiBUaGUgdXNlciBpbnRlcmZhY2UgZm9yIGNyZWF0aW5nIG9yIGVkaXRpbmcgY29udGFjdCBpbmZvcm1hdGlvbgotICoqRGF0YWJhc2VfU2NoZW1hKio6IFRoZSBTdXBhYmFzZSBQb3N0Z3JlU1FMIGRhdGFiYXNlIHN0cnVjdHVyZSBmb3Igc3RvcmluZyBjb250YWN0IGRhdGEKLSAqKlR5cGVTY3JpcHRfSW50ZXJmYWNlKio6IFRoZSBDb250YWN0IHR5cGUgZGVmaW5pdGlvbiB1c2VkIHRocm91Z2hvdXQgdGhlIGFwcGxpY2F0aW9uCi0gKipVSV9Db21wb25lbnQqKjogUmVhY3QgY29tcG9uZW50cyB0aGF0IHJlbmRlciB0aGUgY29udGFjdCBmb3JtcyBhbmQgZGlzcGxheXMKCiMjIFJlcXVpcmVtZW50cwoKIyMjIFJlcXVpcmVtZW50IDEKCioqVXNlciBTdG9yeToqKiBBcyBhIHNhbGVzIHJlcHJlc2VudGF0aXZlLCBJIHdhbnQgdG8gcmVjb3JkIHdoaWNoIGV4aXN0aW5nIGNvbnRhY3QgcmVmZXJyZWQgYSBuZXcgY29udGFjdCB0byBtZSwgc28gdGhhdCBJIGNhbiB0cmFjayByZWZlcnJhbCBzb3VyY2VzIGFuZCBhY2tub3dsZWRnZSByZWZlcnJlcnMuCgojIyMjIEFjY2VwdGFuY2UgQ3JpdGVyaWEKCjEuIFdIRU4gYSB1c2VyIGNyZWF0ZXMgb3IgZWRpdHMgYSBDb250YWN0X1JlY29yZCwgVEhFIENvbnRhY3RfRm9ybSBTSEFMTCBkaXNwbGF5IGEgIlJlZmVycmVkIGJ5IiBmaWVsZAoyLiBUSEUgUmVmZXJyZWRfQnlfRmllbGQgU0hBTEwgYWxsb3cgc2VsZWN0aW9uIG9mIGFueSBleGlzdGluZyBDb250YWN0X1JlY29yZCBmcm9tIHRoZSBDb250YWN0X1N5c3RlbQozLiBUSEUgUmVmZXJyZWRfQnlfRmllbGQgU0hBTEwgZGlzcGxheSBjb250YWN0IG5hbWVzIGluIGEgc2VhcmNoYWJsZSBkcm9wZG93biBmb3JtYXQKNC4gVEhFIFJlZmVycmVkX0J5X0ZpZWxkIFNIQUxMIGJlIG9wdGlvbmFsIGFuZCBhbGxvdyBudWxsIHZhbHVlcwo1LiBXSEVOIGEgdXNlciBzZWxlY3RzIGEgcmVmZXJyaW5nIGNvbnRhY3QsIFRIRSBDb250YWN0X1N5c3RlbSBTSEFMTCBzdG9yZSB0aGUgcmVmZXJyaW5nIGNvbnRhY3QncyBpZGVudGlmaWVyIHdpdGggdGhlIENvbnRhY3RfUmVjb3JkCgojIyMgUmVxdWlyZW1lbnQgMgoKKipVc2VyIFN0b3J5OioqIEFzIGEgc2FsZXMgcmVwcmVzZW50YXRpdmUsIEkgd2FudCB0byB2aWV3IHdoaWNoIGNvbnRhY3QgcmVmZXJyZWQgYW5vdGhlciBjb250YWN0LCBzbyB0aGF0IEkgY2FuIHVuZGVyc3RhbmQgcmVmZXJyYWwgcmVsYXRpb25zaGlwcyBpbiBteSBuZXR3b3JrLgoKIyMjIyBBY2NlcHRhbmNlIENyaXRlcmlhCgoxLiBXSEVOIGEgdXNlciB2aWV3cyBhIENvbnRhY3RfUmVjb3JkIHdpdGggYSByZWZlcnJpbmcgY29udGFjdCwgVEhFIENvbnRhY3RfU3lzdGVtIFNIQUxMIGRpc3BsYXkgdGhlIHJlZmVycmluZyBjb250YWN0J3MgbmFtZQoyLiBUSEUgQ29udGFjdF9TeXN0ZW0gU0hBTEwgcmVuZGVyIHRoZSByZWZlcnJpbmcgY29udGFjdCdzIG5hbWUgYXMgYSBjbGlja2FibGUgbGluawozLiBXSEVOIGEgdXNlciBjbGlja3MgdGhlIHJlZmVycmluZyBjb250YWN0IGxpbmssIFRIRSBDb250YWN0X1N5c3RlbSBTSEFMTCBuYXZpZ2F0ZSB0byB0aGUgcmVmZXJyaW5nIGNvbnRhY3QncyBkZXRhaWwgcGFnZQo0LiBXSEVOIGEgQ29udGFjdF9SZWNvcmQgaGFzIG5vIHJlZmVycmluZyBjb250YWN0LCBUSEUgQ29udGFjdF9TeXN0ZW0gU0hBTEwgZGlzcGxheSBhbiBlbXB0eSBvciBudWxsIHN0YXRlIGZvciB0aGUgUmVmZXJyZWRfQnlfRmllbGQKCiMjIyBSZXF1aXJlbWVudCAzCgoqKlVzZXIgU3Rvcnk6KiogQXMgYSBzeXN0ZW0gYWRtaW5pc3RyYXRvciwgSSB3YW50IHRoZSByZWZlcnJlZCBieSByZWxhdGlvbnNoaXAgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSwgc28gdGhhdCByZWZlcnJhbCBkYXRhIHBlcnNpc3RzIGFuZCBjYW4gYmUgcXVlcmllZCBmb3IgcmVwb3J0aW5nLgoKIyMjIyBBY2NlcHRhbmNlIENyaXRlcmlhCgoxLiBUSEUgRGF0YWJhc2VfU2NoZW1hIFNIQUxMIGluY2x1ZGUgYSAicmVmZXJyZWRfYnlfaWQiIGNvbHVtbiBpbiB0aGUgY29udGFjdHMgdGFibGUKMi4gVEhFIERhdGFiYXNlX1NjaGVtYSBTSEFMTCBkZWZpbmUgInJlZmVycmVkX2J5X2lkIiBhcyBhIGZvcmVpZ24ga2V5IHJlZmVyZW5jZSB0byB0aGUgY29udGFjdHMgdGFibGUKMy4gVEhFIERhdGFiYXNlX1NjaGVtYSBTSEFMTCBhbGxvdyBudWxsIHZhbHVlcyBmb3IgdGhlICJyZWZlcnJlZF9ieV9pZCIgY29sdW1uCjQuIFdIRU4gYSByZWZlcnJpbmcgY29udGFjdCBpcyBkZWxldGVkLCBUSEUgRGF0YWJhc2VfU2NoZW1hIFNIQUxMIHNldCB0aGUgInJlZmVycmVkX2J5X2lkIiB0byBudWxsIGZvciBhZmZlY3RlZCBDb250YWN0X1JlY29yZHMKNS4gVEhFIFR5cGVTY3JpcHRfSW50ZXJmYWNlIGZvciBDb250YWN0IFNIQUxMIGluY2x1ZGUgYSAicmVmZXJyZWRfYnlfaWQiIHByb3BlcnR5IG9mIHR5cGUgSWRlbnRpZmllciBvciBudWxsCgojIyMgUmVxdWlyZW1lbnQgNAoKKipVc2VyIFN0b3J5OioqIEFzIGEgZGV2ZWxvcGVyLCBJIHdhbnQgdGhlIHJlZmVycmVkIGJ5IGZpZWxkIHRvIGludGVncmF0ZSBzZWFtbGVzc2x5IHdpdGggZXhpc3RpbmcgY29udGFjdCBjb21wb25lbnRzLCBzbyB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBjb25zaXN0ZW50IHdpdGggY3VycmVudCBwYXR0ZXJucy4KCiMjIyMgQWNjZXB0YW5jZSBDcml0ZXJpYQoKMS4gVEhFIFVJX0NvbXBvbmVudCBTSEFMTCBwbGFjZSB0aGUgUmVmZXJyZWRfQnlfRmllbGQgaW4gdGhlIENvbnRhY3RNaXNjSW5wdXRzIHNlY3Rpb24KMi4gVEhFIFJlZmVycmVkX0J5X0ZpZWxkIFNIQUxMIHVzZSB0aGUgUmVmZXJlbmNlSW5wdXQgY29tcG9uZW50IHBhdHRlcm4gY29uc2lzdGVudCB3aXRoIG90aGVyIHJlZmVyZW5jZSBmaWVsZHMKMy4gVEhFIFJlZmVycmVkX0J5X0ZpZWxkIFNIQUxMIGZvbGxvdyB0aGUgc2FtZSBzdHlsaW5nIGFuZCBsYXlvdXQgYXMgb3RoZXIgZmllbGRzIGluIHRoZSBDb250YWN0X0Zvcm0KNC4gVEhFIENvbnRhY3RfU3lzdGVtIFNIQUxMIHZhbGlkYXRlIHRoYXQgYSBjb250YWN0IGNhbm5vdCByZWZlciB0aGVtc2VsdmVzCjUuIFRIRSBDb250YWN0X1N5c3RlbSBTSEFMTCBoYW5kbGUgdGhlIHJlZmVycmVkX2J5X2lkIGZpZWxkIGluIGFsbCBDUlVEIG9wZXJhdGlvbnMgZm9yIGNvbnRhY3Rz\" target=\"_blank\">Requirements.md<\/a> &#8211; <a target=\"_blank\" href=\"https:\/\/marmelab.com\/_astro\/design.C6Xpj_mN.md\" target=\"_blank\">Design.md<\/a> &#8211; <a target=\"_blank\" href=\"data:text\/markdown;base64,IyBJbXBsZW1lbnRhdGlvbiBQbGFuCgotIFsgXSAxLiBVcGRhdGUgZGF0YWJhc2Ugc2NoZW1hIGFuZCBUeXBlU2NyaXB0IHR5cGVzCiAgLSBDcmVhdGUgU3VwYWJhc2UgbWlncmF0aW9uIHRvIGFkZCByZWZlcnJlZF9ieV9pZCBjb2x1bW4gd2l0aCBmb3JlaWduIGtleSBjb25zdHJhaW50CiAgLSBVcGRhdGUgQ29udGFjdCBUeXBlU2NyaXB0IGludGVyZmFjZSB0byBpbmNsdWRlIHJlZmVycmVkX2J5X2lkIGZpZWxkCiAgLSBfUmVxdWlyZW1lbnRzOiAzLjUsIDQuMl8KCi0gWyBdIDIuIENyZWF0ZSBBdXRvY29tcGxldGVDb250YWN0SW5wdXQgY29tcG9uZW50CiAgLSBbIF0gMi4xIEltcGxlbWVudCBBdXRvY29tcGxldGVDb250YWN0SW5wdXQgY29tcG9uZW50IHdpdGggaW5saW5lIGNvbnRhY3QgY3JlYXRpb24KICAgIC0gQ3JlYXRlIG5ldyBjb21wb25lbnQgZmlsZSBhdCBzcmMvY29tcG9uZW50cy9hdG9taWMtY3JtL2NvbnRhY3RzL0F1dG9jb21wbGV0ZUNvbnRhY3RJbnB1dC50c3gKICAgIC0gSW1wbGVtZW50IGNvbnRhY3QgY3JlYXRpb24gaGFuZGxlciB0aGF0IHBhcnNlcyBuYW1lIGludG8gZmlyc3RfbmFtZSBhbmQgbGFzdF9uYW1lCiAgICAtIFVzZSBBdXRvY29tcGxldGVJbnB1dCB3aXRoIG9uQ3JlYXRlIHByb3AgZm9yIGlubGluZSBjcmVhdGlvbgogICAgLSBBZGQgcHJvcGVyIGVycm9yIGhhbmRsaW5nIGFuZCBub3RpZmljYXRpb25zCiAgICAtIF9SZXF1aXJlbWVudHM6IDEuNiwgMS43LCAxLjhfCgogIC0gWyBdIDIuMiBFeHBvcnQgQXV0b2NvbXBsZXRlQ29udGFjdElucHV0IGZyb20gY29udGFjdHMgaW5kZXgKICAgIC0gQWRkIGV4cG9ydCB0byBzcmMvY29tcG9uZW50cy9hdG9taWMtY3JtL2NvbnRhY3RzL2luZGV4LnRzCiAgICAtIF9SZXF1aXJlbWVudHM6IDEuNl8KCi0gWyBdIDMuIFVwZGF0ZSBDb250YWN0SW5wdXRzIGNvbXBvbmVudAogIC0gWyBdIDMuMSBBZGQgcmVmZXJyZWRfYnlfaWQgZmllbGQgdG8gQ29udGFjdE1pc2NJbnB1dHMgc2VjdGlvbgogICAgLSBJbXBvcnQgQXV0b2NvbXBsZXRlQ29udGFjdElucHV0IGNvbXBvbmVudAogICAgLSBBZGQgUmVmZXJlbmNlSW5wdXQgZm9yIHJlZmVycmVkX2J5X2lkIHdpdGggZmlsdGVyIHRvIHByZXZlbnQgc2VsZi1yZWZlcnJhbAogICAgLSBQb3NpdGlvbiBmaWVsZCBiZXR3ZWVuIGJhY2tncm91bmQgYW5kIGhhc19uZXdzbGV0dGVyIGZpZWxkcwogICAgLSBVc2UgcHJvcGVyIGxhYmVsICJSZWZlcnJlZCBieSIKICAgIC0gX1JlcXVpcmVtZW50czogMS4xLCAxLjIsIDEuMywgMS40LCAxLjUsIDMuNV8KCi0gWyBdIDQuIFVwZGF0ZSBDb250YWN0QXNpZGUgY29tcG9uZW50IHRvIGRpc3BsYXkgcmVmZXJyZXIKICAtIFsgXSA0LjEgQWRkIHJlZmVycmVyIGRpc3BsYXkgc2VjdGlvbiBpbiBDb250YWN0QXNpZGUKICAgIC0gUmVhZCBDb250YWN0QXNpZGUudHN4IHRvIHVuZGVyc3RhbmQgY3VycmVudCBzdHJ1Y3R1cmUKICAgIC0gQWRkIGNvbmRpdGlvbmFsIHNlY3Rpb24gdG8gZGlzcGxheSByZWZlcnJlciB3aGVuIHJlZmVycmVkX2J5X2lkIGV4aXN0cwogICAgLSBVc2UgUmVmZXJlbmNlRmllbGQgdG8gZmV0Y2ggYW5kIGRpc3BsYXkgcmVmZXJyZXIgbmFtZSBhcyBjbGlja2FibGUgbGluawogICAgLSBNYXRjaCBleGlzdGluZyBzdHlsaW5nIHBhdHRlcm5zIGluIHRoZSBzaWRlYmFyCiAgICAtIF9SZXF1aXJlbWVudHM6IDIuMSwgMi4yLCAyLjMsIDIuNF8KCi0gWyBdIDUuIFVwZGF0ZSBmYWtlIGRhdGEgZ2VuZXJhdG9yCiAgLSBbIF0gNS4xIE1vZGlmeSBjb250YWN0cyBkYXRhIGdlbmVyYXRvciB0byBpbmNsdWRlIHJlZmVycmVkX2J5X2lkCiAgICAtIFVwZGF0ZSBnZW5lcmF0ZUNvbnRhY3RzIGZ1bmN0aW9uIHRvIGluaXRpYWxpemUgcmVmZXJyZWRfYnlfaWQgYXMgbnVsbAogICAgLSBBZGQgbG9naWMgdG8gYXNzaWduIHJlZmVycmVycyB0byB+MzAlIG9mIGNvbnRhY3RzIHJhbmRvbWx5CiAgICAtIEVuc3VyZSByZWZlcnJlciBJRHMgcmVmZXJlbmNlIHZhbGlkIGVhcmxpZXIgY29udGFjdHMgaW4gdGhlIGFycmF5CiAgICAtIEVuc3VyZSA3MCUgb2YgY29udGFjdHMgaGF2ZSBubyByZWZlcnJlciAobnVsbCB2YWx1ZSkKICAgIC0gX1JlcXVpcmVtZW50czogMS41LCAyLjRfCgotIFsgXSA2LiBWZXJpZnkgaW1wbGVtZW50YXRpb24KICAtIFsgXSA2LjEgVGVzdCBjb250YWN0IGNyZWF0aW9uIHdpdGggcmVmZXJyZXIgc2VsZWN0aW9uCiAgICAtIENyZWF0ZSBhIG5ldyBjb250YWN0IGFuZCBzZWxlY3QgYW4gZXhpc3RpbmcgY29udGFjdCBhcyByZWZlcnJlcgogICAgLSBWZXJpZnkgdGhlIHJlZmVycmVyIGlzIHNhdmVkIGNvcnJlY3RseQogICAgLSBWaWV3IHRoZSBjb250YWN0IGFuZCB2ZXJpZnkgcmVmZXJyZXIgYXBwZWFycyBpbiBzaWRlYmFyCiAgICAtIF9SZXF1aXJlbWVudHM6IDEuMSwgMS4yLCAxLjMsIDEuNCwgMS41LCAyLjEsIDIuMiwgMi4zXwoKICAtIFsgXSA2LjIgVGVzdCBpbmxpbmUgY29udGFjdCBjcmVhdGlvbiBmcm9tIHJlZmVycmVyIGZpZWxkCiAgICAtIENyZWF0ZSBhIG5ldyBjb250YWN0IGFuZCB0eXBlIGEgbm9uLWV4aXN0ZW50IG5hbWUgaW4gcmVmZXJyZXIgZmllbGQKICAgIC0gVmVyaWZ5ICJDcmVhdGUgY29udGFjdCIgb3B0aW9uIGFwcGVhcnMKICAgIC0gQ3JlYXRlIHRoZSBuZXcgY29udGFjdCBpbmxpbmUKICAgIC0gVmVyaWZ5IHRoZSBuZXdseSBjcmVhdGVkIGNvbnRhY3QgaXMgc2VsZWN0ZWQgYXMgcmVmZXJyZXIKICAgIC0gX1JlcXVpcmVtZW50czogMS42LCAxLjcsIDEuOF8KCiAgLSBbIF0gNi4zIFRlc3QgY29udGFjdCBlZGl0aW5nIGFuZCByZWZlcnJlciB1cGRhdGVzCiAgICAtIEVkaXQgYW4gZXhpc3RpbmcgY29udGFjdCBhbmQgY2hhbmdlIHRoZSByZWZlcnJlcgogICAgLSBFZGl0IGEgY29udGFjdCBhbmQgY2xlYXIgdGhlIHJlZmVycmVyIGZpZWxkCiAgICAtIFZlcmlmeSBzZWxmLXJlZmVycmFsIGlzIHByZXZlbnRlZAogICAgLSBfUmVxdWlyZW1lbnRzOiAzLjEsIDMuMiwgMy4zLCAzLjQsIDMuNV8KCiAgLSBbIF0gNi40IFRlc3QgcmVmZXJyZXIgZGVsZXRpb24gYmVoYXZpb3IKICAgIC0gQ3JlYXRlIGEgY29udGFjdCB3aXRoIGEgcmVmZXJyZXIKICAgIC0gRGVsZXRlIHRoZSByZWZlcnJlciBjb250YWN0CiAgICAtIFZlcmlmeSB0aGUgcmVmZXJyZWQgY29udGFjdCdzIHJlZmVycmVyIGZpZWxkIGlzIGNsZWFyZWQgKG51bGwpCiAgICAtIFZlcmlmeSBubyBlcnJvcnMgb2NjdXIgd2hlbiB2aWV3aW5nIHRoZSBjb250YWN0CiAgICAtIF9SZXF1aXJlbWVudHM6IDQuMSwgNC4yLCA0LjMsIDQuNF8KCiAgLSBbIF0gNi41IFRlc3Qgd2l0aCBmYWtlIGRhdGEKICAgIC0gU3dpdGNoIHRvIGZha2VyZXN0IHByb3ZpZGVyCiAgICAtIFZlcmlmeSBjb250YWN0cyBhcmUgZ2VuZXJhdGVkIHdpdGggdmFyaWVkIHJlZmVycmVyIGRhdGEKICAgIC0gVmVyaWZ5IH4zMCUgaGF2ZSByZWZlcnJlcnMgYW5kIH43MCUgaGF2ZSBubyByZWZlcnJlcgogICAgLSBWZXJpZnkgcmVmZXJyZXIgbGlua3Mgd29yayBjb3JyZWN0bHkgaW4gdGhlIFVJCiAgICAtIF9SZXF1aXJlbWVudHM6IDEuNSwgMi4xLCAyLjIsIDIuMywgMi40Xwo=\" target=\"_blank\">Tasks.md<\/a><\/p>\n<p>At first glance, these documents look relevant. But the devil is in the details. Once you start using SDD, a few shortcomings become clear:<\/p>\n<ul>\n<li><strong>Context Blindness<\/strong>: Like coding agents, SDD agents discover context via text search and file navigation. They often miss existing functions that need updates, so reviews by functional and technical experts are still required.<\/li>\n<li><strong>Markdown Madness<\/strong>: SDD produces too much text, especially in the design phase. Developers spend most of their time reading long Markdown files, hunting for basic mistakes hidden in overly verbose, expert-sounding prose. It\u2019s exhausting.<\/li>\n<li><strong>Systematic Bureaucracy<\/strong>: The three-step design process is excessive for most cases. Specs contain many repetitions, imaginary corner cases, and overkill refinements. It feels like they were written by a picky clerk.<\/li>\n<li><strong>Faux Agile<\/strong>: SDD toolkits generate what they call \u201cUser Stories,\u201d but they often misuse the term (e.g. \u201cAs a system administrator, I want the referred by relationship to be stored in the database\u201d is not a user story). It doesn\u2019t cause bugs but it\u2019s distracting.<\/li>\n<li><strong>Double Code Review<\/strong>: The technical specification already contains code. Developers must review this code before running it, and since there will still be bugs, they\u2019ll need to review the final implementation too. As a result, review time doubles.<\/li>\n<li><strong>False Sense of Security<\/strong>: The SDD methodology is meant to keep the coding agent on track, but in practice, agents don\u2019t always follow the spec. In the example above, the agent marked the \u201cverify implementation\u201d task as done without writing a single unit test\u2014it wrote manual testing instructions instead.<\/li>\n<li><strong>Diminishing Returns<\/strong>: SDD shines when starting a new project from scratch, but as the application grows, the specs miss the point more often and slow development. For large existing codebases, SDD is mostly unusable.<\/li>\n<\/ul>\n<p>Most coding agents already have a <a target=\"_blank\" href=\"https:\/\/code.claude.com\/docs\/en\/common-workflows#use-plan-mode-for-safe-code-analysis\">plan mode<\/a> and a <a target=\"_blank\" href=\"https:\/\/www.vtrivedy.com\/posts\/claudecode-tools-reference#11-todowrite\">task list<\/a>. In most cases, SDD adds little benefit. Sometimes, it even increases the cost of feature development.<\/p>\n<p>To be fair, SDD helps agents stay on task and occasionally spots corner cases developers might miss. But the trade-off (spending 80% of your time reading instead of thinking) is, in my opinion, not worth it.<\/p>\n<p>Maybe SDD doesn\u2019t help much today because the toolkits are still young and the document prompts need refinement. If that\u2019s the case, we just need to wait a few months until they improve.<\/p>\n<p>But my personal opinion is that <strong>SDD is a step in the wrong direction<\/strong>. It tries to solve a faulty challenge:<\/p>\n<blockquote>\n<p>\u201cHow do we remove developers from software development?\u201d<\/p>\n<\/blockquote>\n<p>It does so by replacing developers with coding agents and guarding those agents with meticulous planning.<\/p>\n<p>In that sense, SDD reminds me of <a target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Waterfall_model\">the Waterfall model<\/a>, which required massive documentation before coding so that developers could simply translate specifications into code.<\/p>\n<p><img src=\"https:\/\/marmelab.com\/_astro\/waterfall.DdJJ7uzH_1qgaN.webp\" alt=\"Waterfall model\" width=\"570\" height=\"374\" loading=\"lazy\" decoding=\"async\"\/><\/p>\n<p>But developers haven\u2019t been mere executors for a long time, and <a target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Big_design_up_front\">Big Design Up Front<\/a> has proven to fail most of the time because it piles up hypotheses. <strong>Software development is fundamentally a non-deterministic process<\/strong>, so planning doesn\u2019t eliminate uncertainty (see the classic <a target=\"_blank\" href=\"https:\/\/www.cs.unc.edu\/techreports\/86-020.pdf\">No Silver Bullet<\/a> paper).<\/p>\n<p>Also, who is SDD really for? You must be a <strong>business analyst<\/strong> to catch errors during the requirements phase, and a <strong>developer<\/strong> to catch errors during design. As such, it doesn\u2019t solve the problem it claims to address (removing developers), and it can only be used by the rare individuals who master both trades. SDD repeats the same mistake as No Code tools, which promise a \u201cno developer\u201d experience but actually require developers to use them.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/agilealliance.org\/agile101\/\">Agile methodologies<\/a> solved the problem of non-deterministic development by trading predictability for adaptability. I believe they show us a path where coding agents can help us build reliable software, without drowning in Markdown.<\/p>\n<p>Give a coding agent a simple enough problem, and it won\u2019t go off the rails. Instead of translating complex requirements into complex design documents, we should <strong>split complex requirements into multiple simple ones<\/strong>.<\/p>\n<p>I\u2019ve successfully used coding agents to build fairly complex software without ever looking at the code, by following a simple approach inspired by <a target=\"_blank\" href=\"https:\/\/theleanstartup.com\/principles\">the Lean Startup methodology<\/a>:<\/p>\n<ol>\n<li>Identify the next most risky assumption in the product.<\/li>\n<li>Design the simplest experiment to test it.<\/li>\n<li>Develop that experiment. If it fails, go back to #2. Otherwise, repeat starting from #1.<\/li>\n<\/ol>\n<p>Here\u2019s an example: this <a target=\"_blank\" href=\"https:\/\/github.com\/marmelab\/sculpt-3D\">3D sculpting tool<\/a> with adaptive mesh, which I built with <a target=\"_blank\" href=\"https:\/\/claude.com\/product\/claude-code\">Claude Code<\/a> in about 10 hours:<\/p>\n<p><video controls=\"\" autoplay=\"\" playsinline=\"\" muted=\"true\" loop=\"\"><source src=\"https:\/\/marmelab.com\/_astro\/sculpt-3D-demo.THlcK5vM.mp4\" type=\"video\/mp4\"\/><p>Your browser does not support the video tag.<\/p><\/video><\/p>\n<p>I <strong>didn\u2019t write any spec<\/strong>. I just added small features one by one, correcting the software when the agent misunderstood me or when my own idea didn\u2019t work well. You can see my instructions in the <a target=\"_blank\" href=\"https:\/\/github.com\/marmelab\/sculpt-3D\/blob\/main\/claude_code_logs.md\">coding session logs<\/a>: they\u2019re often short and vague, and sometimes lead to dead ends, but that\u2019s fine. When implementing simple ideas is cheap, building in small increments is the fastest way to converge toward a good product.<\/p>\n<p>Agile methodologies freed us from the bureaucracy of waterfall. They showed that close collaboration between product managers and developers eliminates the need for design documents. <strong>Coding agents supercharge Agile<\/strong>, because we can literally write the product backlog and see it being built in real time\u2014no mockups needed!<\/p>\n<p>This approach has one drawback compared to Spec-Driven Development: it doesn\u2019t have a name. \u201cVibe coding\u201d sounds dismissive, so let\u2019s call it <a target=\"_blank\" href=\"https:\/\/marmelab.com\/blog\/2025\/09\/03\/natural-language-developers.html\">Natural Language Development<\/a>.<\/p>\n<p>I do have one frustration, though: coding agents use text, not visuals. Sometimes I want to point to a specific zone, but browser automation tools aren\u2019t good enough (I\u2019m looking at you, <a target=\"_blank\" href=\"https:\/\/github.com\/microsoft\/playwright-mcp\">Playwright MCP Server<\/a>). So if we need new tools to make coding agents more powerful, I think the focus should be on richer visual interactions.<\/p>\n<p>Agile methodologies killed the specification document long ago. Do we really need to bring it back from the dead?<\/p>\n<p>Spec-Driven Development seems born from the minds of CS graduates who know their project management textbooks by heart and dream of removing developers from the loop. I think it\u2019s a missed opportunity to use coding agents to empower a new breed of developers, those who use natural language and build software iteratively.<\/p>\n<p>Let me end with an analogy: coding agents are like the invention of the combustion engine. Spec-Driven Development keeps them confined to locomotives, when we should be building cars, planes, and everything in between. Oh, and just like combustion engines, we should use coding agents sparingly if we care about the environment.<\/p>\n<\/p><\/div>\n\n<br \/><a href=\"https:\/\/marmelab.com\/blog\/2025\/11\/12\/spec-driven-development-waterfall-strikes-back.html\">\u5143\u306e\u8a18\u4e8b\u3092\u78ba\u8a8d\u3059\u308b <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"Spec-Driven Development (SDD) revives the old idea of heavy documentation before coding \u2014 an echo of the Water [&hellip;]","protected":false},"author":1,"featured_media":23821,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-23820","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hatena-blog"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Spec-Driven Development: The Waterfall Strikes Back - \u30dd\u30b1\u30b3\u30f3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/marmelab.com\/blog\/2025\/11\/12\/spec-driven-development-waterfall-strikes-back.html\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spec-Driven Development: The Waterfall Strikes Back - \u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"og:description\" content=\"Spec-Driven Development (SDD) revives the old idea of heavy documentation before coding \u2014 an echo of the Water [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/marmelab.com\/blog\/2025\/11\/12\/spec-driven-development-waterfall-strikes-back.html\" \/>\n<meta property=\"og:site_name\" content=\"\u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-15T19:47:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/11\/large.OJOAet7s.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"860\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"info@pokecon.jp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"info@pokecon.jp\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"7\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/marmelab.com\\\/blog\\\/2025\\\/11\\\/12\\\/spec-driven-development-waterfall-strikes-back.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/23820\\\/\"},\"author\":{\"name\":\"info@pokecon.jp\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"headline\":\"Spec-Driven Development: The Waterfall Strikes Back\",\"datePublished\":\"2025-11-15T19:47:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/23820\\\/\"},\"wordCount\":1368,\"image\":{\"@id\":\"https:\\\/\\\/marmelab.com\\\/blog\\\/2025\\\/11\\\/12\\\/spec-driven-development-waterfall-strikes-back.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/large.OJOAet7s.jpg\",\"articleSection\":[\"\u306f\u3066\u306a\u30d6\u30ed\u30b0\"],\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/23820\\\/\",\"url\":\"https:\\\/\\\/marmelab.com\\\/blog\\\/2025\\\/11\\\/12\\\/spec-driven-development-waterfall-strikes-back.html\",\"name\":\"Spec-Driven Development: The Waterfall Strikes Back - \u30dd\u30b1\u30b3\u30f3\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/marmelab.com\\\/blog\\\/2025\\\/11\\\/12\\\/spec-driven-development-waterfall-strikes-back.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/marmelab.com\\\/blog\\\/2025\\\/11\\\/12\\\/spec-driven-development-waterfall-strikes-back.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/large.OJOAet7s.jpg\",\"datePublished\":\"2025-11-15T19:47:30+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/marmelab.com\\\/blog\\\/2025\\\/11\\\/12\\\/spec-driven-development-waterfall-strikes-back.html#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/marmelab.com\\\/blog\\\/2025\\\/11\\\/12\\\/spec-driven-development-waterfall-strikes-back.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/marmelab.com\\\/blog\\\/2025\\\/11\\\/12\\\/spec-driven-development-waterfall-strikes-back.html#primaryimage\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/large.OJOAet7s.jpg\",\"contentUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/large.OJOAet7s.jpg\",\"width\":1920,\"height\":860},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/marmelab.com\\\/blog\\\/2025\\\/11\\\/12\\\/spec-driven-development-waterfall-strikes-back.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Spec-Driven Development: The Waterfall Strikes Back\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\",\"name\":\"\u30dd\u30b1\u30b3\u30f3\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\",\"name\":\"info@pokecon.jp\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"caption\":\"info@pokecon.jp\"},\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/author\\\/infopokecon-jp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Spec-Driven Development: The Waterfall Strikes Back - \u30dd\u30b1\u30b3\u30f3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/marmelab.com\/blog\/2025\/11\/12\/spec-driven-development-waterfall-strikes-back.html","og_locale":"ja_JP","og_type":"article","og_title":"Spec-Driven Development: The Waterfall Strikes Back - \u30dd\u30b1\u30b3\u30f3","og_description":"Spec-Driven Development (SDD) revives the old idea of heavy documentation before coding \u2014 an echo of the Water [&hellip;]","og_url":"https:\/\/marmelab.com\/blog\/2025\/11\/12\/spec-driven-development-waterfall-strikes-back.html","og_site_name":"\u30dd\u30b1\u30b3\u30f3","article_published_time":"2025-11-15T19:47:30+00:00","og_image":[{"width":1920,"height":860,"url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/11\/large.OJOAet7s.jpg","type":"image\/jpeg"}],"author":"info@pokecon.jp","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"info@pokecon.jp","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"7\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/marmelab.com\/blog\/2025\/11\/12\/spec-driven-development-waterfall-strikes-back.html#article","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/23820\/"},"author":{"name":"info@pokecon.jp","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"headline":"Spec-Driven Development: The Waterfall Strikes Back","datePublished":"2025-11-15T19:47:30+00:00","mainEntityOfPage":{"@id":"https:\/\/pokecon.jp\/job\/23820\/"},"wordCount":1368,"image":{"@id":"https:\/\/marmelab.com\/blog\/2025\/11\/12\/spec-driven-development-waterfall-strikes-back.html#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/11\/large.OJOAet7s.jpg","articleSection":["\u306f\u3066\u306a\u30d6\u30ed\u30b0"],"inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/pokecon.jp\/job\/23820\/","url":"https:\/\/marmelab.com\/blog\/2025\/11\/12\/spec-driven-development-waterfall-strikes-back.html","name":"Spec-Driven Development: The Waterfall Strikes Back - \u30dd\u30b1\u30b3\u30f3","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/#website"},"primaryImageOfPage":{"@id":"https:\/\/marmelab.com\/blog\/2025\/11\/12\/spec-driven-development-waterfall-strikes-back.html#primaryimage"},"image":{"@id":"https:\/\/marmelab.com\/blog\/2025\/11\/12\/spec-driven-development-waterfall-strikes-back.html#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/11\/large.OJOAet7s.jpg","datePublished":"2025-11-15T19:47:30+00:00","author":{"@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"breadcrumb":{"@id":"https:\/\/marmelab.com\/blog\/2025\/11\/12\/spec-driven-development-waterfall-strikes-back.html#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/marmelab.com\/blog\/2025\/11\/12\/spec-driven-development-waterfall-strikes-back.html"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/marmelab.com\/blog\/2025\/11\/12\/spec-driven-development-waterfall-strikes-back.html#primaryimage","url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/11\/large.OJOAet7s.jpg","contentUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/11\/large.OJOAet7s.jpg","width":1920,"height":860},{"@type":"BreadcrumbList","@id":"https:\/\/marmelab.com\/blog\/2025\/11\/12\/spec-driven-development-waterfall-strikes-back.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/pokecon.jp\/job\/"},{"@type":"ListItem","position":2,"name":"Spec-Driven Development: The Waterfall Strikes Back"}]},{"@type":"WebSite","@id":"https:\/\/pokecon.jp\/job\/#website","url":"https:\/\/pokecon.jp\/job\/","name":"\u30dd\u30b1\u30b3\u30f3","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pokecon.jp\/job\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997","name":"info@pokecon.jp","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","caption":"info@pokecon.jp"},"url":"https:\/\/pokecon.jp\/job\/author\/infopokecon-jp\/"}]}},"_links":{"self":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/23820","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/comments?post=23820"}],"version-history":[{"count":1,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/23820\/revisions"}],"predecessor-version":[{"id":23822,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/23820\/revisions\/23822"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media\/23821"}],"wp:attachment":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media?parent=23820"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/categories?post=23820"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/tags?post=23820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}