Live data from Hacker News

Design Docs at Google

industrialempathy.com

91–100 of 191 posts

Re: Design Docs at Google

#91

Earlier quoted context omitted.

If the design is the code, then what is a bug? There is a separate model, whether written down or not, of what the code must do. That is the deaign.

I think they were using "design" as akin to the blueprint to the building. I totally agree with them that in that sense, the code is the blueprint, not the building. The execution of the program is the analogy to the actual construction: the builder (computer) takes the blueprint (code) and builds the building (executes the program) based on it. The power of computers is that the "building" (execution) part is essent…

Much of this is captured extremely well in Fowler's The New Methodology.

https://martinfowler.com/articles/newMethodology.html

Re: Design Docs at Google

#92

Does anyone know where to find real examples of design docs, possibly following this guide? I don't mean toy examples but something that's actually used by real people/orgs. My workplace has design docs but they're full of made-up words, so I'm pretty burned out by this kind of thing.

This is one I follow related to adding multi-window support to Flutter: https://flutter.dev/go/desktop-multi-window-support

I also found some of the chromium design docs quite interesting: https://www.chromium.org/developers/design-documents

Re: Design Docs at Google

#93

Earlier quoted context omitted.

> Navigating organisations and achieving consensus between a lot of teams/technologies is a huge part of it I think this is a major benefit of design docs - they are a way to extend your engineering influence beyond your own individual output. If you write a design, and your design allows you and three other engineers to coordinate your efforts, then your engineering output is now "I coordinated a team to build somet…

> ... uncovering blockers as early as possible is critical when coordinating a bunch of entities. I think the challenge for me has always been that the "uncover blockers" piece means building one or more small prototypes to prove out the capabilities of the dependencies, check feasibility, etc. So the building of these prototypes occurs prior to or in parallel with the authoring of the design doc, but then at a certa…

It's also important to set clear expectations with stakeholders who have seen the prototype and may think the project is 90% done, when in fact there's still 90% more to go in making that prototype production-ready.

Re: Design Docs at Google

#94

Does anyone know where to find real examples of design docs, possibly following this guide? I don't mean toy examples but something that's actually used by real people/orgs. My workplace has design docs but they're full of made-up words, so I'm pretty burned out by this kind of thing.

Python's PEPs (Python Enhancement Proposals) are pretty good examples of design docs that describe the problem, proposed solution, and rationale: https://www.python.org/dev/peps/

Re: Design Docs at Google

#95

Author here. Let me know if you have questions or feedback.

Hi Malte!

Great article. I've agree that design docs are great part of what defines engineering culture at Google. I'd recommend to anybody who will listen that their company should do it also.

Lots of people in this thread were burned by waterfall-esque requirements documents or formal specification, and I'd like to point out why I think design documents (at Google at least) are different and more effective than those things.

I like to think of design docs as not an artifact produced by a project but as a communication mechanism of a team. You have an idea and you write down:

* What are you trying to do?

* Why are you doing to do it?

* How are you going to do it?

* What considerations have you made?

Then you socialize it to one or two reviewers, who ask a lot of questions, then you take it to your team, who ask (relatively fewer) questions. The socialization part is key to the entire system. As you note:

"The primary value that such reviews add is that they form an opportunity for the combined experience of the organization to be incorporated into a design. Most consistently, ensuring that designs take cross-cutting concerns such as observability, security and privacy into account is something that can be ensured in a review stage. The primary value of the review isn’t that issues get discovered per-se, but rather that this happens relatively early in the development lifecycle when it is still relatively cheap to make changes."

If I printed out your article to show people, this is the part I would highlight in yellow.

Contrast this with formal doc systems that rarely capture the "why" and "why nots". Future maintainers have a document that captures the thinking at the time, rather than trying to document the full implementation plan of a system.

Hopefully this adds some context to those who've been burnt by more traditional approaches.

edit: typos

Re: Design Docs at Google

#96

Earlier quoted context omitted.

>If code is the bricks and mortar, then these docs are the blueprints. That analogy falls apart quickly. Design docs aren’t specific enough to be analogous to blueprints. You can give a set of blueprints to 3 different construction firms and get fundamentally the same building. Try giving design docs to 3 different development shops and see what happens. The problem is that the only way to get to that level of specif…

