| ▲ | luc_ 2 hours ago |
| I think in the age of AI coding, these rationales are a bit outdated. And if you think they're not - I'm curious to know why you think so. |
|
| ▲ | GeneralMayhem 2 hours ago | parent | next [-] |
| Not OP, but I think they're way more essential with AI doing a lot of the coding. The biggest thing that AI, even the frontier models, is not great at is staying on topic and actually finishing a project with reasonable priorities instead of ratholing on insignificant details or claiming it's "finished" when it's half done. The most important thing that a good design doc does is specify what's in and out of scope. The second most important thing is to precisely define common vocabulary - what are the important concepts in the problem you're solving, and how should they relate to each other? All of that information serves to ground the day-to-day work in what's important. I find myself starting every Claude session with "read this doc and get familiar with the world, then we'll get to work on a part of it". (The same is true when working with humans, especially but not limited to junior engineers who aren't used to managing a project longer than a week or two. AI coding agents just never grow out of that phase.) |
| |
| ▲ | luc_ an hour ago | parent [-] | | For an entire project? Yes I agree. For a feature or a submodule? I think when you work with claude to develop a plan, it's generally pretty good. I guess my question stems from being rigid how a design doc should be defined, argued over, and then executed by humans. I think some of the details simply don't matter, and if they do, they often can be changed relatively quickly in order to adhere to the new requirement. Try the claude-mem plugin. |
|
|
| ▲ | biofox 2 hours ago | parent | prev | next [-] |
| In the age of AI coding, code is cheap. Getting the requirements and high-level architecture nailed down is where the hard engineering challenges remain. Enter... documentation. |
|
| ▲ | murlax 2 hours ago | parent | prev | next [-] |
| We have debated this a lot in our organization. We are tired of seeing low effort Tech docs that puts the onus on the reader than the writer. I think that the writer should spend at least an order of magnitude of time more than the reader. If not, then the design doc can just be the LLM prompt that generated the document. I have actually resorted back to hand crafting TDDs and focusing on 1-2 page docs. It is a great way to organize my thoughts and create a shared mind space among other engineers. My 2 cents. |
| |
| ▲ | luc_ an hour ago | parent [-] | | Can you summarize your thoughts into a single prompt that, with the context of the codebase, gets expanded to something that makes sense? |
|
|
| ▲ | mtlynch 2 hours ago | parent | prev | next [-] |
| > I think in the age of AI coding, these rationales are a bit outdated. And if you think they're not - I'm curious to know why you think so. Can you share more about how you think AI invalidates these rationales? |
| |
| ▲ | barrkel an hour ago | parent | next [-] | | The biggest thing AI enables is cheap code. That means you could choose to try three (or more) genuine implementations and explore their tradeoffs, instead of making three proposals in a document with one recommended (and the other two usually only provided for contrast). I do think the design is important to keep around - in particular, the constraints, the communication points, schema, tacit things that might not be clear in code. I am not certain that the design should precede the implementation for features below a certain size though. Larger efforts need milestones and collaboration and will have multiple people doing implementation, so there's more need to agree schemas, APIs etc up front there. | | |
| ▲ | mtlynch an hour ago | parent [-] | | > The biggest thing AI enables is cheap code. Agree, but in my experience that doesn't change much about the design doc. I think it's helpful to the author to be able to say to an AI agent, "Hey, put together this quick prototype," and that informs the design doc. But if the goal is to review the design decisions with the team, I don't see how you get around the design doc. I don't want a teammate to send me 10 KLOC of AI-generated code and ask me to review the design. Even if you told AI to try 10 different ideas and pick the best, I don't trust AI to make the same decisions as my human teammates. | | |
| ▲ | barrkel an hour ago | parent | next [-] | | I'm not suggesting using AI generated code as a proposed design. I would try and get an understanding of design space by giving a good agent a high level goal and seeing what it does, then getting a summary of the approach. When you do this several times, especially if you give it a steer on some non-functional requirement, you can compare and contrast different approaches. The idea isn't to prototype so much as to gather information by doing. Prototype, to my mind, suggests other things; shortcuts, stubs, incompleteness. I would actually ask agents to do the whole thing, and find out the full scope. It can be particularly useful revealing side effects. Pair it with code auditors wearing different hats, of course. | |
| ▲ | luc_ an hour ago | parent | prev [-] | | Why do you need to review design decisions with a team anymore? I get the impression that Fable, when well directed, is better than maybe 80% of SWEs. Maybe more. [edit: Yes, I'm maybe baiting other users, but I want to know your honest opinions on this.] | | |
| ▲ | mtlynch 32 minutes ago | parent | next [-] | | I find that LLMs are still worse than humans at limiting complexity, which is one of the most important outcomes of a design review. If I tell a senior SWE that I'm creating a Discourse-like discussion forum, and I want users to have three options for selecting an avatar: (1) import from Gravatar, (2) upload a JPG or SVG or PNG or GIF, or (3) let the user draw their avatar on a canvas, the LLM will happily go and design that and write a 5 KLOC implementation, whereas a good SWE would push back and say, "That's like 10x the complexity of just allowing JPGs. How about we simplify it to say that in v1, the only option is to upload a JPG." I've tried working with Fable/Sol and saying, "Look for features that we can simplify to reduce complexity," and they don't understand. They'll guess at features we can cut entirely, but they fail to see how to capture the essence of the feature without the complexity. I've noticed this a lot with Fable recently. Like I'll say, "Show an error message in the web UI if X fails," and Fable comes back with this like 800 LOC error message generator that has switch-cases and combines inputs from three different sources when all I wanted was something like, "Update failed: database is locked." | |
| ▲ | lirolero 17 minutes ago | parent | prev [-] | | [dead] |
|
|
| |
| ▲ | luc_ an hour ago | parent | prev [-] | | I think we definitely need to have alignment, and documentation to support it. I think this can be at the PRD level, mostly. For many systems, I'd argue technical documentation to understand how the internals are working can simply be handed off to the robots. Or generated on the fly. And if a requirement on the product level is not met, that can be changed under the hood. As the other commenter said, "code is cheap" now. |
|
|
| ▲ | flohofwoe 2 hours ago | parent | prev | next [-] |
| IME when starting a project from scratch, detailed upfront architecture specs are pretty much required to keep LLMs from flailing around too much (unless of course you build another cookie cutter CRUD webpage, those can simply copy paste from the millions of examples on the internet). In a way it's a return to waterfall, just with faster implementation phases. |
|
| ▲ | bcrosby95 2 hours ago | parent | prev | next [-] |
| I think it's more important. AI gets a lot right, but sometimes it gets things wrong. The document might be the only human authored piece of text, and it will help future agents see that something is incorrect in the implementation. |
|
| ▲ | ambicapter 2 hours ago | parent | prev [-] |
| Can you explain in which way they are outdated? |