Software Engineering at Google: Lessons Learned from Programming Over Time
Rate it:
Open Preview
31%
Flag icon
WHO, WHAT, WHEN, WHERE, and WHY Most technical documentation answers a “HOW” question. How does this work? How do I program to this API? How do I set up this server? As a result, there’s a tendency for software engineers to jump straight into the “HOW” on any given document and ignore the other questions associated with it: the WHO, WHAT, WHEN, WHERE, and WHY. It’s true that none of those are generally as important as the HOW — a design document is an exception because an equivalent aspect is often the WHY — but without a proper framing of technical documentation, documents end up confusing. ...more
This highlight has been truncated due to consecutive passage length restrictions.
32%
Flag icon
engineers have gradually accepted that testing is necessary for any code change, no matter how small. As well, testing tooling is robust, varied and plugged into an engineering workflow at various points. Documentation is not ingrained at nearly the same level.
32%
Flag icon
To change the quality of engineering documentation, engineers — and the entire engineering organization — need to accept that they are both the problem and the solution. Rather than throw up their hands at the state of documentation, they need to realize that producing quality documentation is part of their job and saves them time and effort in the long run. For any piece of code that you expect to live more than a few months, the extra cycles you put in documenting that code will not only help others, it will help you maintain that code as well.
39%
Flag icon
DAMP is not a replacement for DRY; it is complementary to it. Helper methods and test infrastructure can still help make tests clearer by making them more concise, factoring out repetitive steps whose details aren’t relevant to the particular behavior being tested. The important point is that such refactoring should be done with an eye toward making tests more descriptive and meaningful, and not solely in the name of reducing repetition.