<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Excerpts on Refactoring English</title><link>https://refactoringenglish.com/excerpts/</link><description>Recent content in Excerpts on Refactoring English</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 24 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://refactoringenglish.com/excerpts/index.xml" rel="self" type="application/rss+xml"/><item><title>How to Write an Effective Software Design Document</title><link>https://refactoringenglish.com/excerpts/write-an-effective-design-doc/</link><pubDate>Wed, 24 Jun 2026 00:00:00 +0000</pubDate><guid>https://refactoringenglish.com/excerpts/write-an-effective-design-doc/</guid><description>&lt;!-- markdownlint-disable no-bare-urls -->
&lt;p>A good design doc can save you years of development time. Writing a design doc forces you to think through important decisions before you waste time on the wrong implementation or paint yourself into a corner. It&amp;rsquo;s also the best way to coordinate design decisions among teammates and partner teams.&lt;/p>
&lt;p>I&amp;rsquo;ve written design docs as a developer at Google, Microsoft, and within &lt;a href="https://mtlynch.io/projects/">my own companies&lt;/a>. The specifics vary, but the underlying principles remain the same. A design doc should articulate the hard problems you&amp;rsquo;re solving and help your teammates give you feedback.&lt;/p></description></item><item><title>Why Improve Your Writing?</title><link>https://refactoringenglish.com/excerpts/why-improve-your-writing/</link><pubDate>Tue, 03 Mar 2026 00:00:00 +0000</pubDate><guid>https://refactoringenglish.com/excerpts/why-improve-your-writing/</guid><description>&lt;p>I&amp;rsquo;ve worked as a developer for 20 years, and I&amp;rsquo;ve always cared about clear writing. When I join a new team, the first thing I do is ask to update the onboarding documents. As I ramp up on the team, I document what I learn and encourage my teammates to do the same.&lt;/p>
&lt;p>Sometimes, other developers ask me why I invest so much into writing. Programming is technical, so why spend time on a &amp;ldquo;soft skill&amp;rdquo; like writing? Isn&amp;rsquo;t that why we have technical writers and product managers?&lt;/p></description></item><item><title>How to Get Meaningful Feedback on Your Design Document</title><link>https://refactoringenglish.com/excerpts/useful-feedback-on-design-docs/</link><pubDate>Mon, 03 Nov 2025 00:00:00 +0000</pubDate><guid>https://refactoringenglish.com/excerpts/useful-feedback-on-design-docs/</guid><description>&lt;p>You&amp;rsquo;ve spent weeks carefully &lt;a href="https://refactoringenglish.com/excerpts/write-an-effective-design-doc/">writing a design document&lt;/a> for your software project, but what happens next? How can you get useful feedback about it from your teammates? How do you prevent your design review from dragging on for months?&lt;/p>
&lt;p>I&amp;rsquo;ve been through many design reviews in my career as both the author and reviewer, and I have a special fondness for effective reviews. Through trial and error, I&amp;rsquo;ve learned techniques that help the review process move smoothly and yield material improvements to the design.&lt;/p></description></item><item><title>Underused Techniques for Effective Emails</title><link>https://refactoringenglish.com/excerpts/techniques-for-writing-emails/</link><pubDate>Wed, 16 Jul 2025 00:00:00 +0000</pubDate><guid>https://refactoringenglish.com/excerpts/techniques-for-writing-emails/</guid><description>&lt;style>
 blockquote {
 font-style: normal;
 }

 .pm-email blockquote {
 border-left: 4px solid purple !important;
 }

 .good-email blockquote {
 border-left: 4px solid #02c700 !important;

 h3 {
 margin-top: 1rem;
 font-size: 1.6em;
 font-weight: bold;
 }
 }

 .bad-email blockquote {
 border-left: 4px solid red !important;
 }

 p img {
 margin-top: 3rem !important;
 margin-bottom: 1rem !important;
 }
