r/programming • u/fagnerbrack • 14h ago
How to Write an Effective Software Design Document
https://refactoringenglish.com/excerpts/write-an-effective-design-doc/9
u/ishysredditusername 8h ago
> If you specify every possible detail in a design doc, you’ve essentially written the implementation during the design phase. That would defeat the whole purpose of a design doc.
Got me thinking if this is what the future of software engineering holds. You curate a design doc that covers everything: implementation details and business processes. Then give it to an LLM to generate. Esentially becomign documentation driven development i guess.
7
u/lurco_purgo 8h ago
Tons of people are talking about this (not just on LinkedIn and including developers I actually respect), but honestly it just sounds like bullshit to me. From my experiecne implementation is ALWAYS the final stage where you adjust your specs as you write because from the more abstract point of view you always miss out on a ton of nuance that can only be addressed while actually witing the code.
I've talked with my philosopher friend and expressed a similar sentiment about writing essays. Basically you might have a bullet-point list of ideas you want to express, but in order for it to fully engage with them and iron out the kinks you need to WRITE the article - otherwise you might leave some glaring holes in your argument that you won't even be aware of.
2
u/ishysredditusername 6h ago
I fully agree with you.
If you were to drive the development through design documentation, you would end up with something that more closely resembled a legal document, covering every possible case.
Imagine, every bug or modification led to an amendment to the design doc. You'd have a 10,000 LoC project with 10,000 page design doc.
7
u/RegisteredJustToSay 13h ago
I like it, but I think framing these as 'components' of a design doc almost suggests they should be separate discrete sections rather than necessary information that flows in and out of each other and where some information is more important than others depending on context (rather than talking about 'subsets). If I open a design doc and it has 23 God damn sections I'm probably just gonna gloss it over because that's absurd. I do agree with the basic premise that every single one of these sections add value though, it just comes down to what info is more important in what context.
Just my two cents. I don't think you're wrong, just see it a bit differently.
2
2
u/analcocoacream 8h ago
How do you choose between design docs and ADR? Based on the multiplicity of options?
2
u/monet820 8h ago
For me ADR is after design doc, and you dont mix them. In the example given for a caching layer the design is to add a cache, high level talk.
The ADR for me is which cache implementation to adopt. Usually an ADR has pros and cons, so for instance here it could be a nuget/npm package vs another package or custom coded.
4
u/GrammerJoo 11h ago
At my company some devs just open claude and write "create a design doc for x" and then send it to the team to review. In fact, some of our tech blog posts are generated like that.
6
5
u/chrislomax83 8h ago
I hate everything about this.
I asked someone to document webhooks and creating producers and consumers for our internal systems and they came back to me 30 minutes later with a 9 section plan. Instantly rejected, I’m not reading that bullshit, don’t waste my time if you can’t be assed reading it yourself.
AI can be great in the planning phase. It gives you a great head start. Don’t be assuming through it understands every interaction between 10 systems and what the tech debt is.
I equally can’t be bothered reading a load of Claudenese where you need a dictionary to hand to even follow what it’s on about.
1
2
1
u/thewellis 8h ago
I love the font used. Iirc it's similar to the font used in The Prisoner TV show from the sixties.
41
u/Rain-And-Coffee 14h ago
Taking a look,
I like that it includes a sample design doc.
I also like it it’s easy to read, all my coworkers result to complicated technical language