This is something that should be taught to folks while they're still in school. The "blueprint analogy" has baked in the idea that there's a "design phase" and a "construction phase" and that these are often discreet parties. Nothing could be more incorrect when it comes to software. In software, the design is the code. The compiler/interpreter are the construction of the system.

> In software, the design is the code. The compiler/interpreter are the construction of the system.

That's IMO a pedantic view. Yes, ok, but when I design software I describe it's high-level characteristics, more like describing the plot of a book than the specific words in a book and the what the characters say to each other.

I'd say there are many levels of design. Code is the last.

Re: Design Docs at Google

#97

Design docs are one of my favourite things about software engineering. If code is the bricks and mortar, then these docs are the blueprints. I know this is fairly controversial, but our jobs isn't just to write code. Navigating organisations and achieving consensus between a lot of teams/technologies is a huge part of it. Design docs are a way to get all of that out of the way _before_ writing thousands of lines of c…

One thing I've noticed as I've got more experienced was that when I started out, a PM or senior engineer would give me a task to do.

I achieved the outcome, mostly with bad to average code that slowly improved over time.

When I finally understood the domain to make bigger scoped decisions, I started doing design docs beforehand and my code continued to improve greatly.

Now when assigning out work to more junior engineers I find myself giving them a high-level design doc, with some detail missing, they deliver higher quality work than I did at that stage, and they also seem to upskill faster.

This however depends on me making the right decisions at this stage, which is not always the case, so not fool-proof but an overall software quality improvement has definitely occured.

Re: Design Docs at Google

#98
post #82

Earlier quoted context omitted.

But isn’t that better than code (especially if working) that gets scratched? I think designs that are scratched indicate you don’t understand the value you contribute to your company (or that management sees in you) which should be the root concern for the career development.

Yea, designs are cheaper then actual implementation. It’s not always the case that the engineer doesn’t understand the value but most times it’s about the management/PM can’t get things finalized over a long period of time. Sometimes I feel it’s just politics in some cases. Don’t you ever need to fight to do some high visibility work?

This is a good question. It's funny, I'm the technical co-founder at my startup, so I hadn't thought to make the distinction between high and low visibility work. I guess we're small enough that I think about it as high impact/cost and low impact/cost. My non-technical co-founder will praise an engineer for their work when the product metrics are moved, which has happened for mundane tasks, too. I tend to notice the craftsmanship more, but I think it's right for attention to be given to the impact.

I have also been at a larger company, so you bring up a good point about fighting for work. I also think this is right.

1. If you win the fight for high visibility work, that's a good sign that you're the right person for the job. It wouldn't make sense for the company to have you work on something for your own benefit over the company.

2. You may opt not to fight and discover other problems to work on that have strong potential for being high visibility. Maybe that's something relegated to PMs or eng management, where the engineer might feel helpless to the given assignments, but that's more of a culture problem. I think politics increases when there's less work/budget/praise than there are people, which is more situational than cultural, in my opinion.

Re: Design Docs at Google

#99

Earlier quoted context omitted.

> Give up and shut down? In some cases, yes. That's exactly what needs to happen. If the business model is dependent upon the "conclave of wizards," then they are a critical path resource, just like a major supplier or business partner, which, if withdrawn, could doom the company just as certainly. If the corporation refuses to treat that resource as a valuable, critical resource, then they don't deserve to stay in b…

Indeed. So the correct thing for a business to do for both its short- and long-term survival (since we can't know a-priori whether the conclave of wizards will be stable) is to minimize the odds of forming one in the first place. Businesses are structures that minimize risk. A core set of specialists who can't be replaced without tanking the business's performance is a risk. And a hard-to-quantify one at that. Unless…

But...those "wizards" can do some unique stuff. Most of the time, the only reason to have them, is to do stuff that a "generic" team can't do.

Re: Design Docs at Google

#100

Do we have any templates for design docs created by Google, Facebook, Twitter etc.,? Not to be negative - My problem is there is no spec/standard template for design docs (like someone compared it with Blueprints). If we have a template approved by industry leaders - it will be convenient. Otherwise everyone creates them in their own way - convenient for their use cases. But this will miss the consistency and all nec…

The canonical Google design doc template is called the Bluedoc. An example is here: https://docs.google.com/document/d/18hYAQCTsDgaFUo-VJGhT0Uqy... Delete everything but the headers and you have a bluedoc.

There are also a few domain-specific headers in-use: Privacy, Ethics and Security are very common to see.
Post reply on HN