&lt;/style>
&lt;p>For software developers, there&amp;rsquo;s tremendous value in writing effective emails. Good emails save time, reduce misunderstandings, and earn you recognition within your company.&lt;/p></description></item><item><title>How to Write Compelling Software Release Announcements</title><link>https://refactoringenglish.com/excerpts/release-announcements/</link><pubDate>Wed, 25 Jun 2025 00:00:00 +0000</pubDate><guid>https://refactoringenglish.com/excerpts/release-announcements/</guid><description>&lt;p>A release announcement showcases how the user&amp;rsquo;s experience is better today than it was yesterday. That sounds obvious, but most release announcements seem to forget that there&amp;rsquo;s a user at all.&lt;/p>
&lt;p>So many release announcements just enumerate new features in a way that&amp;rsquo;s totallly divorced from how real people use the software. The announcement is essentially just a changelog with better writing.&lt;/p>
&lt;p>For example, here&amp;rsquo;s a &amp;ldquo;changelog&amp;rdquo; style of announcing a new feature:&lt;/p></description></item><item><title>How to Write Blog Posts that Developers Read</title><link>https://refactoringenglish.com/excerpts/write-blog-posts-developers-read/</link><pubDate>Thu, 27 Mar 2025 00:00:00 +0000</pubDate><guid>https://refactoringenglish.com/excerpts/write-blog-posts-developers-read/</guid><description>&lt;p>I recently spoke to a developer who tried blogging but gave up because nobody was reading his posts. I checked out his blog, and it was immediately obvious why he didn&amp;rsquo;t have any readers.&lt;/p>
&lt;p>The developer had interesting insights, but he made so many mistakes in presenting his ideas that he was driving everyone away. The tragedy was that these errors were easy to fix. Once you learn to recognize them, they feel obvious, but some bloggers make these mistakes for years.&lt;/p></description></item><item><title>How to Write Useful Commit Messages</title><link>https://refactoringenglish.com/excerpts/commit-messages/</link><pubDate>Fri, 07 Mar 2025 00:00:00 +0000</pubDate><guid>https://refactoringenglish.com/excerpts/commit-messages/</guid><description>&lt;p>Effective commit messages simplify the code review process and aid long-term code maintenance. Unfortunately, commit messages don&amp;rsquo;t get much respect, so the world is littered with useless messages like &lt;code>Fix bug&lt;/code> or &lt;code>Update UI&lt;/code>.&lt;/p>
&lt;p>There&amp;rsquo;s no widespread agreement about what makes a good commit message or why it&amp;rsquo;s useful, so I&amp;rsquo;m sharing my thoughts based on my 20 years of experience as a software developer.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#an-example-of-a-useful-commit-message">An example of a useful commit message&lt;/a>&lt;/li>
&lt;li>&lt;a href="#whats-the-point-of-a-commit-message">What&amp;rsquo;s the point of a commit message?&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#helps-your-code-reviewer-approach-the-change">Helps your code reviewer approach the change&lt;/a>&lt;/li>
&lt;li>&lt;a href="#communicates-changes-to-teammates-downstream-clients-and-end-users">Communicates changes to teammates, downstream clients, and end-users&lt;/a>&lt;/li>
&lt;li>&lt;a href="#facilitates-future-bug-investigations">Facilitates future bug investigations&lt;/a>&lt;/li>
&lt;li>&lt;a href="#provides-information-to-development-tools">Provides information to development tools&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#organizing-information-in-a-commit-message">Organizing information in a commit message&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#put-the-most-important-information-first">Put the most important information first&lt;/a>&lt;/li>
&lt;li>&lt;a href="#use-headings-to-structure-long-commit-messages">Use headings to structure long commit messages&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#what-should-the-commit-message-include">What should the commit message include?&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#a-descriptive-title">A descriptive title&lt;/a>&lt;/li>
&lt;li>&lt;a href="#a-summary-of-how-the-change-impacts-clients-and-end-users">A summary of how the change impacts clients and end-users&lt;/a>&lt;/li>
&lt;li>&lt;a href="#the-motivation-for-the-change">The motivation for the change&lt;/a>&lt;/li>
&lt;li>&lt;a href="#breaking-changes">Breaking changes&lt;/a>&lt;/li>
&lt;li>&lt;a href="#external-references">External references&lt;/a>&lt;/li>
&lt;li>&lt;a href="#justifications-for-new-dependencies">Justifications for new dependencies&lt;/a>&lt;/li>
&lt;li>&lt;a href="#cross-references-to-issues-or-other-changes">Cross-references to issues or other changes&lt;/a>&lt;/li>
&lt;li>&lt;a href="#summaries-of-bugs-or-external-references">Summaries of bugs or external references&lt;/a>&lt;/li>
&lt;li>&lt;a href="#testing-instructions">Testing instructions&lt;/a>&lt;/li>
&lt;li>&lt;a href="#testing-limitations">Testing limitations&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-you-learned">What you learned&lt;/a>&lt;/li>
&lt;li>&lt;a href="#alternative-solutions-you-considered">Alternative solutions you considered&lt;/a>&lt;/li>
&lt;li>&lt;a href="#searchable-artifacts">Searchable artifacts&lt;/a>&lt;/li>
&lt;li>&lt;a href="#screenshots-or-videos">Screenshots or videos&lt;/a>&lt;/li>
&lt;li>&lt;a href="#rants-and-stories">Rants and stories&lt;/a>&lt;/li>
&lt;li>&lt;a href="#anything-youre-tempted-to-explain-outside-of-the-commit-message">Anything you&amp;rsquo;re tempted to explain outside of the commit message&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#what-should-the-commit-description-leave-out">What should the commit description leave out?&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#information-thats-obvious-from-the-code">Information that&amp;rsquo;s obvious from the code&lt;/a>&lt;/li>
&lt;li>&lt;a href="#critical-details-about-maintaining-the-code">Critical details about maintaining the code&lt;/a>&lt;/li>
&lt;li>&lt;a href="#short-term-discussion">Short-term discussion&lt;/a>&lt;/li>
&lt;li>&lt;a href="#preview-urls-and-build-artifacts">Preview URLs and build artifacts&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#further-reading">Further reading&lt;/a>&lt;/li>
&lt;/ul>
&lt;!-- markdownlint-disable no-emphasis-as-header -->
&lt;h2 id="an-example-of-a-useful-commit-message">An example of a useful commit message&lt;/h2>
&lt;p>Here&amp;rsquo;s an example of a useful, effective commit message:&lt;/p></description></item><item><title>Passive Voice Considered Harmful</title><link>https://refactoringenglish.com/excerpts/passive-voice-considered-harmful/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://refactoringenglish.com/excerpts/passive-voice-considered-harmful/</guid><description>&lt;p>Your high school English teachers probably warned you that passive voice is dangerous and forbidden. Then, when you were an adult, some guy in a leather jacket told you that passive voice is cool and should be used whenever it&amp;rsquo;s desired.&lt;/p>
&lt;p>Well, the tide has turned again. If you&amp;rsquo;re a software developer, stop using the passive voice.&lt;/p>
&lt;h2 id="wait-whats-passive-voice">Wait, what&amp;rsquo;s passive voice?&lt;/h2>
&lt;p>In English, sentences can have one of two structures: passive voice or active voice.&lt;/p></description></item><item><title>Rules for Writing Software Tutorials</title><link>https://refactoringenglish.com/excerpts/rules-for-software-tutorials/</link><pubDate>Thu, 02 Jan 2025 00:00:00 +0000</pubDate><guid>https://refactoringenglish.com/excerpts/rules-for-software-tutorials/</guid><description>&lt;p>Most software tutorials are tragically flawed.&lt;/p>
&lt;p>Tutorials often forget to mention some key detail, preventing readers from replicating the author&amp;rsquo;s process. Other times, the author brings in hidden assumptions that don&amp;rsquo;t match their readers&amp;rsquo; expectations.&lt;/p>
&lt;p>The good news is that it&amp;rsquo;s easier than you think to write an exceptional software tutorial. You can stand out in a sea of mediocre guides by following a few simple rules.&lt;/p>
&lt;h2 id="rules">Rules&lt;/h2>
&lt;ol>
&lt;li>&lt;a href="#write-for-beginners">Write for beginners&lt;/a>&lt;/li>
&lt;li>&lt;a href="#promise-a-clear-outcome-in-the-title">Promise a clear outcome in the title&lt;/a>&lt;/li>
&lt;li>&lt;a href="#explain-the-goal-in-the-introduction">Explain the goal in the introduction&lt;/a>&lt;/li>
&lt;li>&lt;a href="#show-the-end-result">Show the end result&lt;/a>&lt;/li>
&lt;li>&lt;a href="#make-code-snippets-copypasteable">Make code snippets copy/pasteable&lt;/a>&lt;/li>
&lt;li>&lt;a href="#use-long-versions-of-command-line-flags">Use long versions of command-line flags&lt;/a>&lt;/li>
&lt;li>&lt;a href="#separate-user-defined-values-from-reusable-logic">Separate user-defined values from reusable logic&lt;/a>&lt;/li>
&lt;li>&lt;a href="#use-unambiguous-example-values">Use unambiguous example values&lt;/a>&lt;/li>
&lt;li>&lt;a href="#spare-the-reader-from-mindless-tasks">Spare the reader from mindless tasks&lt;/a>&lt;/li>
&lt;li>&lt;a href="#keep-your-code-in-a-working-state">Keep your code in a working state&lt;/a>&lt;/li>
&lt;li>&lt;a href="#teach-one-thing">Teach one thing&lt;/a>&lt;/li>
&lt;li>&lt;a href="#dont-try-to-look-pretty">Don&amp;rsquo;t try to look pretty&lt;/a>&lt;/li>
&lt;li>&lt;a href="#minimize-dependencies">Minimize dependencies&lt;/a>&lt;/li>
&lt;li>&lt;a href="#specify-filenames-clearly">Specify filenames clearly&lt;/a>&lt;/li>
&lt;li>&lt;a href="#use-consistent-descriptive-headings">Use consistent, descriptive headings&lt;/a>&lt;/li>
&lt;li>&lt;a href="#demonstrate-that-your-solution-works">Demonstrate that your solution works&lt;/a>&lt;/li>
&lt;li>&lt;a href="#link-to-a-complete-example">Link to a complete example&lt;/a>&lt;/li>
&lt;/ol>
&lt;h2 id="write-for-beginners">Write for beginners&lt;/h2>
&lt;p>The most common mistake tutorials make is explaining beginner-level concepts using expert-level terminology.&lt;/p></description></item></channel></rss>