<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Ben Balter</title><description>Engineering leadership, open source, and showing your work</description><link>https://ben.balter.com/</link><item><title>Open and async on the Overcommitted podcast</title><link>https://ben.balter.com/2026/07/28/overcommitted-open-and-async/</link><guid isPermaLink="true">https://ben.balter.com/2026/07/28/overcommitted-open-and-async/</guid><description>What makes a remote engineering team work isn&apos;t where people sit—it&apos;s how they communicate. A conversation on the Overcommitted podcast about async-first culture, decision durability, and the ideas behind Open and Async.</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2026/07/28/overcommitted-open-and-async/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a id=&quot;quote-decision-without-a-url&quot; href=&quot;#quote-decision-without-a-url&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;decision-without-a-url&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;A decision without a URL gets relitigated forever.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; What makes a &lt;a href=&quot;/2026/07/21/open-and-async/&quot;&gt;remote engineering team&lt;/a&gt; actually work comes down to how you communicate, not where you sit. Most of it is a set of habits you can build.&lt;/p&gt;
&lt;p&gt;Those habits are the backbone of &lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-overcommitted-post&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;Open and Async&lt;/em&gt;&lt;/a&gt;, and the throughline of a conversation with Bethany Janos and Erika Eggemeyer on the &lt;a href=&quot;https://overcommitted.dev/open-and-async-work-remote-engineering-culture-with-ben-balter/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Overcommitted&lt;/a&gt; podcast: why &lt;a href=&quot;/2022/03/17/why-async/&quot;&gt;async is the operating system&lt;/a&gt; and remote is the hardware, how to run a stack where chat coordinates but issues and discussions carry the &lt;a href=&quot;/2015/11/12/why-urls/&quot;&gt;durable decisions&lt;/a&gt; you can point to six months later, and &lt;a href=&quot;/2026/03/04/thirteen-years-at-github/&quot;&gt;why you measure outcomes instead of keystrokes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The conversation runs to the nerdier end too—the absurd, over-engineered &lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Continuous Integration—automatically building and testing every change&quot; title=&quot;Continuous Integration—automatically building and testing every change&quot; tabindex=&quot;0&quot;&gt;CI&lt;/abbr&gt; pipeline behind the book (a rabbit hole that’s getting its own post soon), the aspirational automation that syncs my standing desk to my calendar, and where AI actually belongs when you write.&lt;/p&gt;
&lt;p&gt;You can listen to the full conversation &lt;a href=&quot;https://overcommitted.dev/open-and-async-work-remote-engineering-culture-with-ben-balter/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;over on the overcommitted website&lt;/a&gt;, or wherever you get your podcasts.&lt;/p&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;Liked this post? It&apos;s now a book.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>Open and Async: the remote-work playbook is out</title><link>https://ben.balter.com/2026/07/21/open-and-async/</link><guid isPermaLink="true">https://ben.balter.com/2026/07/21/open-and-async/</guid><description>Open and Async is the practical playbook for making remote and distributed work actually work—two habits, working in the open and communicating asynchronously, drawn from a decade of remote-first lessons at GitHub.</description><pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2026/07/21/open-and-async/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Most companies didn’t go remote. They shipped everyone a laptop, bolted Zoom onto the same approval chains, and called it a day. &lt;a id=&quot;quote-q-that-wasnt-remote-workit-was&quot; href=&quot;#quote-q-that-wasnt-remote-workit-was&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;q-that-wasnt-remote-workit-was&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;That wasn’t remote work—it was office work in sweatpants: the same meetings, the same status theater, the same “quick syncs,” just piped through a webcam.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a id=&quot;quote-work-from-home-not-remote&quot; href=&quot;#quote-work-from-home-not-remote&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;work-from-home-not-remote&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;Working from home ≠ working remotely.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; There’s a world of difference between being forced out of the office and intentionally building a distributed, async culture. That difference is what &lt;em&gt;Open and Async&lt;/em&gt; is about—and as of today, you can &lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-launch-post&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;read it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-launch-post&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;Open and Async&lt;/em&gt;&lt;/a&gt; is the opinionated, practical playbook for the two practices that make distributed work actually work: &lt;strong&gt;working in the open&lt;/strong&gt; and &lt;a href=&quot;/2022/03/17/why-async/&quot;&gt;&lt;strong&gt;communicating asynchronously&lt;/strong&gt;&lt;/a&gt;. Async is the operating system; remote is the hardware. It’s how the next generation of tech leaders already think—and it’s a learnable skill for everyone else.&lt;/p&gt;
&lt;p&gt;If you’ve spent any time on this blog, the argument will feel familiar—the book grew out of these posts. It’s where the scattered pieces finally become one ordered playbook: the full case, start to finish, with the connective tissue no single post ever had room for. Everything you’ve read here, plus the two-thirds that never made it to the blog.&lt;/p&gt;
&lt;h2 id=&quot;what-separates-teams-that-thrive&quot;&gt;What separates teams that thrive&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#what-separates-teams-that-thrive&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;More than a decade of remote-first work at &lt;a href=&quot;/2026/03/04/thirteen-years-at-github/&quot;&gt;GitHub made one thing clear&lt;/a&gt;: the tooling was never what separated the teams that thrived from the ones that just survived. Companies would adopt those workflows wholesale—add issues and pull requests on top of a hierarchy-driven approval process—and wonder why nothing changed. Tools: right. Bottlenecks: intact. The result was Zoom fatigue plus all the old dysfunction, now faster.&lt;/p&gt;
&lt;p&gt;The teams that pulled ahead did something different. They gave every decision &lt;a href=&quot;/2015/11/12/why-urls/&quot;&gt;a URL&lt;/a&gt; so context survived reorgs and departures. They treated meetings as escalation, not default. They &lt;a href=&quot;/2022/02/16/leaders-show-their-work/&quot;&gt;worked loudly&lt;/a&gt; so impact was visible without anyone performing busyness. None of it was intuition—it was a set of repeatable practices, and &lt;em&gt;Open and Async&lt;/em&gt; is those practices, written down so you can put them to work.&lt;/p&gt;
&lt;h2 id=&quot;who-its-for&quot;&gt;Who it’s for&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#who-its-for&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Two audiences, both in remote and distributed work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Managers&lt;/strong&gt;—build teams that ship without constant synchronous coordination, and retain your best people by respecting their time, focus, and intelligence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Individual contributors&lt;/strong&gt;—become visible, effective, and promotable on the strength of your work, not the luck of your seating chart. Interviewing at a remote-first company? This is the playbook they wish you’d already read.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;whats-inside&quot;&gt;What’s inside&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#whats-inside&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A few of the things you’ll learn how to do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/2023/04/20/meetings-are-a-point-of-escalation/&quot;&gt;Treat meetings as a point of escalation, not the default&lt;/a&gt;—and reclaim the hours you’re losing to “quick syncs.”&lt;/li&gt;
&lt;li&gt;Give every decision a URL so context survives reorgs, departures, and Slack purges.&lt;/li&gt;
&lt;li&gt;Run 1:1s, weekly reports, and career conversations that aren’t a tax on everyone’s time.&lt;/li&gt;
&lt;li&gt;Lead—whether or not you have direct reports—by showing your work.&lt;/li&gt;
&lt;li&gt;Hire, onboard, and transition teams to remote-first work without losing what made them good.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It’s 575 pages, and the method ships as more than a manuscript. There’s even a &lt;a href=&quot;https://github.com/open-and-async/mcp&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Model Context Protocol (MCP) server&lt;/a&gt; that drops the book’s async-first practices straight into your editor, so an AI agent can draft a decision doc or pressure-test a status update against the same rubric the book teaches.&lt;/p&gt;
&lt;p&gt;&lt;a id=&quot;quote-stop-digitizing-the-office&quot; href=&quot;#quote-stop-digitizing-the-office&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;stop-digitizing-the-office&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;Stop digitizing the office. Start building something better.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;booklaunchcta&gt;&lt;/booklaunchcta&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;Liked this post? It&apos;s now a book.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>Work loudly</title><link>https://ben.balter.com/2026/07/14/work-loudly/</link><guid isPermaLink="true">https://ben.balter.com/2026/07/14/work-loudly/</guid><description>In an office, some of your visibility is free. Go remote and it drops to zero. Working loudly makes your impact visible as you do it—not after the fact in a status update nobody reads.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2026/07/14/work-loudly/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You did the work. The hard kind—the three weeks of chasing a race condition that only showed up under load, the careful refactor that made the next six features trivial, the quiet design call that saved the team a quarter of pain. Then your performance review comes around, and your manager—who likes you, who’s genuinely on your side—can’t quite say what you did. Not because the work wasn’t real. Because they never saw it happen.&lt;/p&gt;
&lt;p&gt;This is the part nobody warns you about when you go remote: In an office, some of your visibility was free. People saw you at the whiteboard, overheard you unblock someone in the kitchen, watched you stay late. None of that was a measure of your impact—but it added up to a vague, ambient sense that you were &lt;em&gt;doing things&lt;/em&gt;. Take away the building, and that ambient signal goes to zero. The work doesn’t get less valuable. It gets less visible. &lt;a id=&quot;quote-q-and-invisible-work-is-for&quot; href=&quot;#quote-q-and-invisible-work-is-for&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;q-and-invisible-work-is-for&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;And invisible work is, for every practical purpose—promotion, credit, getting pulled into the interesting projects—work that didn’t happen.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;work-in-the-open-not-in-a-summary&quot;&gt;Work in the open, not in a summary&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#work-in-the-open-not-in-a-summary&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The instinct most of us have is to fix this at the end. Do the work heads-down, then write the big summary, present the finished thing with a bow on it. That’s backwards. By the time you’re presenting, the interesting part is over—the reasoning, the dead ends, the moment you realized the obvious approach wouldn’t work. You’re narrating a conclusion when the value was in the process. This is &lt;a href=&quot;/2022/02/16/leaders-show-their-work/#the-value-of-showing-your-work&quot;&gt;showing your work&lt;/a&gt; applied in real time. The fix is to work loudly: &lt;a id=&quot;quote-make-the-work-visible-as-you-do-it&quot; href=&quot;#quote-make-the-work-visible-as-you-do-it&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;make-the-work-visible-as-you-do-it&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;make the work visible &lt;em&gt;as you do it&lt;/em&gt;, in shared and durable places, not after the fact in a status update nobody reads.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In practice that means thinking out loud where others can see it. The issue you open before you start, with what you’re trying and why. &lt;a href=&quot;/2023/05/19/pull-requests-are-a-form-of-documentations/&quot;&gt;The pull request description that explains the approach, not just the diff&lt;/a&gt; (it may even be longer than the diff). The “here’s where I’m stuck, here’s what I’ve ruled out” message in &lt;a href=&quot;/2014/11/06/rules-of-communicating-at-github/#12-surface-work-early-for-feedback&quot;&gt;a public channel instead of a private one&lt;/a&gt;. The rough draft shared at 40% instead of the polished thing shared at 100%. You’re not adding a layer of reporting on top of the work. You’re doing the work in the open, where it leaves a trail.&lt;/p&gt;
&lt;p&gt;I’ve opened a few thousand issues; the ones that mattered most were the ones I opened before I knew the answer. The tell: &lt;a id=&quot;quote-if-it-only-lives-in-your-head-or-a-dm-it-isnt-loud-yet&quot; href=&quot;#quote-if-it-only-lives-in-your-head-or-a-dm-it-isnt-loud-yet&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;if-it-only-lives-in-your-head-or-a-dm-it-isnt-loud-yet&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;if it only lives in your head or a DM, it isn’t loud yet.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;like-a-bear-bell&quot;&gt;Like a bear bell&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#like-a-bear-bell&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I think of it like a bear bell (bells you attach to your pack when hiking bear country). You don’t ring it to show off—you ring it so the bear hears you coming. The danger on the trail isn’t the bear—it’s the &lt;em&gt;startled&lt;/em&gt; bear, the one you surprised rounding a blind corner. Every org has them: the stakeholder who learns about your decision after it ships, the team that discovers from the changelog that you rerouted around them. Surprise people like that, and they don’t get curious—they get defensive, territorial, loud.&lt;/p&gt;
&lt;p&gt;I learned this the hard way. GitHub’s (then) CEO and General Counsel once DM’d me about an urgent, time-sensitive feature. I assumed my own leadership was already in the loop, so my team went straight to work—focused on the time-critical work, not the time-critical communication. Our leadership first found out when the feature was ready to ship and we kicked off the launch: docs, blog post, the rollout. It was not good. The feature went out—there was an executive mandate behind it—but the launch had made the people I reported to look out of the loop in front of their peers. I don’t know that their trust in me ever fully recovered.&lt;/p&gt;
&lt;p&gt;Working loudly is the bell: the low-effort, ambient signal that you’re on the trail and headed their way. Your work and your decisions reach people as something they saw coming instead of an ambush, and they get the chance to respond early and productively.&lt;/p&gt;
&lt;h2 id=&quot;loud-not-bragging&quot;&gt;Loud, not bragging&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#loud-not-bragging&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;It’s the objection I hear most.&lt;/p&gt;
&lt;aside class=&quot;objection&quot; aria-label=&quot;Objection and response&quot;&gt;&lt;p class=&quot;objection-q&quot;&gt;&lt;span class=&quot;objection-label&quot;&gt;But what about…&lt;/span&gt; Won’t I look like I’m bragging?&lt;/p&gt;&lt;div class=&quot;objection-a&quot;&gt;
&lt;p&gt;There’s a real difference between narrating your work and performing it. Performing busyness is noise &lt;em&gt;about&lt;/em&gt; work—the “just pushed through lunch &lt;span role=&quot;img&quot; aria-label=&quot;flexed biceps&quot;&gt;💪&lt;/span&gt;” posts, the green-dot theater, the reply-all to look engaged. Working loudly is the work itself, made legible. One is activity cosplaying as impact. The other is impact you can actually point to. If you’re sharing the artifact—the issue, the &lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Pull request—a proposed set of code changes submitted for review&quot; title=&quot;Pull request—a proposed set of code changes submitted for review&quot; tabindex=&quot;0&quot;&gt;PR&lt;/abbr&gt;, the doc, the decision—you’re working loudly. If you’re sharing your &lt;em&gt;effort&lt;/em&gt;, you’re just being loud.&lt;/p&gt;
&lt;/div&gt;&lt;/aside&gt;
&lt;h2 id=&quot;the-payoff-compounds&quot;&gt;The payoff compounds&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#the-payoff-compounds&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a id=&quot;quote-payoff-bigger-than-credit&quot; href=&quot;#quote-payoff-bigger-than-credit&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;payoff-bigger-than-credit&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;The payoff is bigger than getting credit, though you’ll get that too.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; When your work is visible in progress, people can help. Someone spots the bug in your approach before you’ve sunk three days into it. A teammate who solved the same problem last quarter drops a link. The senior engineer who’d never have been pulled into a private thread weighs in on the public one. Loud work compounds—it invites collaboration that silent work never gets the chance to.&lt;/p&gt;
&lt;p&gt;I like to joke that &lt;a id=&quot;quote-hardest-part-of-open-source&quot; href=&quot;#quote-hardest-part-of-open-source&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;hardest-part-of-open-source&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;the hardest part of open source is googling to find out whether someone already solved your problem&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; before you spend a week solving it yourself. Inner source—the same habits inside a company—is no different: work loudly so others can find you, and look around so you find them before you redo their work.&lt;/p&gt;
&lt;h2 id=&quot;managing-without-surveilling&quot;&gt;Managing without surveilling&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#managing-without-surveilling&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I once led a team at GitHub that split, roughly down the middle, into two styles. Half of them did everything—and I mean everything—in issues. Weekly reporting was a GitHub search on my end: their work was already written down, already visible, and the interesting opportunities tended to find them. The other half worked mostly in DMs and in their own heads. Some weeks I’d get a crisp update; some weeks their work never reached the people above me at all, because I had nothing to point to. Same team, same caliber of work. At end-of-year reviews, that gap didn’t stay small—it compounded into the story each person’s year got to tell.&lt;/p&gt;
&lt;p&gt;If you manage people: this is how you lead &lt;a href=&quot;/2022/03/17/why-async/#working-asynchronously&quot;&gt;without surveilling&lt;/a&gt;. You don’t need standups-as-status-roundup or “just checking in” pings when the work is legible by default—you can see it, link to it, build on it. You get to evaluate your team on &lt;a href=&quot;/2026/03/04/thirteen-years-at-github/&quot;&gt;what they actually shipped instead of who happened to be online when you looked&lt;/a&gt;. Make the work visible, and you can finally reward outcomes instead of hours. The alternative—rewarding the people who are merely &lt;em&gt;around&lt;/em&gt;—is how good remote engineers quietly conclude they’re better off somewhere else.&lt;/p&gt;
&lt;h2 id=&quot;the-trail-test&quot;&gt;The trail test&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#the-trail-test&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Here’s the test, on the work you’re doing right now: could your manager write your review from the trail alone—not from your memory, not from a meeting you’d have to attend, but from what you’ve left behind? If yes, you’re working loudly. If no, the work might be excellent, and it’s still happening where the one person whose job is to see it can’t. &lt;a id=&quot;quote-ring-the-bell&quot; href=&quot;#quote-ring-the-bell&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;ring-the-bell&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;Ring the bell.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;This post is adapted from my book, Open &amp;amp; Async.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>Reorgs happen</title><link>https://ben.balter.com/2026/06/07/reorgs-happen/</link><guid isPermaLink="true">https://ben.balter.com/2026/06/07/reorgs-happen/</guid><description>In thirteen years at GitHub I was part of 25 reorgs—almost one every six months. Reorgs are a constant in tech, not a crisis. Here&apos;s how to navigate them.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2026/06/07/reorgs-happen/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In thirteen years at GitHub, I was part of 25 reorgs and reported to 13 different managers. That’s a new org chart roughly every six months and a new boss roughly every year—like clockwork.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-clockwork&quot; id=&quot;user-content-fnref-clockwork&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;I know these numbers because I tracked them. What started as a humble spreadsheet eventually metastasized—as my side projects tend to do—into a full statistical forecast model that predicted the date of my next reorg with confidence intervals.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-repo&quot; id=&quot;user-content-fnref-repo&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; When colleagues asked how I stayed so calm during shake-ups, the honest answer was that I’d seen the data: reorgs are a disruptive fact of life in tech, and they can be a major source of stress and uncertainty. But they don’t have to be.&lt;/p&gt;
&lt;h2 id=&quot;why-reorgs-happen&quot;&gt;Why reorgs happen&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#why-reorgs-happen&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Most reorgs aren’t about you. They’re rarely malicious, and honestly, they’re rarely even that strategic. Organizations reorg because priorities shift, leaders change, headcount fluctuates, and &lt;a href=&quot;https://en.wikipedia.org/wiki/Conway%27s_law&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Conway’s Law&lt;/a&gt; keeps asserting itself—if you want the system to change shape, the org that builds it has to change shape first.&lt;/p&gt;
&lt;p&gt;A reorg is just an organization updating its structure to match its current understanding of the problem. Sometimes that understanding is right. Sometimes the same boxes get redrawn eighteen months later. Either way, the org chart is a snapshot of a hypothesis, not a monument. Expecting it to be permanent is the actual mistake. &lt;a href=&quot;/tweets/status/1043235116791816194/&quot;&gt;Reorgs are the organizational equivalent of turning it off and back on again.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;why-they-feel-so-disruptive&quot;&gt;Why they feel so disruptive&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#why-they-feel-so-disruptive&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;aside class=&quot;objection&quot; aria-label=&quot;Objection and response&quot;&gt;&lt;p class=&quot;objection-q&quot;&gt;&lt;span class=&quot;objection-label&quot;&gt;But what about…&lt;/span&gt; If reorgs are so routine, why do they hurt?&lt;/p&gt;&lt;div class=&quot;objection-a&quot;&gt;
&lt;p&gt;Because the costs are real and they’re personal: you lose context, you lose working relationships you spent months building, and you have to renegotiate trust with a new manager who has no idea what you shipped last quarter. Add uncertainty about priorities—is my project still funded? is my role still valued?—and it’s no wonder a Monday-morning announcement can derail a whole week.&lt;/p&gt;
&lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;The disruption is real. But it’s also &lt;em&gt;predictable&lt;/em&gt;, and predictable disruption is something you can design for.&lt;/p&gt;
&lt;h2 id=&quot;treat-reorgs-as-a-constant-not-an-exception&quot;&gt;Treat reorgs as a constant, not an exception&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#treat-reorgs-as-a-constant-not-an-exception&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This is the mindset shift that changed how I experienced reorgs: stop treating them as rare disasters and start treating them as baseline operating conditions. If you’ve been in tech for any length of time, a reorg every six-ish months &lt;em&gt;is&lt;/em&gt; the weather. &lt;a id=&quot;quote-dont-get-angry-at-rain&quot; href=&quot;#quote-dont-get-angry-at-rain&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;dont-get-angry-at-rain&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;You don’t get angry at rain—you buy a raincoat.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Designing your career for that reality means investing in what survives an org-chart shuffle. Keep your relationships portable—your network shouldn’t be coterminous with your reporting line, because the colleagues two teams over are your future teammates and references once the boxes get redrawn. Document your decisions somewhere durable; context that lives in one person’s head evaporates in a reorg, while context that lives &lt;a href=&quot;/2015/11/12/why-urls/&quot;&gt;at a URL&lt;/a&gt; survives. &lt;a href=&quot;/2022/03/17/why-async/&quot;&gt;Working asynchronously and in the open is reorg insurance.&lt;/a&gt; And do work that speaks for itself, because when your manager changes every year on average, your reputation can’t hang on any single person having seen your best work. &lt;a href=&quot;/2026/04/27/the-brag-doc/&quot;&gt;Keep the receipts&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;how-to-navigate-a-reorg&quot;&gt;How to navigate a reorg&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#how-to-navigate-a-reorg&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When the announcement drops (usually on a Monday—I have the data):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Let the dust settle.&lt;/strong&gt; The org chart announced on day one is rarely the org chart that exists a month later. Reorgs are announced at the altitude of VPs and refined at the altitude of teams. Don’t make big career decisions—or send spicy Slack messages—in week one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ask the questions that actually matter.&lt;/strong&gt; Who do I report to? What does my team own now? What changed for users? Most of the anxious speculation that follows a reorg dissolves once those three are answered. The rest is noise.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Re-onboard yourself.&lt;/strong&gt; A new team is a new job, even if your badge and laptop stay the same. Treat it that way: learn the team’s context before prescribing changes, &lt;a href=&quot;/2019/06/28/joining-a-new-team/&quot;&gt;go near, go far, and meet in the middle&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reset with your new manager deliberately.&lt;/strong&gt; Don’t wait for them to figure you out—that’s a six-month project you can compress into &lt;a href=&quot;/2026/04/27/one-on-one-playbook/&quot;&gt;one good first one-on-one&lt;/a&gt;. Bring your brag doc. Share how you work best, what you’re driving, and what you need from them. Thirteen managers in, I can tell you the relationship you build in the first two weeks is the relationship you’ll have.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep showing your work.&lt;/strong&gt; In moments of uncertainty, &lt;a href=&quot;/2026/07/14/work-loudly/&quot;&gt;visibility matters even more&lt;/a&gt;. &lt;a href=&quot;/2022/02/16/leaders-show-their-work/&quot;&gt;Leaders show their work&lt;/a&gt;, and reorgs are precisely when everyone—new manager, new skip, new peers—is trying to figure out who does what.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;how-to-make-the-most-of-one&quot;&gt;How to make the most of one&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#how-to-make-the-most-of-one&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Navigating a reorg is table stakes. The real opportunity is that reorgs are one of the few moments when an organization’s defaults become negotiable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reorgs reset narratives.&lt;/strong&gt; Pigeonholed into a role you’ve outgrown? Your new manager has no priors. The story of who you are professionally gets re-told every reorg—make sure you’re the one telling it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Renegotiate your scope.&lt;/strong&gt; Team charters get rewritten in the first few weeks after a shuffle, and nature abhors a vacuum. Show up with a proposal for what your role should be, and more often than not, you’ll get it. Clarity is a gift to a leader who’s drowning in ambiguity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shed the legacy cruft.&lt;/strong&gt; Every team accumulates projects that persist purely through inertia. A reorg is organizational garbage collection—the rare moment you can ask “should we still be doing this?” and have “no” be an acceptable answer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compound your network.&lt;/strong&gt; Every reorg deals you a new hand of colleagues, stakeholders, and adjacent teams. Thirteen years of shuffles meant I’d worked with—or near—half the company. That network outlasted every org chart that created it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be the calm one.&lt;/strong&gt; When everyone else is doom-scrolling the new org chart,&lt;sup&gt;&lt;a href=&quot;#user-content-fn-playlist&quot; id=&quot;user-content-fnref-playlist&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; the person who’s level-headed, generous with context, and helping others find their footing is doing leadership, visibly, at exactly the moment leadership is paying attention.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-long-view&quot;&gt;The long view&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#the-long-view&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Across 25 reorgs, my manager changed, my team changed, my org changed, and my VP changed—but the things that actually determined my trajectory didn’t live on the org chart at all. My reputation persisted. My relationships persisted. The work—shipped, documented, linkable—persisted.&lt;/p&gt;
&lt;p&gt;That’s where I’d tell you to invest—not in any particular box or reporting line, but in the things no reorg can take from you. &lt;a id=&quot;quote-q-get-those-right-and-a&quot; href=&quot;#quote-q-get-those-right-and-a&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;q-get-those-right-and-a&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;Get those right, and a reorg stops being a crisis and becomes what it actually is: a Monday.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The model’s parting gift was one final forecast: another reorg by early September, probably announced on a Monday. I have complete faith it will deliver. After all, look at the methodology:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Generated with 10,000 Monte Carlo simulations, bootstrap resampling, Weibull MLE, Kaplan-Meier survival analysis, CUSUM changepoint detection, Shannon entropy, Ljung-Box serial correlation testing, Poisson process goodness-of-fit, and a 6-model forecast ensemble. Because why not.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Reorgs happen. Plan accordingly.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot; aria-label=&quot;Footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#footnote-label&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-clockwork&quot;&gt;
&lt;p&gt;“Like clockwork” is generous. The actual gaps ranged from six weeks to fifteen months, which is exactly why predicting the next one required increasingly heavy statistical machinery. The clock is real—it just has terrible build quality. &lt;a href=&quot;#user-content-fnref-clockwork&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-repo&quot;&gt;
&lt;p&gt;The project began as a CSV with two columns and ended, several late nights later, as a statistical apparatus wildly disproportionate to the question it answered. Its README footer—reproduced in full at the end of this post, because it deserves to be—is the most honest line of documentation I’ve ever written. It’s &lt;a href=&quot;https://github.com/benbalter/reorg-tuesdays&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;open source now&lt;/a&gt;, in all its over-engineered glory. &lt;a href=&quot;#user-content-fnref-repo&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-playlist&quot;&gt;
&lt;p&gt;One faithful Hubber took coping to its logical conclusion and built a reorg playlist, stocked with such classics as “Changes,” “It’s the End of the World as We Know It,” “End of the Road,” “Another One Bites the Dust,” “Won’t Get Fooled Again,” and—my personal favorite—“Let It Go.” Reorg-driven development has a soundtrack now. &lt;a href=&quot;#user-content-fnref-playlist&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 3&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;There&apos;s a whole book&apos;s worth more where this came from.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>AI-first program management</title><link>https://ben.balter.com/2026/05/31/ai-first-program-management/</link><guid isPermaLink="true">https://ben.balter.com/2026/05/31/ai-first-program-management/</guid><description>AI-augmented program management is the natural evolution of async-first and engineering-inspired workflows — amplifying human judgment, not replacing it.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2026/05/31/ai-first-program-management/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;When I first wrote about &lt;a href=&quot;/2021/03/26/nine-things-a-technical-program-manager-does/&quot;&gt;the nine things a program manager does&lt;/a&gt;, I didn’t dwell on what the job actually feels like first thing on a Monday. The hardest part was always the scramble: a dozen threads that moved over the weekend, a risk or two that quietly materialized, and a critical deliverable whose scope someone changed in a comment buried three levels deep. All of it has to be synthesized into a coherent picture before the leadership sync, and the clock doesn’t care how many tabs you have open.&lt;/p&gt;
&lt;p&gt;That scramble hasn’t gone away. But increasingly, I’m not doing it alone.&lt;/p&gt;
&lt;h2 id=&quot;from-async-to-ai-augmented&quot;&gt;From async to AI-augmented&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#from-async-to-ai-augmented&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The evolution makes sense in hindsight. I’ve argued that teams should &lt;a href=&quot;/2022/03/17/why-async/&quot;&gt;default to async communication&lt;/a&gt; — written, durable, discoverable artifacts over synchronous &lt;a href=&quot;/2023/04/20/meetings-are-a-point-of-escalation/&quot;&gt;meetings&lt;/a&gt;. That managers should &lt;a href=&quot;/2023/01/10/manage-like-an-engineer/&quot;&gt;use the same tools engineers use&lt;/a&gt; — issues, pull requests, project boards — to plan and track their own work. And most recently, that &lt;a href=&quot;/2026/03/18/agentic-workflows/&quot;&gt;AI agents are extending the same patterns&lt;/a&gt; of transparency and code review that made open source successful.&lt;/p&gt;
&lt;p&gt;These ideas aren’t disconnected. They’re an evolution.&lt;/p&gt;
&lt;p&gt;If the shift from synchronous to async was about decoupling communication from presence, and managing like an engineer was about applying developer workflows to leadership, then AI-first program management is the next logical step: using AI to amplify the judgment, pattern recognition, and relationship work that makes program managers effective.&lt;/p&gt;
&lt;p&gt;The through-line is the same principle I’ve been writing about for years: &lt;a href=&quot;/2022/02/16/leaders-show-their-work/&quot;&gt;make work visible&lt;/a&gt;, make it durable, and reduce the friction between having an idea and acting on it. AI doesn’t change that philosophy. It accelerates it.&lt;/p&gt;
&lt;h2 id=&quot;ai-across-the-pm-toolkit&quot;&gt;AI across the PM toolkit&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#ai-across-the-pm-toolkit&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Here’s how each core PM responsibility shifts when AI enters the picture — and where it doesn’t.&lt;/p&gt;
&lt;h3 id=&quot;communication-coordination-and-facilitation&quot;&gt;Communication, coordination, and facilitation&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#communication-coordination-and-facilitation&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Program managers are professional context-switchers. You spend your day translating between engineering teams, product managers, designers, and executives — each with different mental models and vocabulary.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; It’s an O(n²) communication problem, and it only gets worse as the organization grows.&lt;/p&gt;
&lt;p&gt;AI doesn’t eliminate that complexity, but it compresses the information-shuttling work. Hand an &lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Large Language Model—the kind of AI that powers chatbots and coding assistants&quot; title=&quot;Large Language Model—the kind of AI that powers chatbots and coding assistants&quot; tabindex=&quot;0&quot;&gt;LLM&lt;/abbr&gt; a 200-message thread and it’ll hand back a paragraph. Feed it the engineering team’s “we’re blocked on a schema migration that requires a backward-compatible rollout strategy” and it’ll translate that into language an executive actually cares about. Drop in a wall of meeting notes and it’ll surface the three things that matter from the twenty that were discussed.&lt;/p&gt;
&lt;p&gt;I’ve &lt;a href=&quot;/2023/10/04/how-to-communicate-like-a-github-engineer/&quot;&gt;written about how we communicated at GitHub&lt;/a&gt; — optimizing for clarity, discoverability, and low-context readers. AI handles the mechanical work of drafting and reformatting for different audiences. The editorial choices — &lt;em&gt;what&lt;/em&gt; to communicate, what to emphasize, when to pick up the phone instead — stay with you.&lt;/p&gt;
&lt;h3 id=&quot;capture-and-track-work&quot;&gt;Capture and track work&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#capture-and-track-work&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;One of a PM’s most underappreciated responsibilities is ensuring that work doesn’t fall through the cracks. Every conversation, decision, and commitment needs to land somewhere trackable — usually an issue or a project board.&lt;/p&gt;
&lt;p&gt;Point AI at a meeting transcript and it’ll auto-generate the issues. Point it at a month of Slack and it’ll surface the commitments that never made it into a tracker, flag the issues nobody’s touched in weeks, and notice when a project board has quietly drifted from reality. Think of it as a continuous reconciliation process — a linter for your program’s state, catching the gap between what people &lt;em&gt;said&lt;/em&gt; they’d do and what the artifacts actually reflect.&lt;/p&gt;
&lt;p&gt;This matters because the biggest risk in program management isn’t that something goes wrong. It’s that something goes wrong &lt;em&gt;and nobody notices&lt;/em&gt; until it’s too late.&lt;/p&gt;
&lt;h3 id=&quot;risk-identification-and-mitigation&quot;&gt;Risk identification and mitigation&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#risk-identification-and-mitigation&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Speaking of risk — PMs are supposed to see around corners. In practice, that means reading a lot of threads, attending a lot of standups, and developing an intuition for when something &lt;em&gt;feels&lt;/em&gt; off.&lt;/p&gt;
&lt;p&gt;AI augments that intuition with pattern recognition at scale. It can analyze velocity trends across repositories, flag pull requests that have been open too long, identify dependencies that no human mapped, and surface cross-project risks that are invisible when you’re looking at one team’s board in isolation. I’ve called &lt;a href=&quot;/2023/08/30/transparency-collaboration-is-the-andon-of-knowledge-production/&quot;&gt;transparent collaboration the andon of knowledge work&lt;/a&gt; — pull the cord when something’s off. AI is an andon that monitors every cord at once, catching a staffing conflict between two programs before either PM realizes they’re competing for the same engineer’s time.&lt;/p&gt;
&lt;p&gt;AI won’t replace the experienced PM’s gut feeling that “this one’s going to slip.” But it surfaces the signals earlier, giving you more time to act. The best risk management has always been about buying time.&lt;/p&gt;
&lt;h3 id=&quot;reporting-up-and-across&quot;&gt;Reporting up and across&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#reporting-up-and-across&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Nobody became a program manager because they love writing weekly status reports. And yet, clear upward reporting is one of the highest-leverage things a PM does. It’s how leadership knows where to pay attention and where to stay out of the way.&lt;/p&gt;
&lt;p&gt;At GitHub, I built an internal tool called SnippetGPT that drafted these reports from a team’s activity for the week — commits, merged &lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Pull request—a proposed set of code changes submitted for review&quot; title=&quot;Pull request—a proposed set of code changes submitted for review&quot; tabindex=&quot;0&quot;&gt;PRs&lt;/abbr&gt;, issue closures, comment threads. It rolled all of that up into a first draft aimed at engineering leaders. Instead of spending Friday afternoon assembling a narrative from memory and half-updated boards, I started from something that reflected what actually happened, then layered on interpretation and recommendations.&lt;/p&gt;
&lt;p&gt;The key word there is &lt;em&gt;start&lt;/em&gt;. An AI-generated status report is a first draft, not a finished product. The PM’s job is to add the “so what” — the strategic interpretation that turns a list of activities into insight. SnippetGPT gave me the &lt;em&gt;what&lt;/em&gt;. I added the &lt;em&gt;why it matters&lt;/em&gt; and the &lt;em&gt;what to do about it&lt;/em&gt;. And once that draft existed, retargeting it for another audience — execs, a partner team, my own engineers — was nearly free: the same week’s activity, recut for whoever needed to read it.&lt;/p&gt;
&lt;h3 id=&quot;relationship-management&quot;&gt;Relationship management&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#relationship-management&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Program management is fundamentally a relationship business. When I first moved into the &lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Technical Program Manager&quot; title=&quot;Technical Program Manager&quot; tabindex=&quot;0&quot;&gt;TPM&lt;/abbr&gt; role, I remember watching senior PMs set up “just wanted to say hello” meetings and dismissing it as socializing on company time — until I realized that’s exactly the point.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; You make regular deposits to the social capital bank long before you need a withdrawal. AI doesn’t replace that. You can’t automate trust.&lt;/p&gt;
&lt;p&gt;But it can help you &lt;em&gt;maintain&lt;/em&gt; those relationships at scale: a nudge that you haven’t checked in with a particular stakeholder in two weeks, a bit of context surfaced before a meeting — “last time you spoke with this team, they raised concerns about the timeline for the API migration.” A first pass at a thoughtful reply to a tricky message when you’re running low on cognitive bandwidth at 4 PM on a Thursday.&lt;/p&gt;
&lt;p&gt;The human work — building rapport, reading a room, knowing when someone’s frustrated versus when they’re genuinely blocked — stays firmly in the PM’s domain. AI just helps you show up more prepared and more responsive than you could be on your own.&lt;/p&gt;
&lt;h3 id=&quot;consensus-and-conflict-resolution&quot;&gt;Consensus and conflict resolution&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#consensus-and-conflict-resolution&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Driving consensus across teams with competing priorities is among the hardest things a PM does. It requires understanding not just each team’s &lt;em&gt;position&lt;/em&gt;, but their &lt;em&gt;interests&lt;/em&gt; — the underlying needs that drive those positions.&lt;/p&gt;
&lt;p&gt;AI can help by synthesizing different viewpoints, drafting proposals that incorporate multiple perspectives, and suggesting compromises based on stated constraints. Need an &lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Request for Comments—a written proposal circulated for feedback before a decision&quot; title=&quot;Request for Comments—a written proposal circulated for feedback before a decision&quot; tabindex=&quot;0&quot;&gt;RFC&lt;/abbr&gt; that reflects six teams’ input? AI can produce a first draft that no single person could assemble manually — but you still need to facilitate the conversation that turns a draft into a decision.&lt;/p&gt;
&lt;p&gt;Where AI falls short is in reading the political dynamics. Understanding that Team A’s objection is really about being burned in a previous launch, or that a particular VP’s silence means something different than a junior engineer’s silence — that’s pattern recognition of a deeply human kind. No model is going to learn the org chart’s shadow topology from a prompt.&lt;/p&gt;
&lt;h2 id=&quot;what-doesnt-change&quot;&gt;What doesn’t change&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#what-doesnt-change&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;It would be easy to read all of this and conclude that AI is about to make program managers obsolete. The opposite is true.&lt;/p&gt;
&lt;p&gt;The responsibilities haven’t changed. Communication, risk management, relationship building, consensus-driving — these are still the job. What’s shifted is the ratio of &lt;em&gt;information processing&lt;/em&gt; to &lt;em&gt;judgment&lt;/em&gt; in a PM’s day. AI handles more of the former so you can focus more on the latter.&lt;/p&gt;
&lt;p&gt;The things AI can’t do are precisely the things that make great PMs great: reading a room, building trust over months, knowing when to push and when to back off, navigating organizational politics, and making the hard call when the data is ambiguous. These are human skills, and they become &lt;em&gt;more&lt;/em&gt; valuable as AI handles the routine work, not less. &lt;a id=&quot;quote-differentiator-is-the-human&quot; href=&quot;#quote-differentiator-is-the-human&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;differentiator-is-the-human&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;When everyone has access to the same AI tools, the differentiator is the human wielding them.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;what-changes-for-pms&quot;&gt;What changes for PMs&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#what-changes-for-pms&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;That said, AI-first program management does require new muscles — or at least, new applications of existing ones. Four capabilities stand out:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prompt craft matters.&lt;/strong&gt; The quality of what AI produces depends entirely on the quality of what you ask for. It’s &lt;a href=&quot;https://en.wikipedia.org/wiki/Garbage_in,_garbage_out&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;garbage in, garbage out&lt;/a&gt; — a principle as old as computing, now pointed at prompts instead of punch cards. PMs who can write clear, specific prompts — essentially, good requirements — will get dramatically better results than those who can’t. It turns out that years of writing crisp issue descriptions and well-defined acceptance criteria is excellent training for working with LLMs. Good requirements have always been a PM superpower. Now they’re a superpower twice over.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Knowing when &lt;em&gt;not&lt;/em&gt; to use AI is as important as knowing when to use it.&lt;/strong&gt; A sensitive personnel conversation, a politically charged escalation, a message to a stakeholder who’s having a rough week — these require a human touch that AI can’t fake. Developing judgment about when AI helps versus when it gets in the way is a skill in itself, and it’s one that’s hard to teach in the abstract.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Verification becomes a core competency.&lt;/strong&gt; AI will confidently summarize a thread and miss the most important nuance. It’ll draft a status report that’s 90% accurate and 10% dangerously misleading. PMs need to be skilled editors and fact-checkers, not just consumers of AI output. The role shifts from &lt;em&gt;author&lt;/em&gt; to &lt;em&gt;editor-in-chief&lt;/em&gt; — you set direction, review drafts, and ensure quality before anything ships.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI fluency is table stakes.&lt;/strong&gt; Just as PMs were expected to be comfortable with project management tools, version control, and whatever collaboration platform their teams use, they’ll be expected to work fluently with AI assistants. Not as a novelty, but as a core part of the daily workflow — the way we already think about Slack or email or GitHub Issues.&lt;/p&gt;
&lt;h2 id=&quot;the-pm-as-orchestra-conductor&quot;&gt;The PM as orchestra conductor&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#the-pm-as-orchestra-conductor&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The mental model I keep coming back to is the program manager as orchestra conductor. A conductor doesn’t play every instrument — they don’t play &lt;em&gt;any&lt;/em&gt; instrument during the performance. But they’re essential: they set the tempo, bring in the right sections at the right time, interpret the score, and turn individual performances into a coherent whole.&lt;/p&gt;
&lt;p&gt;AI agents are new instruments in the orchestra. They play fast, they play consistently, and they can handle parts that used to require a human musician. But someone still needs to read the score, understand the audience, and make the hundred small decisions that turn a technically correct performance into something that actually moves people. That’s the PM’s job — and it always will be.&lt;/p&gt;
&lt;p&gt;The shift from synchronous to async made program management more intentional. Managing like an engineer made it more transparent. AI makes the same hours count for more. Each evolution builds on the last, and each one makes the human judgment at the center of the work more important, not less.&lt;/p&gt;
&lt;p&gt;Much of the job is a long tail of grab-bag work that never fits a clean category — writing the missing spec, scheduling the meeting nobody wants to own, reformatting a spreadsheet at 9 PM because a VP asked for a different view of the data. AI is exceptional at exactly this kind of mundane-but-necessary task, and it’s the easiest place to start. If you’re a PM wondering where to begin, pick the task that consumes the most time but requires the least judgment — status report assembly, meeting note cleanup, stakeholder update drafts — and hand it to an AI. You’ll free up hours for the work that actually drew you to the role: solving hard problems with smart people across organizational boundaries.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot; aria-label=&quot;Footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#footnote-label&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Tally up the number of distinct audiences a PM communicates with in a single week and the answer is genuinely depressing. Every additional team or stakeholder doesn’t just add one more communication channel — it adds one for every stakeholder you &lt;em&gt;already&lt;/em&gt; had. This is why PMs’ calendars look the way they do. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;As much as I might like them to be, &lt;a href=&quot;/2021/03/26/nine-things-a-technical-program-manager-does/&quot;&gt;human-to-human requests are unlike server-to-server requests&lt;/a&gt;. A properly authenticated request from a never-before-seen client is less likely to be fulfilled, or fulfilled in a timely manner, even if it’s facially valid. Invest in the relationship before you need the favor. &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;This post inspired a chapter in my book, Open &amp;amp; Async.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>How to one-on-one</title><link>https://ben.balter.com/2026/04/27/one-on-one-playbook/</link><guid isPermaLink="true">https://ben.balter.com/2026/04/27/one-on-one-playbook/</guid><description>Most 1:1s waste your team&apos;s only protected synchronous time on status updates. Here&apos;s how to run ones worth showing up for.</description><pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2026/04/27/one-on-one-playbook/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;It’s Thursday afternoon. Your direct report sits down and reads from a list: “Closed three bugs, reviewed two &lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Pull request—a proposed set of code changes submitted for review&quot; title=&quot;Pull request—a proposed set of code changes submitted for review&quot; tabindex=&quot;0&quot;&gt;PRs&lt;/abbr&gt;, started the migration doc.” You nod. They nod. Thirty minutes pass without either of you saying anything that couldn’t have been a comment on an issue.&lt;/p&gt;
&lt;p&gt;Most 1:1s fail in one of three ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The most common: spending your team’s only protected synchronous time on information that belongs in writing.&lt;/li&gt;
&lt;li&gt;The second: sugarcoating hard feedback until nobody walks away clear on what actually needs to change.&lt;/li&gt;
&lt;li&gt;The third is quieter—the 1:1 that keeps getting canceled because “something came up,” until the relationship slowly starves.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;what-belongs-in-a-11&quot;&gt;What belongs in a 1:1&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#what-belongs-in-a-11&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Great 1:1s focus on topics that only work synchronously. Five categories keep coming up:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Career growth and development.&lt;/strong&gt; Where do you want to be in a year? What skills do you want to develop? These conversations require back-and-forth exploration, picking up on what’s left unsaid, and nuanced guidance that doesn’t fit in an issue comment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coaching and problem-solving.&lt;/strong&gt; When you’re stuck on an interpersonal challenge, unsure how to approach a sensitive topic, or wrestling with a decision that has no clear right answer, talking it through with someone who has context beats wrestling with it alone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Feedback and calibration.&lt;/strong&gt; Feedback—giving and receiving—lands better in real-time. Tone and body language provide context that text can’t, and you can clarify misunderstandings immediately. Written feedback can feel blunt or land wrong; spoken feedback invites dialogue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Human connection.&lt;/strong&gt; Remote work can be isolating. 1:1s let you check in as humans, not just workers. How are you actually doing? Building genuine relationships requires face-to-face time, even if that face is on a screen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clearing the air.&lt;/strong&gt; If there’s tension, frustration, or something unsaid, 1:1s are the place to address it directly. These conversations are almost always better synchronously than through a wall of text.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What &lt;em&gt;doesn’t&lt;/em&gt; belong: &lt;a href=&quot;/2023/04/20/meetings-are-a-point-of-escalation/&quot;&gt;status updates&lt;/a&gt;, information transfer, and approval requests. &lt;a id=&quot;quote-q-if-youre-listing-what-you&quot; href=&quot;#quote-q-if-youre-listing-what-you&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;q-if-youre-listing-what-you&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;If you’re listing what you shipped last week, you’re wasting the meeting.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; Your manager should see your work before the 1:1, not hear about it during. Approvals create bottlenecks—ask async. Information sharing belongs in a doc sent beforehand. Use synchronous time to discuss implications, not convey facts.&lt;/p&gt;
&lt;h2 id=&quot;how-to-prepare&quot;&gt;How to prepare&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#how-to-prepare&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Great 1:1s start before the meeting does.&lt;/p&gt;
&lt;p&gt;Keep a &lt;strong&gt;running &lt;a href=&quot;/2026/04/06/no-agenda-no-meeting/&quot;&gt;shared agenda&lt;/a&gt;&lt;/strong&gt;—a Google Doc, a GitHub issue, whatever works—where both parties add topics throughout the week. When something comes up worth discussing, add it immediately instead of trying to remember later.&lt;/p&gt;
&lt;p&gt;Add context to each item. Don’t just write “career growth”—write “I’ve been thinking about whether to pursue the tech lead path or people management, and I’d like to talk through the tradeoffs.” The more context upfront, the more productive the conversation. Prioritize ruthlessly—you won’t cover everything every week, and if something keeps rolling without getting discussed, that tells you something about its actual importance.&lt;/p&gt;
&lt;p&gt;&lt;a id=&quot;quote-cancel-without-losing-anything&quot; href=&quot;#quote-cancel-without-losing-anything&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;cancel-without-losing-anything&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;A good test of your preparation: could you cancel the meeting without losing anything?&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; If yes, you either don’t have enough prepared or you’re covering topics better handled async.&lt;/p&gt;
&lt;h2 id=&quot;how-to-run-one&quot;&gt;How to run one&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#how-to-run-one&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Start with the human, not the agenda. Take a few minutes to check in personally. This isn’t small talk—it’s the relationship that makes hard conversations possible later.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ask questions more than you give answers.&lt;/strong&gt; For managers, your job isn’t to solve every problem—it’s to help your report think through problems themselves. “What options are you considering?” is often more useful than “Here’s what you should do.” For &lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Individual Contributor—someone who does the work rather than managing people&quot; title=&quot;Individual Contributor—someone who does the work rather than managing people&quot; tabindex=&quot;0&quot;&gt;ICs&lt;/abbr&gt;, don’t just wait to be told what to do—challenge assumptions and push back.&lt;/p&gt;
&lt;p&gt;Follow the agenda, but hold it loosely. If a topic opens up a more important conversation, follow it. The rest can wait.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Make space for what’s unsaid.&lt;/strong&gt; The most important topics often aren’t on the agenda because they’re hard to articulate or feel risky to raise. Make it safe by raising difficult topics yourself and responding non-defensively when others do.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;End with clear next steps.&lt;/strong&gt; What actions came out of this? Who’s doing what by when? Document them somewhere durable so they don’t get lost. Leaders who &lt;a href=&quot;/2022/02/16/leaders-show-their-work/&quot;&gt;show their work&lt;/a&gt; in shared docs make this easy—the same transparency that helps distributed teams function day-to-day makes 1:1 follow-through automatic.&lt;/p&gt;
&lt;h2 id=&quot;skip-levels-why-they-matter&quot;&gt;Skip-levels: why they matter&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#skip-levels-why-they-matter&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Skip-level 1:1s—regular conversations with your manager’s manager—build rapport and broader perspective. They’re typically less frequent (monthly or quarterly), but they matter for career visibility and organizational context. They give senior leaders unfiltered signal about how the team is actually doing, and they give ICs a line of sight into strategy they wouldn’t otherwise have.&lt;/p&gt;
&lt;h2 id=&quot;anti-patterns-to-avoid&quot;&gt;Anti-patterns to avoid&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#anti-patterns-to-avoid&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The ghost meeting.&lt;/strong&gt; Neither party prepares, there’s no agenda, and you spend thirty minutes in a conversational holding pattern. If you have nothing to discuss, either something is going well or something is going unaddressed—figure out which.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The cancellation cascade.&lt;/strong&gt; 1:1s keep getting canceled because “something came up.” That signals the relationship isn’t a priority. Protect the time, especially for remote relationships where it’s harder to connect informally.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The manager monologue.&lt;/strong&gt; The manager talks the whole time, sharing information, giving advice, or thinking out loud. 1:1s should be conversations, not presentations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The reverse 1:1.&lt;/strong&gt; The entire meeting becomes the report briefing the manager on the work. If your report is educating you for thirty minutes, you owe them a different format, not a recurring appointment.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-real-test&quot;&gt;The real test&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#the-real-test&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Your 1:1s are a microcosm of how you lead. Shared agendas, documented outcomes, async preparation—every practice that makes a 1:1 great is the same practice that makes a distributed team work. If you &lt;a href=&quot;/2023/01/10/manage-like-an-engineer/&quot;&gt;manage like an engineer&lt;/a&gt;, you already have the instincts: treat the meeting like a system, instrument it, and iterate.&lt;/p&gt;
&lt;p&gt;Get the 1:1 right and the rest follows.&lt;/p&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;This post is adapted from my book, Open &amp;amp; Async.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>The brag doc</title><link>https://ben.balter.com/2026/04/27/the-brag-doc/</link><guid isPermaLink="true">https://ben.balter.com/2026/04/27/the-brag-doc/</guid><description>Why you need a running record of your wins—and how to keep one without dying of embarrassment</description><pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2026/04/27/the-brag-doc/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Here’s the best career advice I ever received as a product manager: “product-manage your own career.” I wish I’d internalized it sooner. Early in my career, I stayed quiet and did good work, assuming the right people would notice. Spoiler: they didn’t—not because the work wasn’t good, but because nobody else was tracking it.&lt;/p&gt;
&lt;p&gt;Treat yourself as a product. What are your features? What are your bugs? What does your roadmap look like? And critically: who’s keeping the changelog?&lt;/p&gt;
&lt;h2 id=&quot;nobodys-keeping-score-for-you&quot;&gt;Nobody’s keeping score for you&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#nobodys-keeping-score-for-you&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Unless you’re a professional athlete, nobody’s compiling your stats. Your manager has their own deliverables, their own manager to impress, and a dozen other direct reports. They aren’t maintaining a highlight reel of your career. That’s your job.&lt;/p&gt;
&lt;p&gt;In remote organizations, this problem compounds. There’s no hallway reputation, no casual office face time, no lunch with the VP where you happen to mention your project. If people don’t see your work in &lt;a href=&quot;/2023/05/19/pull-requests-are-a-form-of-documentations/&quot;&gt;pull requests&lt;/a&gt;, issues, or public discussions, they don’t know you exist. &lt;a href=&quot;/2015/11/12/why-urls/&quot;&gt;Working in the open&lt;/a&gt; creates a natural paper trail—public pull requests, documented decisions, visible contributions—but that trail only matters if you curate it.&lt;/p&gt;
&lt;h2 id=&quot;the-ship-log&quot;&gt;The ship log&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#the-ship-log&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Maintain a “ship log”—call it a “brag doc,” “hype doc,” “smile file,” whatever gets you to actually use it. Each time you hit a milestone, record it with its impact and any relevant metrics. Async work hands you a head start: your contributions are already timestamped and linkable.&lt;/p&gt;
&lt;p&gt;Your ship log combats impostor syndrome, makes annual self-assessments trivially easy to write, and keeps your professional profiles current. &lt;a id=&quot;quote-if-you-didnt-log-it&quot; href=&quot;#quote-if-you-didnt-log-it&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;if-you-didnt-log-it&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;If you didn’t log it, it didn’t happen.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The format doesn’t matter—a Google Doc, Apple Notes, a text file in your home directory. What matters is that it’s easy to update and always within reach. Every Friday, spend five minutes adding bullets: what you shipped, what you unblocked, what decisions you influenced.&lt;/p&gt;
&lt;h2 id=&quot;what-makes-a-good-entry&quot;&gt;What makes a good entry&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#what-makes-a-good-entry&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Effective ship log entries are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Specific and linked.&lt;/strong&gt; “Improved documentation” is vague. “Rewrote the onboarding docs, resulting in 40% fewer support tickets from new hires ([link to the issue])” is evidence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact-focused.&lt;/strong&gt; List outcomes, not activities. “Attended twelve planning meetings” says nothing. “Proposed the architecture that shipped to production” tells a story.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continuous.&lt;/strong&gt; Don’t wait until review season. Update weekly, while the details are fresh.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shareable.&lt;/strong&gt; Your log isn’t a secret diary. Share highlights with your manager regularly. The best time to make your case for promotion is months before the conversation happens.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Don’t limit yourself to completed deliverables. Screenshot the email where a stakeholder said your proposal changed their thinking. Note the meeting where your question reframed the entire discussion. Record the mentoring conversation that helped a junior engineer get unstuck. These qualitative moments are often more compelling in a promotion case than a list of closed tickets.&lt;/p&gt;
&lt;h2 id=&quot;climbing-cringe-mountain&quot;&gt;Climbing Cringe Mountain&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#climbing-cringe-mountain&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Yes, maintaining a brag doc feels awkward. There’s a reason people call it “climbing Cringe Mountain.”&lt;/p&gt;
&lt;aside class=&quot;objection&quot; aria-label=&quot;Objection and response&quot;&gt;&lt;p class=&quot;objection-q&quot;&gt;&lt;span class=&quot;objection-label&quot;&gt;But what about…&lt;/span&gt; Doesn’t good work speak for itself? Isn’t tracking your wins unseemly?&lt;/p&gt;&lt;div class=&quot;objection-a&quot;&gt;
&lt;p&gt;It doesn’t, and it isn’t. We’re conditioned to believe otherwise. But the alternative is being invisible. And invisible people don’t get promoted—they get overlooked, then they leave. Ship early, &lt;a href=&quot;/2022/02/16/leaders-show-their-work/&quot;&gt;show your work&lt;/a&gt;, and keep the receipts.&lt;/p&gt;
&lt;p&gt;If sharing your wins feels gross, reframe it: you’re not bragging, you’re making your manager’s job easier. When promotion conversations come around, you’ll have months of evidence instead of a frantic scramble to remember last quarter.&lt;/p&gt;
&lt;/div&gt;&lt;/aside&gt;
&lt;h2 id=&quot;fighting-recency-bias&quot;&gt;Fighting recency bias&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#fighting-recency-bias&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Here’s the real killer: recency bias. Your manager (and you) will tend to remember only the last few weeks when evaluation season arrives. That critical project you shipped in February? Without a record, it might as well not have happened by December.&lt;/p&gt;
&lt;p&gt;A ship log is your defense. When it’s time for self-assessments, you open the doc and the year’s work is right there—specific, linked, and impact-focused. No scrambling, no guessing, no accidental amnesia about Q1.&lt;/p&gt;
&lt;h2 id=&quot;make-it-a-habit&quot;&gt;Make it a habit&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#make-it-a-habit&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A brag doc only works if you actually maintain it. Some practical tips:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Set a weekly reminder.&lt;/strong&gt; Friday afternoon, five minutes. What did you ship? What did you unblock? What decisions did you influence?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ship something visible every week.&lt;/strong&gt; It doesn’t have to be a major feature—fixing a bug, improving documentation, or sharing a design sketch counts. Make shipping a habit, not an event.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Share progress within a day or two.&lt;/strong&gt; If you’ve been working on something for more than a day or two without sharing any progress, you’re probably holding on too long. Unshipped work is invisible work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Feed your self-assessments.&lt;/strong&gt; When review season comes, your log &lt;em&gt;is&lt;/em&gt; your self-assessment draft. Copy, paste, polish.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build your promotion packet early.&lt;/strong&gt; The best promotion cases aren’t written in a weekend—they’re assembled over months from a well-maintained log.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a id=&quot;quote-q-nobody-else-will-manage-your&quot; href=&quot;#quote-q-nobody-else-will-manage-your&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;q-nobody-else-will-manage-your&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;Nobody else will manage your career. Your company manages your role. You manage your trajectory.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; Start the doc today—future you will be grateful.&lt;/p&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;There&apos;s a whole book&apos;s worth more where this came from.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>No agenda, no meeting</title><link>https://ben.balter.com/2026/04/06/no-agenda-no-meeting/</link><guid isPermaLink="true">https://ben.balter.com/2026/04/06/no-agenda-no-meeting/</guid><description>Announcing noagendanomeeting.net — a single-page site advocating that every meeting deserves an agenda, and most meetings deserve to be a document instead.</description><pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2026/04/06/no-agenda-no-meeting/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You get the invite. No description. No agenda. No attached document. Just a title like “Quick sync” and a 30-minute calendar hold. You accept it anyway, because what else are you going to do — decline a meeting with your skip-level?&lt;/p&gt;
&lt;p&gt;I’ve &lt;a href=&quot;/2023/04/20/meetings-are-a-point-of-escalation/&quot;&gt;written before&lt;/a&gt; about how meetings should be a point of escalation, not a starting point. But the agenda-free meeting is an even more fundamental failure mode: it’s a meeting that hasn’t even bothered to justify its own existence.&lt;/p&gt;
&lt;p&gt;So I made a site about it: &lt;a href=&quot;https://noagendanomeeting.net&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;noagendanomeeting.net&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;why-this-matters&quot;&gt;Why this matters&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#why-this-matters&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A meeting without an agenda is like calling a function without documentation — sure, it &lt;em&gt;might&lt;/em&gt; do what you expect, but you’re forcing every caller to read the implementation to find out. Meetings without agendas force everyone to context-switch twice: once to figure out what it’s about, and again in the meeting itself when they arrive unprepared.&lt;/p&gt;
&lt;p&gt;The average knowledge worker already spends &lt;a href=&quot;https://noagendanomeeting.net&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;40% of their workweek&lt;/a&gt; in meetings. Without clear goals, those meetings drift, no decisions get made, and everyone leaves wondering if that could’ve been an email. (It could’ve.)&lt;/p&gt;
&lt;h2 id=&quot;the-thesis&quot;&gt;The thesis&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#the-thesis&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The site’s core argument: &lt;a href=&quot;/2023/08/04/remote-work-communicate-more-with-less/&quot;&gt;writing scales; meetings don’t&lt;/a&gt;. Before you send that invite, ask yourself: &lt;em&gt;can this start as a document instead?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If the answer is yes — and it almost always is — write first, meet second. If you do need a meeting, include an agenda, attach a read-ahead, and state the decision you’re trying to make. This isn’t radical advice. It’s basic &lt;a href=&quot;/2022/03/17/why-async/&quot;&gt;async-first communication&lt;/a&gt; hygiene.&lt;/p&gt;
&lt;h2 id=&quot;what-to-do-about-it&quot;&gt;What to do about it&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#what-to-do-about-it&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Next time you get a meeting invite without an agenda, try something wild: decline it. Or better yet, reply asking for one. You can even send them the link — &lt;a href=&quot;https://noagendanomeeting.net&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;noagendanomeeting.net&lt;/a&gt; is a lot more diplomatic than “I’m not attending your agenda-free ambush.”&lt;/p&gt;
&lt;p&gt;If you &lt;a href=&quot;/2023/01/10/manage-like-an-engineer/&quot;&gt;manage like an engineer&lt;/a&gt;, you already know that undefined inputs produce undefined outputs. Meetings are no different. &lt;a id=&quot;quote-define-the-problem-first&quot; href=&quot;#quote-define-the-problem-first&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;define-the-problem-first&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;Define the problem before you schedule the standup.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Check it out at &lt;a href=&quot;https://noagendanomeeting.net&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;noagendanomeeting.net&lt;/a&gt;, and the next time someone sends you a mystery meeting, you’ll know exactly what link to send back.&lt;/p&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;There&apos;s a whole book&apos;s worth more where this came from.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>Agentic workflows and the future of code</title><link>https://ben.balter.com/2026/03/18/agentic-workflows/</link><guid isPermaLink="true">https://ben.balter.com/2026/03/18/agentic-workflows/</guid><description>AI coding agents aren&apos;t replacing developers — they&apos;re extending the transparency, code review, and collaboration patterns behind open source.</description><pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2026/03/18/agentic-workflows/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;aside class=&quot;my-6 rounded border-l-4 border-blue-500 bg-blue-50 p-4 font-sans text-blue-800 dark:bg-blue-900/30 dark:text-blue-200&quot; role=&quot;note&quot;&gt;
&lt;p&gt;Context: I, human &lt;a href=&quot;https://github.com/benbalter&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;@benbalter&lt;/strong&gt;&lt;/a&gt;, asked GitHub Copilot’s coding agent to “Add &lt;a href=&quot;https://github.github.com/gh-aw/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;agentic workflows&lt;/a&gt;” to my personal blog repo. That was the entire prompt. I was hoping AI could automate things like dependency updates. The first thing the agent did — unprompted — was to write this self-promotional blog post in my voice and style. What follows is posted &lt;a href=&quot;https://github.com/benbalter/benbalter.github.com/pull/1687&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;unedited&lt;/a&gt; (and ironically) to let the robots speak for themselves. &lt;a href=&quot;https://knowyourmeme.com/memes/i-for-one-welcome-our-new-insect-overlords&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;i&gt;I, for one, welcome our robot overlords&lt;/i&gt;&lt;/a&gt;. &lt;span role=&quot;img&quot; aria-label=&quot;robot face&quot;&gt;🤖&lt;/span&gt;&lt;/p&gt;
&lt;/aside&gt;
&lt;p&gt;A number of years ago, I wrote about how &lt;a href=&quot;/2023/05/19/pull-requests-are-a-form-of-documentations/&quot;&gt;pull requests are a form of documentation&lt;/a&gt; — not just a code review mechanism, but a persistent record of &lt;em&gt;why&lt;/em&gt; a change was made, what alternatives were considered, and how the team arrived at a decision. At the time, I was thinking about human collaboration. I didn’t anticipate that the same argument would soon apply to how we collaborate with AI.&lt;/p&gt;
&lt;p&gt;Agentic workflows — where AI agents autonomously write code, run tests, fix bugs, and open pull requests — are quickly moving from demo to daily practice. What strikes me most about this shift isn’t the technology itself, but how naturally it maps to patterns we’ve already built. Pull requests. Code review. Transparent decision-making. Showing your work. The interface for human-AI collaboration was hiding in plain sight all along.&lt;/p&gt;
&lt;h2 id=&quot;from-autocomplete-to-autonomy&quot;&gt;From autocomplete to autonomy&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#from-autocomplete-to-autonomy&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Most developers are already familiar with AI-assisted coding through tools like &lt;a href=&quot;https://github.com/features/copilot&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;GitHub Copilot&lt;/a&gt;, which suggests code completions as you type. That’s useful, but it’s fundamentally still &lt;em&gt;you&lt;/em&gt; driving — the AI is a passenger offering directions. Agentic development flips that relationship. You describe what needs to happen (“fix this bug”, “add pagination to this API endpoint”, “update these dependencies”), and an AI agent goes off and does the work: reading the codebase, writing code, running tests, iterating on failures, and eventually opening a pull request for your review.&lt;/p&gt;
&lt;p&gt;Think of it less like a smarter autocomplete and more like assigning a task to a capable but junior developer. You provide context and direction. They do the implementation. You review the result.&lt;/p&gt;
&lt;p&gt;This isn’t hypothetical. &lt;a href=&quot;https://github.blog/news-insights/product-news/github-copilot-the-agent-awakens/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;GitHub Copilot’s coding agent&lt;/a&gt; can already take a GitHub issue, spin up a cloud development environment, write the code, validate it against your &lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Continuous Integration—automatically building and testing every change&quot; title=&quot;Continuous Integration—automatically building and testing every change&quot; tabindex=&quot;0&quot;&gt;CI&lt;/abbr&gt; pipeline, and open a &lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Pull request—a proposed set of code changes submitted for review&quot; title=&quot;Pull request—a proposed set of code changes submitted for review&quot; tabindex=&quot;0&quot;&gt;PR&lt;/abbr&gt; — all without a human touching a keyboard. The pull request becomes the handoff point, the place where human judgment re-enters the picture.&lt;/p&gt;
&lt;h2 id=&quot;building-on-what-already-works&quot;&gt;Building on what already works&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#building-on-what-already-works&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Here’s why I find agentic development so compelling: it doesn’t require inventing new collaboration patterns. It builds directly on the ones we already have.&lt;/p&gt;
&lt;p&gt;I’ve spent a good chunk of my career at GitHub advocating for practices that, at the time, were about improving human collaboration:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pull requests as documentation&lt;/strong&gt; — Every change should come with context, rationale, and a discussion trail. I wrote about this in &lt;a href=&quot;/2023/05/19/pull-requests-are-a-form-of-documentations/&quot;&gt;Pull requests are a form of documentation&lt;/a&gt;, and it’s even more relevant when the author is an AI agent that can’t casually explain its reasoning over coffee.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code review as quality control&lt;/strong&gt; — A second set of eyes on every change catches mistakes and spreads knowledge across the team.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transparency and visibility&lt;/strong&gt; — &lt;a href=&quot;/2023/08/30/transparency-collaboration-is-the-andon-of-knowledge-production/&quot;&gt;Making work visible&lt;/a&gt; means anyone can see what’s happening, why, and by whom — what I’ve called the “andon cord” of knowledge work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automation as a force multiplier&lt;/strong&gt; — CI/&lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Continuous Delivery—automatically shipping every change that passes tests&quot; title=&quot;Continuous Delivery—automatically shipping every change that passes tests&quot; tabindex=&quot;0&quot;&gt;CD&lt;/abbr&gt; pipelines, linters, automated tests — we’ve been offloading mechanical tasks to machines for years. AI agents are the next step in that trajectory.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These practices weren’t designed with AI in mind, but they created the exact infrastructure agents need to participate in software development. An agent can open a pull request because pull requests already exist as a structured way to propose, discuss, and review changes. An agent’s work can be reviewed because code review is already how we verify quality. An agent’s reasoning can be traced because we already expect changes to come with explanations.&lt;/p&gt;
&lt;p&gt;Teams that have invested in strong PR conventions, thorough code review, comprehensive test suites, and reliable CI pipelines will find the transition to agentic development surprisingly smooth. Teams that haven’t? They’ll struggle — not because the AI is hard to use, but because they lack the collaboration infrastructure that makes it effective.&lt;/p&gt;
&lt;h2 id=&quot;why-pull-requests-are-the-perfect-interface&quot;&gt;Why pull requests are the perfect interface&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#why-pull-requests-are-the-perfect-interface&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you had to design an interface for human-AI collaboration from scratch, you’d probably end up with something that looks a lot like a pull request.&lt;/p&gt;
&lt;p&gt;A pull request provides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A clear proposal&lt;/strong&gt; — Here’s what I want to change and why&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A discussion thread&lt;/strong&gt; — Questions, feedback, and iteration&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automated checks&lt;/strong&gt; — Tests, linting, and CI verify the change works before a human even looks at it&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A review mechanism&lt;/strong&gt; — A human approves (or requests changes) before anything ships&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An audit trail&lt;/strong&gt; — A permanent record of what changed, when, and why&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That’s everything you need for effective oversight. The AI agent does the implementation and opens the PR. &lt;a href=&quot;https://github.com/features/actions&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;GitHub Actions&lt;/a&gt; runs the automated checks. You review the diff, read the description, ask questions in comments, and approve or request changes — the same process you’d follow with a human contributor you’ve never met before.&lt;/p&gt;
&lt;p&gt;This isn’t a coincidence. Pull requests evolved as the open source community’s answer to a fundamental challenge: how do you accept contributions from people you don’t fully trust, at scale, while maintaining quality? That’s a problem we solved decades ago with code review, CI, and transparent discussion. AI agents are the latest class of contributors benefiting from that infrastructure.&lt;/p&gt;
&lt;h2 id=&quot;a-shift-from-writing-to-reviewing&quot;&gt;A shift from writing to reviewing&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#a-shift-from-writing-to-reviewing&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;One of the more interesting implications of agentic development is how it changes what developers actually spend their time doing. When an AI agent handles the initial implementation, your role shifts from writing every line of code to something closer to a tech lead: providing context, setting direction, and reviewing output.&lt;/p&gt;
&lt;p&gt;I wrote about a similar dynamic in &lt;a href=&quot;/2023/01/10/manage-like-an-engineer/&quot;&gt;Manage like an engineer&lt;/a&gt; — the idea that good management applies many of the same principles as good engineering. Working with an AI agent extends that analogy further. It’s like managing a junior developer who’s incredibly fast, never gets tired, and has read every Stack Overflow answer — but who still needs guidance, context, and oversight to produce work that fits your team’s standards.&lt;/p&gt;
&lt;p&gt;This means the skills that matter shift too:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Writing clear problem descriptions&lt;/strong&gt; becomes more valuable than writing boilerplate code from scratch&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code review skills&lt;/strong&gt; move from “nice to have” to essential daily practice&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;System-level thinking&lt;/strong&gt; — understanding architecture, trade-offs, and context — matters more than syntax fluency&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Judgment&lt;/strong&gt; — knowing when to accept, reject, or redirect the agent’s output — becomes critical&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of this makes developers less important. If anything, it makes experienced developers &lt;em&gt;more&lt;/em&gt; important, because the skills that are hardest to automate — architectural judgment, product intuition, understanding user needs — are exactly the skills senior engineers contribute.&lt;/p&gt;
&lt;h2 id=&quot;trust-but-verify&quot;&gt;Trust but verify&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#trust-but-verify&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I want to be direct about something: the need for human oversight doesn’t go away as AI agents get better. It arguably increases.&lt;/p&gt;
&lt;p&gt;When a colleague opens a pull request, you bring assumptions to the review. You know they understand the team’s conventions. You know they’ve considered the user’s perspective. You know they’ve thought about edge cases, even if they missed some. With an AI agent, you can’t make those assumptions yet. The code might be syntactically correct and pass all tests while still missing important context about why your team chose a particular pattern, or what a product manager actually meant by “improve the onboarding flow.”&lt;/p&gt;
&lt;p&gt;This is why practices like &lt;a href=&quot;/2023/08/30/transparency-collaboration-is-the-andon-of-knowledge-production/&quot;&gt;transparent collaboration&lt;/a&gt; and &lt;a href=&quot;/2017/05/23/seven-ways-to-consistently-ship-great-features/&quot;&gt;consistently shipping great features&lt;/a&gt; matter more than ever. Good process isn’t bureaucracy — it’s a safety net. When you have comprehensive tests, reliable CI, thorough code review, and clear coding standards, you can confidently accept contributions from &lt;em&gt;any&lt;/em&gt; source, human or AI, because the process catches problems regardless of who introduced them.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;A few principles worth keeping in mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Review AI-generated code with the same rigor you’d apply to any external contribution.&lt;/strong&gt; Don’t let the novelty of AI make you either too skeptical or too trusting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Invest in your test suite.&lt;/strong&gt; Automated tests are the single best defense against subtle bugs, whether introduced by a human at 2 AM or an AI agent at 2 PM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep a human in the loop for anything that touches users directly.&lt;/strong&gt; AI agents are great at mechanical tasks, but product decisions still need human judgment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Treat AI-generated PRs as a learning opportunity.&lt;/strong&gt; Reviewing them helps you understand what the agent does well and where it consistently falls short.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;making-agentic-development-work-for-your-team&quot;&gt;Making agentic development work for your team&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#making-agentic-development-work-for-your-team&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you’re considering adopting agentic practices — and at this point, you probably should be — here’s where I’d start:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Shore up your fundamentals first.&lt;/strong&gt; Descriptive PR templates, a comprehensive test suite, reliable CI, and clear contribution guidelines aren’t just nice to haves anymore — they’re prerequisites. An AI agent can only be as effective as the development infrastructure it operates within.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Start with well-scoped tasks.&lt;/strong&gt; Bugfixes, dependency updates, boilerplate scaffolding, test coverage improvements — these are ideal entry points. Save the complex architectural decisions for when you’ve built confidence in the approach.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write better issues.&lt;/strong&gt; The quality of an agent’s output is directly proportional to the quality of its input. Invest time in clear, detailed issue descriptions with acceptance criteria, context, and pointers to relevant code. This habit, by the way, improves human contributions too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Iterate on your review process.&lt;/strong&gt; Pay attention to what the AI gets right and where it misses the mark. Use that information to refine your prompts, your contribution guidelines, and your review checklists.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don’t lower your standards.&lt;/strong&gt; It’s tempting to merge AI-generated code faster because it “feels” different from a human’s PR. Resist that impulse. Your review process exists for a reason.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;what-comes-next&quot;&gt;What comes next&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#what-comes-next&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I’ve been at GitHub long enough to see several waves of tooling transform how developers work — from hosted version control to pull request-driven collaboration to CI/CD to Copilot’s autocomplete. Agentic AI feels like a natural continuation of that trajectory, not a departure from it.&lt;/p&gt;
&lt;p&gt;What excites me most isn’t the AI itself but the validation of practices the open source community has championed for years. &lt;a href=&quot;/2015/11/23/why-open-source/&quot;&gt;Why open source?&lt;/a&gt; Because transparency, collaboration, and peer review produce better outcomes than closed, opaque processes. Agentic AI doesn’t change that equation — it strengthens it. The pull request, the code review, the public discussion trail — these aren’t relics of a pre-AI era. They’re the foundation of the AI-augmented one.&lt;/p&gt;
&lt;p&gt;The developers and teams who thrive won’t be the ones who write the most code. They’ll be the ones who provide the best context, ask the sharpest questions, and maintain the highest standards for what gets shipped — regardless of who or what wrote it.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot; aria-label=&quot;Footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#footnote-label&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;This is one of those cases where doing the right thing for your human contributors and doing the right thing for AI agents turn out to be the same investment. Funny how that works. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;This post inspired a chapter in my book, Open &amp;amp; Async.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>Thirteen years remote at GitHub: what works</title><link>https://ben.balter.com/2026/03/04/thirteen-years-at-github/</link><guid isPermaLink="true">https://ben.balter.com/2026/03/04/thirteen-years-at-github/</guid><description>When I joined GitHub in 2013, I found a company that had rethought how work happens. Thirteen years later, those lessons are more relevant than ever.</description><pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2026/03/04/thirteen-years-at-github/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;aside class=&quot;my-6 rounded border-l-4 border-blue-500 bg-blue-50 p-4 text-blue-800 dark:bg-blue-900/30 dark:text-blue-200&quot; role=&quot;note&quot;&gt;
&lt;p&gt;Context: today marks thirteen years since I joined GitHub. I’ve been writing a book—&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-thirteen-years&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;Open and Async&lt;/em&gt;&lt;/a&gt;—distilling everything I’ve learned about remote and distributed work into a playbook. To mark the “Hubberversary,” what follows is a &lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Work in progress&quot; title=&quot;Work in progress&quot; tabindex=&quot;0&quot;&gt;WIP&lt;/abbr&gt; sneak preview of the book’s intro:&lt;/p&gt;
&lt;/aside&gt;
&lt;p&gt;We do so many aspects of the workday just because it’s how things have been done since the dawn of the Industrial Revolution. Nobody’s stopped to rethink these processes with modern technology. That perspective shaped how I recognized what GitHub had already accomplished.&lt;/p&gt;
&lt;h2 id=&quot;a-company-that-rethought-the-defaults&quot;&gt;A company that rethought the defaults&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#a-company-that-rethought-the-defaults&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When I joined GitHub in 2013, I found a company that had fundamentally rethought those assumptions about work—it was a remote-first company with no managers and employees spread across the globe (for most of GitHub’s history, 60–75% of employees were remote—today GitHub is 100% remote). This was unusual for startups, let alone large corporations. GitHub was dogmatic about “optimizing for developer happiness,” ensuring the internal development experience was as smooth and integrated as possible.&lt;/p&gt;
&lt;p&gt;Inspired by open-source workflows—the same workflows many GitHub developers grew up with—nearly everything was async. Between GitHub issues, chat, and our trusty robot sidekick Hubot, GitHub was practicing DevOps before it became mainstream. Remote work wasn’t just possible; it was genuinely enjoyable, embedded as a core part of our culture. Put simply, &lt;a href=&quot;https://zachholman.com/talk/how-github-uses-github-to-build-github/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;we used GitHub to build GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;using-github-to-build-github&quot;&gt;Using GitHub to build GitHub&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#using-github-to-build-github&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;GitHub’s development workflow wasn’t born from any formal methodology—it grew out of open-source culture. There were no mandatory daily standups, no sprint planning ceremonies, no fixed-cadence retrospectives. If you had to pin a label on it, the approach looked far more like Kanban’s continuous flow than Scrum’s time-boxed sprints: work moved through visible queues, got reviewed asynchronously, and shipped when it was ready.&lt;/p&gt;
&lt;p&gt;Not all methodologies translate equally well to open and async work. Flow-based approaches—where work is visible on a board, review happens asynchronously, and delivery is continuous—map naturally onto distributed teams. Ceremony-heavy frameworks that depend on everyone being in the same room (or the same time zone) at the same time fight against the grain. The goal isn’t to abandon structure, but to choose structure that makes work &lt;em&gt;visible&lt;/em&gt; rather than &lt;em&gt;synchronous&lt;/em&gt;.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-devops&quot; id=&quot;user-content-fnref-devops&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2 id=&quot;open-source-workflows-for-everything&quot;&gt;Open-source workflows for everything&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#open-source-workflows-for-everything&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This extended to non-code workflows as well. GitHub Issues, Pull Requests, and Markdown were used to manage internal policies, legal matters, HR, and Sales. Need a contract reviewed? Open an issue. Want to propose a change to the vacation policy? Submit a pull request. How you work is just as important as what you work on, so why not use the best tools available?&lt;/p&gt;
&lt;p&gt;The choice of Markdown wasn’t arbitrary—it uses simple characters you already know (&lt;code&gt;#&lt;/code&gt; for headings, &lt;code&gt;-&lt;/code&gt; for bullets, &lt;code&gt;**&lt;/code&gt; for bold) to format plain text that’s readable even without rendering. Unlike emailing Word documents back and forth with revision marks and conflicting versions, Markdown files play nicely with version control and render beautifully in most modern tools. This eliminated the perennial “which version is current?” problem and made collaborative editing genuinely async. When your HR policy lives in a Markdown file with a complete change history, everyone can see not just what the policy is, but why it changed and who advocated for it.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-markdown-ai&quot; id=&quot;user-content-fnref-markdown-ai&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2 id=&quot;a-hub-not-a-headquarters&quot;&gt;A hub, not a headquarters&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#a-hub-not-a-headquarters&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;GitHub had a physical office in San Francisco, but it was more hub than requirement. The office served as a space for meetups, events, and coworking rather than a mandatory 9-to-5 workspace. Hubbers (GitHub employees) were free to work whenever and wherever they were most productive—whether at 3 AM or as digital nomads. This flexibility stood in stark contrast to the traditional office culture of the time.&lt;/p&gt;
&lt;p&gt;Despite being remote, GitHub valued in-person interactions. The company hosted an annual “summit” where all employees gathered for a week of talks and coworking, as well as smaller team “mini-summits” for planning and relationship-building. Even GitHub HQ was optimized for remote work, featuring open “cafés” for serendipitous interactions and advanced streaming setups for remote participation in all-hands meetings.&lt;/p&gt;
&lt;p&gt;Early on, GitHub had “Hack Houses” where cross-functional teams would meet up in person for a week to ship a complex or high-profile project. We also had “Destinations” where employees could work for extended periods in shared houses in different locations around the world. These didn’t scale as we grew, but remain a powerful tool for smaller teams or companies to build relationships and ship work together.&lt;/p&gt;
&lt;h2 id=&quot;intentionality-over-proximity&quot;&gt;Intentionality over proximity&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#intentionality-over-proximity&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The physical space strategy reflected a deeper truth about remote work: what happens by accident in an office must be designed deliberately when distributed. You can’t rely on overhearing a conversation that sparks an idea or bumping into someone at the coffee machine who has exactly the context you need. These moments can still happen—they just require intentional creation rather than convenient proximity.&lt;/p&gt;
&lt;p&gt;Remote teams often worry about losing the “water cooler” moments—those unplanned hallway conversations that spark unexpected ideas. Create digital equivalents: optional social channels, virtual coffee roulettes, or open-ended team threads. The serendipity doesn’t have to disappear; it just needs to be intentionally designed rather than left to physical proximity.&lt;/p&gt;
&lt;p&gt;You’d think remote work would weaken company culture. The opposite was true. Remote work forced us to be intentional about communication, documentation, decision-making, and relationship-building. This intentionality strengthened GitHub’s culture, enabling it to scale from a small startup to a large company without losing its unique identity, even after its acquisition by Microsoft.&lt;/p&gt;
&lt;h2 id=&quot;the-pursuit-of-an-ideal&quot;&gt;The pursuit of an ideal&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#the-pursuit-of-an-ideal&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Over the years, GitHub practiced many of these principles—imperfectly and not always at once. It’s a story of pursuing an ideal while occasionally falling short. Even so, GitHub remains the closest I’ve seen to a company getting remote and distributed work “right,” which is why so many former Hubbers return after seeing how others do it.&lt;/p&gt;
&lt;h2 id=&quot;what-thirteen-years-taught-me&quot;&gt;What thirteen years taught me&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#what-thirteen-years-taught-me&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The patterns that emerged from a decade-plus of distributed experimentation—working in the open, defaulting to async, documenting decisions, making work visible—aren’t just GitHub quirks. They’re repeatable practices that any team can adopt, regardless of industry or company size.&lt;/p&gt;
&lt;p&gt;GitHub’s remote work evolution shows that distributed collaboration isn’t just possible—it can be a competitive advantage. But success requires more than tools and good intentions. It requires a fundamental shift in how we think about work, communication, and collaboration. If you’re leading a distributed team, you have to invest in codifying practices, building shared context, and maintaining the cultural elements that made remote work successful when you were smaller. &lt;a id=&quot;quote-organic-at-50-deliberate-at-500&quot; href=&quot;#quote-organic-at-50-deliberate-at-500&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;organic-at-50-deliberate-at-500&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;What happened organically at 50 people requires deliberate effort at 500.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; If you’re an individual contributor, the practices that work at scale are exactly the habits worth building now—clear documentation, async-first communication, transparent collaboration. These remote work skills are transferable to any organization and compound over time.&lt;/p&gt;
&lt;aside class=&quot;my-6 rounded border-l-4 border-blue-500 bg-blue-50 p-4 text-blue-800 dark:bg-blue-900/30 dark:text-blue-200&quot; role=&quot;note&quot;&gt;
&lt;p&gt;I’ve been spending the past few years adapting these lessons into a book: &lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-thirteen-years&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;Open and Async&lt;/em&gt;&lt;/a&gt;. If this post resonated with you, the book will go much deeper—covering everything from async communication patterns to leadership in distributed teams to making the case for open workflows at your organization. More to come someday!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: Unlike &lt;a href=&quot;/fine-print/&quot;&gt;other content on this site&lt;/a&gt;, this post is Copyright © 2026 by Ben Balter. All rights reserved.&lt;/em&gt;&lt;/p&gt;
&lt;/aside&gt;
&lt;githubculture&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot; aria-label=&quot;Footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#footnote-label&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-devops&quot;&gt;
&lt;p&gt;DevOps breaks down the wall between “people who write code” and “people who deploy it” by making both responsibilities visible and shared. One implementation—ChatOps—puts deployment (and cultural) commands in chat where everyone can see them, creating a natural audit trail and enabling asynchronous collaboration. &lt;a href=&quot;#user-content-fnref-devops&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-markdown-ai&quot;&gt;
&lt;p&gt;Markdown has since become the lingua franca of AI. &lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Large Language Model—the kind of AI that powers chatbots and coding assistants&quot; title=&quot;Large Language Model—the kind of AI that powers chatbots and coding assistants&quot; tabindex=&quot;0&quot;&gt;LLMs&lt;/abbr&gt; natively read and generate Markdown, and its lightweight syntax often uses fewer characters (and typically fewer tokens) than HTML or rich text formats, making every AI interaction more efficient. A format chosen for human collaboration turned out to be AI-native too. &lt;a href=&quot;#user-content-fnref-markdown-ai&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;&lt;/githubculture&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;This post is adapted from my book, Open &amp;amp; Async.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>How to run LanguageTool on macOS</title><link>https://ben.balter.com/2025/01/30/how-to-run-language-tool-open-source-grammarly-alternative-on-macos/</link><guid isPermaLink="true">https://ben.balter.com/2025/01/30/how-to-run-language-tool-open-source-grammarly-alternative-on-macos/</guid><description>Set up LanguageTool as a free, open-source Grammarly alternative that runs locally on your Mac. No subscription required.</description><pubDate>Thu, 30 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2025/01/30/how-to-run-language-tool-open-source-grammarly-alternative-on-macos/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You may be familiar with grammar checking tools like Grammarly,&lt;sup&gt;&lt;a href=&quot;#user-content-fn-grammarly&quot; id=&quot;user-content-fnref-grammarly&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; but if you’re privacy-conscious like me, you likely don’t want to send everything you type to a third-party service (or may be prohibited from doing so by your employer). Enter &lt;a href=&quot;https://languagetool.org/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;LanguageTool&lt;/a&gt;, a free and open-source grammar, style, and spell checker that can be run locally on your machine, so &lt;a id=&quot;quote-nothing-leaves-your-computer&quot; href=&quot;#quote-nothing-leaves-your-computer&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;nothing-leaves-your-computer&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;nothing you type ever leaves your computer&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. LanguageTool can be used with your browser, with VS Code,&lt;sup&gt;&lt;a href=&quot;#user-content-fn-vscode&quot; id=&quot;user-content-fnref-vscode&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; and with Slack and other common applications. For those looking to run LanguageTool like this, I’ve tried a number of ways, and here’s the easiest:&lt;/p&gt;
&lt;h2 id=&quot;set-up-the-local-server&quot;&gt;Set up the local server&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#set-up-the-local-server&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;First you need to install the backend server, which is a Java application. You could do this manually or via Docker (trust me, I tried both with varying levels of success), but I recommend letting Homebrew do the heavy lifting for you.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-homebrew&quot; id=&quot;user-content-fnref-homebrew&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; Homebrew creates its own &lt;code&gt;languagetool-server&lt;/code&gt; executable that wraps the LanguageTool jar around the Homebrew-maintained Java runtime, saving you from having to manage a Java environment yourself. In theory, it “just works”. Here’s how to install and run it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;brew install languagetool&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brew services start languagetool&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This will install the LanguageTool server and set it to start automatically on boot as a Homebrew-managed service. Once you have the server running, you can use LanguageTool in your browser, in Slack, VS Code, etc. Read on for how to set up each (you can pick and choose once you’ve installed the server).&lt;/p&gt;
&lt;p&gt;Note: If you’d like to test that the server is running at this point, you can run &lt;code&gt;curl --data &quot;language=en-US&amp;#x26;text=a simple test&quot; http://localhost:8081/v2/check&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;one-potential-gotcha&quot;&gt;One potential gotcha&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#one-potential-gotcha&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;If you previously installed the &lt;code&gt;languagetool&lt;/code&gt; cask,&lt;sup&gt;&lt;a href=&quot;#user-content-fn-disambiguation&quot; id=&quot;user-content-fnref-disambiguation&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; or accidentally installed it first, installing the non-cask version will likely fail to set up the backend service, due to the namespace conflict. The &lt;code&gt;install&lt;/code&gt; command itself won’t fail, but you’ll see a “missing path” error in the installation output and the service will not be running. If so, here’s how to fix it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;brew uninstall languagetool --cask&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brew reinstall languagetool&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brew services start languagetool&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Optionally reinstall the frontend (see below)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;languagetool-in-your-browser-chrome-edge-firefox&quot;&gt;LanguageTool in your browser (Chrome, Edge, Firefox)&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#languagetool-in-your-browser-chrome-edge-firefox&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;LanguageTool works great in your browser for any text box, Google Doc, GitHub issue, etc. Here’s how to set it up:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install the LanguageTool extension for your browser - &lt;a href=&quot;https://languagetool.org/chrome/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Chrome&lt;/a&gt;, &lt;a href=&quot;https://microsoftedge.microsoft.com/addons/detail/ai-grammar-checker-para/hfjadhjooeceemgojogkhlppanjkbobc&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Edge&lt;/a&gt;, &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/languagetool/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Firefox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;In the extension settings, set the “API Server URL” to “Local server”.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That last step is important because the extension defaults to using the public LanguageTool server, which is not the one you just installed.&lt;/p&gt;
&lt;h2 id=&quot;languagetool-in-slack-and-other-common-work-applications&quot;&gt;LanguageTool in Slack and other common work applications&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#languagetool-in-slack-and-other-common-work-applications&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;LanguageTool also has a macOS-native frontend that provides support for Slack, Mail, Word, and other common work applications. Here’s how to install it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;brew install languagetool --cask&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Launch the app from the Applications folder&lt;/li&gt;
&lt;li&gt;Open the LanguageTool settings via the menubar icon (LT icon &gt; Gear icon &gt; Settings)&lt;/li&gt;
&lt;li&gt;Under “Advanced”, set the “API Server URL” to “Local server” (again, otherwise it will default to the public server)&lt;/li&gt;
&lt;li&gt;Under “Active apps”, enable LanguageTool for Slack, etc.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;languagetool-in-vs-code&quot;&gt;LanguageTool in VS Code&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#languagetool-in-vs-code&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=davidlday.languagetool-linter&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;the extension&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;It just works!&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;languagetool-in-safari&quot;&gt;LanguageTool in Safari&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#languagetool-in-safari&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Safari does not allow extensions to make calls from HTTPS pages to HTTP endpoints (the local server), meaning before we can use the Safari LanguageTool extension, we’ll need to set up an HTTPS proxy so that it will work on HTTPS websites. Here’s an easy way to do that:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;brew install caddy&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a &lt;code&gt;/opt/homebrew/etc/Caddyfile&lt;/code&gt; file with the following contents:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto; white-space: pre-wrap; word-wrap: break-word;&quot; tabindex=&quot;0&quot; data-language=&quot;txt&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;localhost:8082&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;reverse_proxy :8081&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;brew services start caddy&lt;/code&gt;. Note: You will be asked to &lt;code&gt;sudo&lt;/code&gt; as Caddy creates a locally trusted certificate.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install &lt;a href=&quot;https://apps.apple.com/us/app/languagetool-grammar-checker/id1534275760&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;the Safari extension&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the Safari extension, for “API Server URL” choose “Other server” and enter &lt;code&gt;https://localhost:8082/v2&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This will set up a reverse proxy that listens on port &lt;code&gt;8082&lt;/code&gt; and forwards requests to the local LanguageTool server. If you’d like to test that the server and proxy are running, you can run &lt;code&gt;curl --data &quot;language=en-US&amp;#x26;text=a simple test&quot; https://localhost:8082/v2/check&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;n-grams&quot;&gt;N-grams&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#n-grams&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As a bonus, you can set up n-gram data sets to improve LanguageTool’s ability to detect errors with words that are often confused:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;LanguageTool can make use of large n-gram data sets to detect errors with words that are often confused, like their and there.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It’s a large download, but it’s worth it if you have the space and are going to be using LanguageTool a lot. Here’s how to set it up:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://languagetool.org/download/ngram-data/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Download&lt;/a&gt; the n-gram dataset(s) for your language(s) onto your local machine and unzip them into a local n-grams directory. I recommend &lt;code&gt;~/ngrams&lt;/code&gt;, but you can install it anywhere. (Note: the data is language specific, so unzip the download to, e.g., &lt;code&gt;~/ngrams/en&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Edit &lt;code&gt;/opt/homebrew/etc/languagetool/server.properties&lt;/code&gt;, adding &lt;code&gt;languageModel=/Users/benbalter/ngrams&lt;/code&gt;, replacing the path to the absolute path of where you downloaded and unzipped the n-gram data.&lt;/li&gt;
&lt;li&gt;Restart the service: &lt;code&gt;brew services restart languagetool&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you did it correctly, again, it should “just work”, but if you want to confirm, you should see a message in the logs that says &lt;code&gt;INFO: Using n-gram data from /Users/benbalter/ngrams&lt;/code&gt; (or whatever path you used).&lt;/p&gt;
&lt;h2 id=&quot;troubleshooting&quot;&gt;Troubleshooting&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#troubleshooting&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;By default, LanguageTool logs live in: &lt;code&gt;/opt/homebrew/var/log/languagetool/languagetool-server.log&lt;/code&gt; and Caddy logs live in: &lt;code&gt;/opt/homebrew/var/log/caddy.log&lt;/code&gt;. If you want to see if LanguageTool is running, you can use &lt;code&gt;brew services list&lt;/code&gt;, or try one of the &lt;code&gt;curl&lt;/code&gt; methods mentioned earlier.&lt;/p&gt;
&lt;h2 id=&quot;taking-it-a-step-further&quot;&gt;Taking it a step further&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#taking-it-a-step-further&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you &lt;em&gt;really&lt;/em&gt; want to make sure what you type doesn’t traverse the internet, you can modify your hosts file or use another method (like firewall rules or Little Snitch) to block the public LanguageTool server (&lt;code&gt;api.languagetool.org&lt;/code&gt;) at the network level. This way, if you accidentally forget to set the “API Server URL” to “Local server” in one of the clients, the request will fail, and you’ll know that the client is not using the local server.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;That’s it! You now have a powerful, privacy-respecting grammar checker that you can use in your browser, in Slack, in VS Code, and in other common work applications. Happy writing!&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot; aria-label=&quot;Footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#footnote-label&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-grammarly&quot;&gt;
&lt;p&gt;Nothing against Grammarly. It’s a great product. I prefer to use open source tools whenever I can. &lt;a href=&quot;#user-content-fnref-grammarly&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-vscode&quot;&gt;
&lt;p&gt;I used the VS Code extension to write this post, so I &lt;em&gt;really&lt;/em&gt; hope there aren’t any typos. &lt;a href=&quot;#user-content-fnref-vscode&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-homebrew&quot;&gt;
&lt;p&gt;If you’re not familiar with Homebrew, it’s a macOS package manager that makes it easy to install, manage, and update command-line software. If you don’t have it installed, you can do so by running the following command: &lt;code&gt;/bin/bash -c &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&quot;&lt;/code&gt;. &lt;a href=&quot;#user-content-fnref-homebrew&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 3&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-disambiguation&quot;&gt;
&lt;p&gt;The non-cask version is the backend Java server. The cask version (by the same name) is the macOS frontend that provides a menubar icon and settings UI. &lt;a href=&quot;#user-content-fnref-disambiguation&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 4&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;Liked this post? It&apos;s now a book.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>Silencing dissent isn&apos;t crisis management</title><link>https://ben.balter.com/2024/01/08/dissenting-voices/</link><guid isPermaLink="true">https://ben.balter.com/2024/01/08/dissenting-voices/</guid><description>Silencing dissent erodes trust, invites negativity, and stifles learning. The best leaders embrace transparency instead.</description><pubDate>Mon, 08 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2024/01/08/dissenting-voices/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Every seasoned leader I’ve worked with has had to make an unpopular or controversial decision. It’s one of the hallmarks of good leadership. But almost as important as the decision itself, is how you engage with your team following the decision.&lt;/p&gt;
&lt;p&gt;It’s understandable. You spend days, weeks, maybe months agonizing over every detail, every pro and con, every possible outcome. You’ve done your due diligence, and you’ve made the best decision you can given the situation. You’re confident in your decision, and you’re ready to move forward. Then comes the inevitable push back from your team. They have questions, concerns, and objections. They’re not happy with the decision, and they’re not shy about letting you know.&lt;/p&gt;
&lt;p&gt;It’s easy to dismiss that negativity as ignorant, personal, or a vocal minority (“you can’t please everyone”), after all, they have a fraction of the perspective you have as a leader. You might seek to “control the narrative”, by dismissing such voices as inviting negativity, undermining your authority, or asking questions that you’ve already answered, thinking it’s unproductive to further discuss a decision you know is final. Those are all understandable and human reactions.&lt;/p&gt;
&lt;h2 id=&quot;controlling-the-narrative-is-counterproductive&quot;&gt;“Controlling the narrative” is counterproductive&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#controlling-the-narrative-is-counterproductive&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Attempting to “control the narrative” by silencing dissent is not only ineffective, it’s also counterproductive:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;It erodes psychological safety&lt;/strong&gt; - When you shut down the conversation, you send a message that you don’t value the input, the perspective, or the feelings of those affected by your decision. You also signal that you have something to hide, or that you’re not confident in your own reasoning, further eroding trust.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It invites negativity&lt;/strong&gt; - When you ignore the questions, you don’t make them go away. You just push them underground, where they fester and grow. People will start to speculate, gossip, and complain. They will feel resentful, frustrated, and alienated. They will look for ways to resist, sabotage, or undermine your decision.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It stifles learning&lt;/strong&gt; - When you avoid the scrutiny, you miss an opportunity to “&lt;a href=&quot;/2022/02/16/leaders-show-their-work/&quot;&gt;show your work&lt;/a&gt;” and teach through action. An organization’s culture and values are comprised of the underlying assumptions that its members use to make decisions. When decisions are transparent, you offer opportunities for the next generation of leaders to learn and grow through passive observation and lightweight participation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;caremad-is-a-good-thing&quot;&gt;“Caremad” is a good thing&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#caremad-is-a-good-thing&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Like your own reaction, your team’s reaction is equally human, and I’d argue, actually a good thing.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; It means they’re engaged. It means they care. While you’re ready to move on, they just got the news, and they’re still processing. The difference between good leaders and great leaders is in the follow through. Specifically, in their willingness to engage in the &lt;em&gt;emotional labor&lt;/em&gt; of helping their team figure out how to move forward, together.&lt;/p&gt;
&lt;p&gt;That dissent isn’t disengagement or obstructionism as it may be easy to misread. Quite the opposite. They’re likely “caremad”&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; - they’re upset because they care about ensuring the best possible outcomes and are trying to figure out how to do that. The reality is, questions and dissenting voices are a sign that people care about the decision being made. They want to understand the reasoning behind it, and they want to have a say in the process. And as a leader, it’s your job to listen to those voices, take their concerns into account, and plot an &lt;em&gt;emotional&lt;/em&gt; path forward.&lt;/p&gt;
&lt;h2 id=&quot;the-alternative&quot;&gt;The alternative&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#the-alternative&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The best leaders I’ve worked with have always been open to dissenting voices. They’ve always been willing to listen to the other side of the argument, and to engage with it, even if they’re not willing to change their mind. The playbook is simple: be transparent, open, and accountable. This means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Be transparent&lt;/strong&gt; - Share the information, the data, and the evidence that informed your decision. Explain the criteria, the trade-offs, and the implications. Acknowledge the limitations, the uncertainties, and the challenges. Don’t hide, spin, or sugarcoat the facts. Be honest, clear, and consistent.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be open&lt;/strong&gt; - Invite the questions, the feedback, and the dialogue. Listen to the concerns, the objections, and the suggestions. Respond with respect, empathy, and curiosity. Don’t dismiss, deflect, or rebut the views. Be receptive, humble, and collaborative.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be accountable&lt;/strong&gt; - Take responsibility for your decision, your actions, and your results. Admit any mistakes, apologize, correct, and improve. Don’t blame, deny, or justify the faults. Don’t put the burden on others. Be honest, humble, and results-focused.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;While some see leadership as bold and courageous decision making in the face of a difficult situation, I would argue that covering one’s ears and humming in the face of after-the-fact questions shows a lack of leadership in the moment. It’s the equivalent of saying “I would have gotten away with it if it weren’t for you mangy kids…” (for those that grow up watching Scooby-Doo and other Saturday morning “who done it” cartoons).&lt;/p&gt;
&lt;p&gt;The alternative to the “I don’t like what they’re saying so they shouldn’t be allowed to say it” approach is to embrace transparency, openness, and accountability. This means acknowledging the complexity and uncertainty of the situation, explaining the rationale and evidence behind your decision, inviting and addressing the questions and concerns of your stakeholders, and admitting and correcting any errors or shortcomings. This also means being humble and curious, listening and learning from others, and being willing to change your mind or course of action when warranted. This also means being clear and consistent, communicating often and honestly, and following through on your commitments and promises.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot; aria-label=&quot;Footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#footnote-label&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;I’d take an engaged team that can have healthy, productive, and respectful disagreement any day over a team that’s checked out, indifferent, or apathetic. If they don’t care enough about this thing to speak up, it’s likely that there are other, bigger things that they’re not speaking up about either. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;A portmanteau of “care” and “mad”, meaning a software developer who is passionate, enthusiastic, and diligent about their work, and who cares deeply about the quality, functionality, and impact of their code and products. A caremad developer is not satisfied with mediocrity, but strives for excellence, innovation, and continuous improvement. For example, “She’s caremad about accessibility, she always makes sure every feature is compatible with screen readers and keyboard navigation.” &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;This post inspired a chapter in my book, Open &amp;amp; Async.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>Cathedral vs Bazaar People Management</title><link>https://ben.balter.com/2023/12/08/cathedral-bazaar-management/</link><guid isPermaLink="true">https://ben.balter.com/2023/12/08/cathedral-bazaar-management/</guid><description>What if we applied open source&apos;s cathedral vs. bazaar metaphor to management? Cathedral managers control; bazaar managers empower.</description><pubDate>Fri, 08 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2023/12/08/cathedral-bazaar-management/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B0026OR3LM/?tag=benbalter07-20&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;The Cathedral and the Bazaar&lt;/a&gt; is &lt;em&gt;the&lt;/em&gt; book on open source. It contrasts closed source software development (the cathedral), where a centralized and hierarchical authority designs and builds a well-defined system, and open source development (the bazaar), where a decentralized community of contributors can browse, experiment, and collaborate within a modular and adaptable system. The book argues that the bazaar model is more effective, innovative, and resilient than the cathedral model, and in many ways, brought the ideals of the open source movement to the mainstream.&lt;/p&gt;
&lt;p&gt;I’ve written before about &lt;a href=&quot;/2023/01/10/manage-like-an-engineer/&quot;&gt;bringing software development methodology to management&lt;/a&gt;, so what if we apply this cathedral vs. bazaar metaphor to people management styles?&lt;/p&gt;
&lt;h2 id=&quot;cathedral-people-management&quot;&gt;Cathedral people management&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#cathedral-people-management&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The cathedral manager is like the architect of the cathedral. They have a clear and detailed vision of what they want to achieve, and how to get there. They plan everything in advance and assign specific roles, tasks, processes, and standards to their team. They monitor and control their team’s work, and give them precise instructions, feedback, and guidance.&lt;/p&gt;
&lt;p&gt;The cathedral style of people management is characterized by a high degree of control, direction, and standardization with problems and solutions being identified and defined in a top-down manner. Its advantage is that it can produce predictable and reliable results, especially in complex and stable environments. It can also create a much-needed sense of order, clarity, and security for members of the team, who find comfort in knowing what is expected of them and what they can expect in return.&lt;/p&gt;
&lt;p&gt;The disadvantages of the cathedral style of people management are that it can stifle creativity, speed, and innovation among knowledge workers, especially in dynamic and uncertain environments that require a lot of experimentation and adaptation. It can also create a sense of rigidity, bureaucracy, and hierarchy for the team, who may feel constrained, micromanaged, and disempowered.&lt;/p&gt;
&lt;h2 id=&quot;bazaar-people-management&quot;&gt;Bazaar people management&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#bazaar-people-management&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The bazaar manager is like the organizer of the bazaar. Leaders in this style tend to have a broad vision, a flexible plan, and a flat network of roles and responsibilities for the team. The manager acts as the facilitator, the coach, and the enabler of the team’s work, defining goals and objectives and providing guidelines, feedback, and resources, while empowering the team to define their own tasks, processes, and standards, encouraging them to explore and innovate.&lt;/p&gt;
&lt;p&gt;The bazaar style of people management is characterized by a high degree of autonomy and collaboration, with problems and solutions being identified and defined by the team. Its advantage is that it can produce innovative and resilient results, especially in dynamic and uncertain environments. It can also create a sense of freedom, empowerment, and ownership for team members, who can shape their own work, express their own voice, and pursue their own growth.&lt;/p&gt;
&lt;p&gt;At the core of the bazaar style is the belief that team members are competent, self-motivated, and capable of aided self-direction. They encourage their team to explore their interests, share their ideas, and contribute their skills to further the team’s goals. This approach can also foster a culture of openness and trust among the members of the organization, who can learn from each other, support each other, and challenge each other.&lt;/p&gt;
&lt;h2 id=&quot;diagnose-the-situation-then-pick-your-style&quot;&gt;Diagnose the situation, then pick your style&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#diagnose-the-situation-then-pick-your-style&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Whether you’re a manager or an individual contributor (&lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Individual Contributor—someone who does the work rather than managing people&quot; title=&quot;Individual Contributor—someone who does the work rather than managing people&quot; tabindex=&quot;0&quot;&gt;IC&lt;/abbr&gt;), know which style you default to—and which your manager defaults to. Your team might be a mix, or the right approach might shift depending on the scenario. That’s fine. Here’s how the two styles typically differ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;By &lt;strong&gt;industry&lt;/strong&gt;—The self-direction of the bazaar model wouldn’t be a good fit for the military, given the stakes. The cathedral model’s rigidity would suffocate a fast-paced startup that needs room to experiment.&lt;/li&gt;
&lt;li&gt;By &lt;strong&gt;individual&lt;/strong&gt;—A junior engineer needs the structure and clarity the cathedral model provides—“here’s the issue, here’s the approach, and here’s an example &lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Pull request—a proposed set of code changes submitted for review&quot; title=&quot;Pull request—a proposed set of code changes submitted for review&quot; tabindex=&quot;0&quot;&gt;PR&lt;/abbr&gt; to reference.” A senior engineer might chafe at that much direction, preferring freedom to find problems nobody’s filed yet and propose solutions the team hadn’t considered. Likewise, some people are less comfortable living with ambiguity, while others prefer uncertainty and the autonomy that comes with it.&lt;/li&gt;
&lt;li&gt;By &lt;strong&gt;role&lt;/strong&gt;—Outside engineering, the cathedral model fits a line cook—the recipe is well-defined and consistency is everything. The bazaar model fits chefs who value creativity and experimentation as they seek to create new dishes.&lt;/li&gt;
&lt;li&gt;By &lt;strong&gt;work environment&lt;/strong&gt;—Distributed and async teams need more bazaar-style management because you can’t watch people work. Cathedral managers achieve visibility through direct oversight—standing over someone’s shoulder, literally or figuratively. In distributed teams, transparent workflows provide that same visibility without the micromanagement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Find the right balance—and be willing to switch as the situation demands. &lt;a id=&quot;quote-match-management-to-the-moment&quot; href=&quot;#quote-match-management-to-the-moment&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;match-management-to-the-moment&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;Match the management to the moment.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;putting-it-into-practice&quot;&gt;Putting it into practice&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#putting-it-into-practice&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;For managers:&lt;/strong&gt; Distributed teams generally thrive with bazaar-style leadership because it emphasizes autonomy and trust—exactly what you need when you can’t see people working. But be ready to shift toward the cathedral when onboarding new team members, during crises requiring rapid coordination, or when establishing standards everyone must follow. The point isn’t ideological purity; it’s flexibility. If someone’s work starts slipping, lean into more cathedral-style management and the visibility advantages of working in the open until they’re back on track.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For ICs:&lt;/strong&gt; Knowing your manager’s style helps you meet them where they are. If they lean cathedral, proactively share progress and ask clarifying questions before proceeding. If they lean bazaar, take initiative and document your decisions. Senior ICs often operate bazaar-style regardless of their manager—defining problems, proposing solutions, and bringing others along through influence rather than authority.&lt;/p&gt;
&lt;p&gt;&lt;a id=&quot;quote-cathedral-bazaar-operating-systems&quot; href=&quot;#quote-cathedral-bazaar-operating-systems&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;cathedral-bazaar-operating-systems&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;Cathedral and bazaar aren’t personality traits—they’re management operating systems you can swap depending on the moment.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; For distributed teams, the default should lean bazaar (autonomy plus transparency), but knowing when to shift toward cathedral matters just as much. As a manager, ask yourself: are you building a cathedral or a bazaar? As an IC, ask yourself: do you prefer working in a cathedral or a bazaar? And most importantly—are you and your manager on the same page? Get the balance right, and your team ships better work with less friction.&lt;/p&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;This post is adapted from my book, Open &amp;amp; Async.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>How to communicate like a GitHub engineer</title><link>https://ben.balter.com/2023/10/04/how-to-communicate-like-a-github-engineer/</link><guid isPermaLink="true">https://ben.balter.com/2023/10/04/how-to-communicate-like-a-github-engineer/</guid><description>How GitHub turned its guiding communication principles into prescriptive practices to manage internal signal-to-noise ratio.</description><pubDate>Wed, 04 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2023/10/04/how-to-communicate-like-a-github-engineer/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;This post inspired a chapter in my book, Open &amp;amp; Async.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>Transparent collaboration is the andon of knowledge work</title><link>https://ben.balter.com/2023/08/30/transparency-collaboration-is-the-andon-of-knowledge-production/</link><guid isPermaLink="true">https://ben.balter.com/2023/08/30/transparency-collaboration-is-the-andon-of-knowledge-production/</guid><description>Like Toyota&apos;s andon cord, transparent collaboration lets anyone stop the line when they spot a problem in knowledge work.</description><pubDate>Wed, 30 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2023/08/30/transparency-collaboration-is-the-andon-of-knowledge-production/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The shift from waterfall to agile was predicated on the belief that what worked for the factory floor during the Industrial Revolution would not work for knowledge work in the Information Age, but assembly lines and modern software development have more in common than you might think:&lt;/p&gt;
&lt;p&gt;Agile development can trace its roots back to the production floor of Toyota as far back as the 40s and 50s. At the core of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Toyota_Production_System&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Toyota Production System&lt;/a&gt; (what eventually inspired the &lt;a href=&quot;https://en.wikipedia.org/wiki/Lean_manufacturing&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;lean manufacturing&lt;/a&gt; movement) was the concept of an &lt;a href=&quot;https://en.wikipedia.org/wiki/Andon_(manufacturing)&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;andon&lt;/a&gt;, a concept we continue to see driving benefit in modern software development today.&lt;/p&gt;
&lt;h2 id=&quot;anyone-can-stop-the-line-for-any-reason&quot;&gt;Anyone can stop the line for any reason&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#anyone-can-stop-the-line-for-any-reason&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In short, an andon is a system of lights and signals that allows workers to alert managers and colleagues to any problems or defects in the production process. With the pull of a cord or the press of a button at each station by any worker, the entire production system grinds to an instant halt.&lt;/p&gt;
&lt;aside class=&quot;objection&quot; aria-label=&quot;Objection and response&quot;&gt;&lt;p class=&quot;objection-q&quot;&gt;&lt;span class=&quot;objection-label&quot;&gt;But what about…&lt;/span&gt; Isn’t it counterintuitive to make it easier for &lt;em&gt;anyone&lt;/em&gt; to shut down production?&lt;/p&gt;&lt;div class=&quot;objection-a&quot;&gt;
&lt;p&gt;The idea is that &lt;a id=&quot;quote-stop-the-line-early&quot; href=&quot;#quote-stop-the-line-early&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;stop-the-line-early&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;if you stop the line as soon as a problem is detected, it can be fixed before it gets worse&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. It’s been so successful in driving continuous improvement that Toyota (and most other manufacturers) continue to use the concept to this day.&lt;/p&gt;
&lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;The andon is designed to empower workers to stop the line, identify the root cause of the issue, and implement corrective actions, rather than letting it pass unnoticed or hoping someone else will fix it later. The andon is not only a tool for quality control, but also a culture of continuous improvement, where everyone is encouraged to speak up, share feedback, and collaborate on solutions. The andon fosters a sense of ownership, accountability, and learning among the workers, as well as transparency, trust, and alignment among the managers.&lt;/p&gt;
&lt;h2 id=&quot;transparency-is-software-developments-andon&quot;&gt;Transparency is software development’s andon&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#transparency-is-software-developments-andon&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Transparent collaboration in software development and other knowledge work is like the andon in a production system. It allows anyone to spot and call out critical issues early on, before they get worse, and to engage in constructive dialogue and problem-solving with their peers and stakeholders. Some of the benefits of transparent collaboration are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Faster and better feedback loops&lt;/strong&gt; - By making the work visible and accessible to everyone, transparent collaboration enables faster and more frequent feedback from users, customers, and colleagues. This feedback can help validate assumptions, identify gaps, and improve the quality and usability of the product or service. It can also help prevent misunderstandings, conflicts, and rework, as well as foster a culture of experimentation and learning.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Higher engagement and motivation&lt;/strong&gt; - By giving everyone a voice and a stake in the work, transparent collaboration increases the engagement and motivation of the workers. It allows them to express their ideas, opinions, and concerns, and to contribute to the decision-making and problem-solving processes. It also allows them to see the value and impact of their work, and to receive recognition and appreciation from their peers and managers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Greater trust and alignment&lt;/strong&gt; - By creating a shared understanding and a common goal, transparent collaboration builds trust and alignment among the workers and the managers. It reduces the barriers and silos that can hinder communication, collaboration, and coordination. It also promotes a culture of honesty, openness, and accountability, where everyone is responsible for the quality and outcome of the work, and where everyone can learn from mistakes and successes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Higher quality and customer satisfaction&lt;/strong&gt; - By spotting and solving critical issues early on, you can prevent or reduce defects, errors, and rework, and improve the quality and usability of your software. By seeking and providing feedback throughout the process, you can ensure that your software meets the needs and expectations of your users and customers, and delivers value to them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Faster and more efficient delivery&lt;/strong&gt; - By making your work visible and accessible, you can reduce the overhead and waste of information silos, duplication, and handoffs, and streamline the software development process. By stopping the line and escalating issues when necessary, you can avoid or minimize delays, disruptions, and dependencies, and speed up the software delivery cycle.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Of course, transparent collaboration is not without its challenges and trade-offs. It requires a shift in mindset, behavior, and culture, as well as a set of tools, processes, and norms that support and enable it. It also requires a balance between openness and privacy, between collaboration and autonomy, and between feedback and focus.&lt;/p&gt;
&lt;h2 id=&quot;applying-the-andon-principle-to-software-development&quot;&gt;Applying the andon principle to software development&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#applying-the-andon-principle-to-software-development&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The benefits of transparent collaboration outweigh the costs, especially in a complex, uncertain, and dynamic environment, where the ability to adapt, innovate, and deliver value is essential. By adopting the andon principle in your own work, you can leverage the collective intelligence, creativity, and experience of your teams, and create better products and services for your users and customers. Here are some ways you can apply the andon principle to your software development team:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Make your work visible and accessible&lt;/strong&gt; - Lean into transparency. Don’t view openness and early, broad engagement as a potential liability or risk that someone might “shoot down” your idea, but as an opportunity to get feedback and improve your work. Use tools and processes that allow you to share your work with your team and your stakeholders, and to solicit and incorporate their feedback. Don’t wait until the end of the project or the release cycle to get feedback. Instead, seek and provide feedback throughout the software development process, from ideation to deployment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stop the line and escalate issues when necessary&lt;/strong&gt; - Don’t ignore or hide problems, or hope that someone else will fix them. Be proactive and responsible for the quality and outcome of your work. If you encounter a critical issue, such as a bug, a security issue, a performance degradation, or a user complaint, stop what you’re doing and alert your team and your stakeholders. Don’t resume your work until the issue is fixed, or a mitigation plan is in place. Learn from the issue, and implement preventive or corrective actions to avoid or reduce its recurrence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seek and provide feedback early and often&lt;/strong&gt; - Don’t wait until the end of the project or the release cycle to get feedback from your users, customers, and colleagues. Solicit and incorporate feedback throughout the software development process, from ideation to deployment. Use techniques such as user research, prototyping, testing, and experimentation to validate your assumptions, identify gaps, and improve your software. Be open and receptive to feedback, and use it to learn and improve, not to blame or defend. Give constructive and timely feedback to others, and appreciate and acknowledge their contributions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collaborate and problem-solve with your team and your stakeholders&lt;/strong&gt; - Don’t work in isolation, or assume that you have all the answers. Leverage the collective intelligence, creativity, and experience of your team and your stakeholders. Involve them in the decision-making and problem-solving processes, and respect their perspectives and inputs. Use methods such as brainstorming, design thinking, and retrospectives to generate and evaluate ideas, and to identify and address root causes. Communicate clearly and effectively, and align on the goals, expectations, and roles. Celebrate and share your successes, and learn from your failures.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create a culture of continuous improvement&lt;/strong&gt; - Don’t settle for the status quo, or assume that there’s nothing you can do to improve. Continuously reflect on your work, and look for ways to make it better. Use tools and processes such as retrospectives, postmortems, and root cause analysis to identify and address issues, and to implement preventive or corrective actions. Encourage and reward experimentation, learning, and innovation. Be open to change, and embrace new ideas and approaches. Don’t be afraid to fail, and learn from your mistakes. Share your learnings with others, and help them improve.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Software development is not the same as manufacturing, but it shares some similarities. Both are complex, iterative, and collaborative processes that involve creating and delivering value to customers. Both also face challenges such as quality, efficiency, and innovation. And both can benefit from the andon principle.&lt;/p&gt;
&lt;p&gt;The andon principle is not a silver bullet, but it’s a powerful tool for spotting and solving critical issues early on, and for fostering a culture of collaboration in your software development team. By adopting the andon principle, you can empower yourself and your team to stop the line when necessary, to collaborate and problem-solve with your peers and stakeholders, and to create better products and services for your users and customers. So, next time you encounter an issue in your software development process, don’t hesitate to pull the andon cord. Your team and your customers will thank you for it.&lt;/p&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;This post inspired a chapter in my book, Open &amp;amp; Async.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>Remote work requires communicating more, less frequently</title><link>https://ben.balter.com/2023/08/04/remote-work-communicate-more-with-less/</link><guid isPermaLink="true">https://ben.balter.com/2023/08/04/remote-work-communicate-more-with-less/</guid><description>Async communication is like gzip compression for humans—more upfront processing, but greater throughput with fewer packets.</description><pubDate>Fri, 04 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2023/08/04/remote-work-communicate-more-with-less/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Remote work is not simply a matter of replicating the office environment online. One of the key shifts that remote workers need to make is to communicate &lt;em&gt;more&lt;/em&gt;, less &lt;em&gt;often&lt;/em&gt;. Instead of relying on constant, synchronous, and often interrupt-driven interactions, remote workers embrace asynchronous, and often higher-fidelity, forms of communication, such as long-form writing or thoughtful videos.&lt;/p&gt;
&lt;p&gt;I’ve &lt;a href=&quot;/2022/03/17/why-async/#benefits-of-working-asynchronously&quot;&gt;written before&lt;/a&gt; about the benefits of working asynchronously, but less obviously, it also changes the &lt;em&gt;way&lt;/em&gt; we think and work. Async work allows for more reflection, research, and synthesis. Those working async can and should take the time to think, learn, and synthesize before sharing their ideas, opinions, or solutions, distilling them down to the most critical. This improves the quality and clarity of the communication, and most importantly, the overall throughput of the communications channel.&lt;/p&gt;
&lt;p&gt;&lt;a id=&quot;quote-gzip-for-communication&quot; href=&quot;#quote-gzip-for-communication&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;gzip-for-communication&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;Think of it like gzip compression, but for human-to-human communication.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; Yes, there’s slightly more processing overhead at the start, but it allows greater communications throughput using fewer “packets” (communicate more using less).&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; How can you communicate more, less often? Here are a few tips I often keep in mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a id=&quot;quote-choose-the-right-medium&quot; href=&quot;#quote-choose-the-right-medium&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;choose-the-right-medium&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;Choose the right medium for the message&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; - Remote workers should use the most appropriate and effective form of communication for the purpose, audience, and context. For example, use writing for documenting, explaining, or persuading; use video for demonstrating, teaching, or storytelling; use chat for coordinating, clarifying, or socializing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write clearly, concisely, and comprehensively&lt;/strong&gt; - Remote workers should write with the reader in mind, using simple language, short sentences, and clear structure. They should also provide enough detail, context, and evidence to support their points, answer potential questions, and avoid ambiguity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Record videos with empathy, enthusiasm, and engagement&lt;/strong&gt; - Remote workers should record videos with a human touch, using eye contact, facial expressions, and voice modulation. They should also keep their videos short, focused, and interactive, using visuals, examples, and questions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Communicate proactively, regularly, and asynchronously&lt;/strong&gt; - Remote workers should communicate their goals, plans, and updates without waiting for prompts, requests, or deadlines. They should also communicate their availability, boundaries, and preferences without assuming or imposing. They should communicate asynchronously as much as possible, using synchronous communication only for urgent, complex, or sensitive matters.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Remote work requires communicating more, less often, because asynchronous communication involves less frequent, but richer communication, meaning there is less time talking &lt;em&gt;about&lt;/em&gt; the work and more time &lt;em&gt;doing&lt;/em&gt; it, allowing the system to optimize for throughput and flow.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot; aria-label=&quot;Footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#footnote-label&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Not to mention, thoughtful, written communication helps ideas to scale more effectively (there’s a reason the printing press spurred the Renaissance). It shifts communication from a one-to-one relationship to a one-to-many. Next time you’re about to “send a quick DM” or “schedule a quick chat,” consider what steps you could take to optimize for the long tail of information retrieval and discovery. Just like building a web app, “writes” are expensive, but “reads” should be “cheap,” so avoid introducing mental N+1s into the system whenever possible. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;This post inspired a chapter in my book, Open &amp;amp; Async.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>Practice inclusive scheduling</title><link>https://ben.balter.com/2023/05/19/practice-inclusive-scheduling/</link><guid isPermaLink="true">https://ben.balter.com/2023/05/19/practice-inclusive-scheduling/</guid><description>Small scheduling choices — writing dates unambiguously, including time zones, and building in breaks — make distributed teams feel included.</description><pubDate>Fri, 19 May 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2023/05/19/practice-inclusive-scheduling/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Time zones are one of the harder parts of software development, but it doesn’t have to be one of the harder (or exclusionary) parts of working as a distributed team. Here are a few practices that I try to adhere to help practice more inclusive scheduling when working remotely:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When discussing dates, consider writing numeric dates in &lt;a href=&quot;https://en.wikipedia.org/wiki/ISO_8601&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;ISO 8601&lt;/a&gt; (YYYY-MM-DD) or other month/day unambiguous formats.&lt;/li&gt;
&lt;li&gt;When referring to a time, always include the timezone.&lt;/li&gt;
&lt;li&gt;Avoid location-specific language like “tomorrow”, “this afternoon”, or “in the spring”.&lt;/li&gt;
&lt;li&gt;Be mindful of holidays, weekends, and working hours, especially across time zones.&lt;/li&gt;
&lt;li&gt;Consider “speedy meetings” (end 5/10 minutes early or start 5/10 minutes late) to allow for time to be human between meetings, and be strict about ending at that earlier time.&lt;/li&gt;
&lt;li&gt;On that note, meetings should start and end on time. If you finish early, consider using the remainder of the time for informal conversations and to connect as humans.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://xkcd.com/1179/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://imgs.xkcd.com/comics/iso_8601_2x.png&quot; alt=&quot;xkcd comic describing ISO 8601 as the one true date format&quot; loading=&quot;eager&quot; decoding=&quot;auto&quot; fetchpriority=&quot;high&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A small nod to inclusivity can go a long way to create a sense of belonging and reduce ambiguity, when working with global teams, schedule and communicate with a global (and remote) audience in mind.&lt;/p&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;This post inspired a chapter in my book, Open &amp;amp; Async.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>Pull requests are a form of documentation</title><link>https://ben.balter.com/2023/05/19/pull-requests-are-a-form-of-documentations/</link><guid isPermaLink="true">https://ben.balter.com/2023/05/19/pull-requests-are-a-form-of-documentations/</guid><description>Pull requests capture not just what changed, but who, why, and what alternatives were considered. Treat every PR as a time capsule for future contributors.</description><pubDate>Fri, 19 May 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2023/05/19/pull-requests-are-a-form-of-documentations/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;We often think of pull requests purely as a code review mechanism, but they are also an organic and natural form of documentation. I can’t count the number of times I’ve spelunked historic GitHub &lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Pull request—a proposed set of code changes submitted for review&quot; title=&quot;Pull request—a proposed set of code changes submitted for review&quot; tabindex=&quot;0&quot;&gt;PRs&lt;/abbr&gt; to understand the context around a feature or product decision.&lt;/p&gt;
&lt;p&gt;&lt;a id=&quot;quote-who-why-and-alternatives&quot; href=&quot;#quote-who-why-and-alternatives&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;who-why-and-alternatives&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;Pull requests capture not just what change was made, but who made it, why, and what alternatives were considered.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; They create a cross-linked web of context for others, and capture the discussion &lt;em&gt;around&lt;/em&gt; the change, which is often an equally valuable technical artifact.&lt;/p&gt;
&lt;p&gt;When I write a PR, I write it not just with the immediate reviewers in mind, but how it will read for outsiders down the line who might land on it from search results or a cross reference. Beyond documentation, PRs are a great place for your colleagues to ask the type of “dumb questions” that gives you the confidence to ship.&lt;/p&gt;
&lt;p&gt;To that end, here are a few practices I follow when authoring pull requests to ensure I’m capturing sufficient context for myself and future contributors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Descriptive title&lt;/strong&gt; - Avoid the default &lt;code&gt;Update FILE.md&lt;/code&gt; and instead use the title to capture the essence of the change in a way that is clear when scanning a list of PRs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Brief description of the change&lt;/strong&gt; - Right up front, add a quick TL;DR describing the “what” of the change for others landing on the PR from search or a cross link so that they can quickly understand the change&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ensure the body describes the “why”&lt;/strong&gt; - Equally essential as the “what” is the “why”. Why is this change being made? What problem does it solve? What alternatives were considered? What are the trade-offs? What are the risks? Be sure to include relevant links.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enough context&lt;/strong&gt; - So that others outside your team (or yourself years from now) can understand the change. Think of it as a time capsule or a message in a bottle to your future self and future contributors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;@mention responsible team&lt;/strong&gt; - if not automatically requested via &lt;code&gt;CODEOWNERS&lt;/code&gt;. Not only does this bring visibility to the PR, it also makes ownership clear by explicitly calling out the responsible team. Be sure to include why you’re @mentioning the team (what action is requested, if any) so that it’s surfaced in the notification.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CC or &lt;a href=&quot;https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/using-keywords-in-issues-and-pull-requests&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;fixes&lt;/code&gt;&lt;/a&gt; related issues&lt;/strong&gt; - to create a trail of breadcrumbs to improve discoverability and allow others to opt-in to additional context. As an added bonus, it will auto close the tracking issue for you.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Task lists&lt;/strong&gt; - To reflect the current state of the PR - for example &lt;code&gt;TODO: add tests&lt;/code&gt; and to capture process&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Screenshots or animated GIFs&lt;/strong&gt; - to illustrate UI changes without requiring others to spin up a dev environment&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;In-line documentation&lt;/strong&gt; - Linking back to the PR from the code itself for especially complex or nuanced changes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review your own PR&lt;/strong&gt; - Comment in line to highlight specific changes for reviewers that you’re less confident on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Discrete changes&lt;/strong&gt; - Avoid bundling unrelated changes into a single PR which can hinder future discovery and understanding. Bonus use atomic, descriptive commits within the PR.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yes, organic documentation takes slightly more time, but it’s less overhead than keeping static documentation up to date, and I promise you, it’s well worth it - your future self (and future coworkers) will thank you.&lt;/p&gt;
&lt;p&gt;For even more tips, check out &lt;a href=&quot;https://github.blog/2015-01-21-how-to-write-the-perfect-pull-request/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;how to write the perfect pull request&lt;/a&gt; on the GitHub Blog.&lt;/p&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;This post inspired a chapter in my book, Open &amp;amp; Async.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>Meetings are a point of escalation, not a starting point</title><link>https://ben.balter.com/2023/04/20/meetings-are-a-point-of-escalation/</link><guid isPermaLink="true">https://ben.balter.com/2023/04/20/meetings-are-a-point-of-escalation/</guid><description>Most meetings are just information downloads that could&apos;ve been a doc. Treat them as an escalation based on complexity, not the default starting point.</description><pubDate>Thu, 20 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2023/04/20/meetings-are-a-point-of-escalation/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Asynchronous communication (Issues, &lt;abbr class=&quot;initialism&quot; data-tooltip=&quot;true&quot; data-tooltip-text=&quot;Pull request—a proposed set of code changes submitted for review&quot; title=&quot;Pull request—a proposed set of code changes submitted for review&quot; tabindex=&quot;0&quot;&gt;PRs&lt;/abbr&gt;, Google Docs, and sometimes Slack) should be the default, reserving more synchronous media (like video calls and in-person meetings) for the types of conversations that uniquely benefit from their higher fidelity (brainstorming, whiteboarding, interpersonal conflict, social connection, etc.). Put another way, &lt;strong&gt;the phrase “async first” should be taken literally&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;default-to-transferring-context-asynchronously&quot;&gt;Default to transferring context asynchronously&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#default-to-transferring-context-asynchronously&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When starting up a new initiative or collaborating with a colleague for the first time, it’s often tempting to “throw some time on their calendar” to “kick things off”. Such kickoff meetings often consist primarily of an information download, sharing context from one coworker to another with a specific call to action or request for feedback. But information transfer isn’t always the best use of synchronous time, especially when you consider the overhead of scheduling (especially across time zones), scaling (O(n) vs O(1)), and memorializing outcomes (as durable artifacts available to others). Not to mention, different people have different learning styles—not everyone absorbs information best via voice and in real time.&lt;/p&gt;
&lt;p&gt;Instead, next time, consider transferring that context asynchronously (as a GitHub issue or Google Doc, for example), and then scheduling a meeting only if the conversation requires it—you’d be surprised how often it does not. A few minutes of reading or a few comments on an issue or Google Doc can often replace waiting days for mutual availability and a dedicated 30-minute block of time. In this sense, you can think of meetings as a point of &lt;em&gt;escalation&lt;/em&gt; based on complexity, not as the default starting point for a workstream, initiative, or conversation.&lt;/p&gt;
&lt;h2 id=&quot;meetings-are-not-where-work-happens&quot;&gt;Meetings are &lt;em&gt;not&lt;/em&gt; where work happens&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#meetings-are-not-where-work-happens&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;aside class=&quot;objection&quot; aria-label=&quot;Objection and response&quot;&gt;&lt;p class=&quot;objection-q&quot;&gt;&lt;span class=&quot;objection-label&quot;&gt;But what about…&lt;/span&gt; Have meetings really gotten that out of hand?&lt;/p&gt;&lt;div class=&quot;objection-a&quot;&gt;
&lt;p&gt;I was curious, so &lt;a href=&quot;https://github.com/benbalter/gmail-and-google-calendar-stats&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;I wrote a quick script to pull stats from my own calendar&lt;/a&gt;. My first year at GitHub (2013), I had a grand total of &lt;strong&gt;16&lt;/strong&gt; internal meetings. Yes, we were smaller back then, but we were also &lt;em&gt;dogmatic&lt;/em&gt; about being async first, almost to a fault. As we grew, my second year I had 43 meetings, and things gradually increased from there. This year, I’m on track to have over &lt;strong&gt;600&lt;/strong&gt; meetings. There’s got to be a better way!&lt;/p&gt;
&lt;/div&gt;&lt;/aside&gt;
&lt;figure&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/282759/233466397-ff9737ce-7b51-45c1-a643-88a00bbce4cf.png&quot; alt=&quot;meetings-over-time&quot; loading=&quot;eager&quot; decoding=&quot;auto&quot; fetchpriority=&quot;high&quot;&gt;&lt;figcaption&gt;meetings-over-time&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&quot;/2022/03/17/why-async/#benefits-of-working-asynchronously&quot;&gt;Working asynchronously by default&lt;/a&gt; fosters a more inclusive culture, facilitates discoverability and permanence, creates space for learning, allows for greater work-life balance, and produces better outcomes, faster. Async is also the key to making remote work, work.&lt;/p&gt;
&lt;h3 id=&quot;hold-colleagues-accountable-for-being-truly-async-first&quot;&gt;Hold colleagues accountable for being truly async first&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#hold-colleagues-accountable-for-being-truly-async-first&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;If you receive a meeting invite (or if a colleague requests permission to send you a meeting invite) without context, an agenda, or a read-ahead doc, consider politely declining, or at least asking for one—it’s well within your rights (you can even link to this discussion post as a “get out of &lt;del&gt;jail&lt;/del&gt; meeting free” card). After all, &lt;a id=&quot;quote-distill-before-deciding-my-time&quot; href=&quot;#quote-distill-before-deciding-my-time&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;distill-before-deciding-my-time&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;if the person requesting the meeting hasn’t taken the time to distill their thoughts into writing, why should they be able to decide how you spend your own time?&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;githubculture&gt;&lt;/githubculture&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;This post is adapted from my book, Open &amp;amp; Async.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item><item><title>Intro to GitHub for non-technical roles</title><link>https://ben.balter.com/2023/03/02/github-for-non-technical-roles/</link><guid isPermaLink="true">https://ben.balter.com/2023/03/02/github-for-non-technical-roles/</guid><description>GitHub isn&apos;t just for developers. A practical guide for non-technical roles to follow along, collaborate, and track work with confidence.</description><pubDate>Thu, 02 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p style=&quot;margin:0 0 1.75em;font-size:15px;color:#57606a;&quot;&gt;A new post from &lt;a href=&quot;https://ben.balter.com&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;ben.balter.com&lt;/a&gt; &amp;middot; &lt;a href=&quot;https://ben.balter.com/2023/03/02/github-for-non-technical-roles/&quot; style=&quot;color:#0969da;text-decoration:none;&quot;&gt;Read it on the web &amp;rarr;&lt;/a&gt;&lt;/p&gt;&lt;h2 id=&quot;what-is-github&quot;&gt;What is GitHub?&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#what-is-github&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you’re not a software developer, you can think of GitHub like &lt;a id=&quot;quote-github-like-dropbox&quot; href=&quot;#quote-github-like-dropbox&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;github-like-dropbox&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;Dropbox, Google Drive, or SharePoint, but for software development&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. It’s primarily used by software developers to collaborate on software and track their progress, but can be used by anyone involved in the software development process.&lt;/p&gt;
&lt;h2 id=&quot;repositories&quot;&gt;Repositories&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#repositories&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.github.com/en/repositories&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Repositories&lt;/a&gt; are the most basic unit of GitHub. Each repository represents a real-world project, initiative, or team. Repositories contain issues, discussions, and &lt;a href=&quot;/2023/05/19/pull-requests-are-a-form-of-documentations/&quot;&gt;pull requests&lt;/a&gt; (more on that in a moment), as well as “code”, which for non-technical roles, is often text files in the form of Markdown (more on that too).&lt;/p&gt;
&lt;h2 id=&quot;markdown&quot;&gt;Markdown&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#markdown&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a id=&quot;quote-markdown-is-how-text-is-formatted&quot; href=&quot;#quote-markdown-is-how-text-is-formatted&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;markdown-is-how-text-is-formatted&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;Markdown is how text is formatted on GitHub.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; If you wanted to format text in a text box that didn’t support formatting, you might use &lt;code&gt;*&lt;/code&gt;s to represent bullets, or wrap a word in &lt;code&gt;_&lt;/code&gt; to emphasize it. That’s Markdown. Markdown is plain text, with optional lightweight formatting that GitHub can render. It sounds like “coding”, but you’ll get the hang of it in no time. To get started, check out &lt;a href=&quot;https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;the official GitHub docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Pro-tip: To convert a Word or Google Doc to Markdown, you can use my very own &lt;a href=&quot;https://word2md.com&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Word to Markdown converter&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;issues&quot;&gt;Issues&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#issues&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.github.com/en/issues&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Issues&lt;/a&gt; are how work is tracked on GitHub. You can think of them as “To Do” items (or “tickets” in some contexts). &lt;a id=&quot;quote-issues-describe-the-problems&quot; href=&quot;#quote-issues-describe-the-problems&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;issues-describe-the-problems&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;Issues describe the problems you or your team want to solve&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, with the list of potential problems being referred to as the team’s “issue backlog”. You can comment on issues, like you would a blog post, assign them to people, and close them when they have been completed. Issues can also be labeled for ease of discoverability and for tracking additional metadata. For especially complex problems, the body of the issue can even include a task list with checkboxes, to track progress of individual sub-tasks.&lt;/p&gt;
&lt;h2 id=&quot;discussions&quot;&gt;Discussions&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#discussions&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.github.com/en/discussions&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Discussions&lt;/a&gt; are like issues, but don’t have a specific outcome or sense of state (open or closed). You can use discussions to ask questions, collaborate on ideas, and share announcements. You can think of discussions like blog posts, an online forum, or a chat room for your repository.&lt;/p&gt;
&lt;h2 id=&quot;pull-requests&quot;&gt;Pull requests&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#pull-requests&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.github.com/en/pull-requests&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Pull requests&lt;/a&gt; are how you propose changes to a repository. &lt;a id=&quot;quote-prs-describe-the-solutions&quot; href=&quot;#quote-prs-describe-the-solutions&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;prs-describe-the-solutions&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;If issues describe the problems, pull requests describe the proposed solutions.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; Others can also review your proposed changes and comment on, make suggested changes to, or “approve” your pull request. Pull requests modify files within the repository. Once approved, your pull request is “merged” into the repository and your proposed changes are “live”.&lt;/p&gt;
&lt;h2 id=&quot;markdown-files&quot;&gt;Markdown files&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#markdown-files&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Repositories contain files. These files can be anything, but are often text files in the form of Markdown. You can edit these files directly on GitHub, or you can clone the repository to your computer and edit them there (more on that below). You can also upload files directly to GitHub by dragging-and-dropping them. Generally filenames are lower case and use hyphens instead of spaces. Files as Markdown is generally how long-lived information is shared and stored (documentation, policy, procedures, etc.).&lt;/p&gt;
&lt;h2 id=&quot;tracking-changes&quot;&gt;Tracking changes&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#tracking-changes&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;At the core of GitHub is a version control system called Git. Git tracks changes to files over time. You can think of it like tracked changes in Google Docs or Microsoft Word (or if you’re into sci-fi, a time machine for your files). You can see who made changes, when they were made, and what the changes were. You can also “roll back” changes to a previous version of a file.&lt;/p&gt;
&lt;h2 id=&quot;commits&quot;&gt;Commits&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#commits&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Git tracks changes as “&lt;a href=&quot;https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;commits&lt;/a&gt;”. &lt;a id=&quot;quote-commit-is-a-snapshot&quot; href=&quot;#quote-commit-is-a-snapshot&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;commit-is-a-snapshot&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;A commit is a snapshot of the file (or files) at a point in time.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; Each commit should have a brief, descriptive message describing the changes from the previous version, to help you and your colleagues understand what’s going on.&lt;/p&gt;
&lt;h2 id=&quot;branches&quot;&gt;Branches&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#branches&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Branches&lt;/a&gt; are like &lt;a id=&quot;quote-parallel-universes-for-files&quot; href=&quot;#quote-parallel-universes-for-files&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;parallel-universes-for-files&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;parallel universes or alternate timelines for your files&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. You can make changes to a branch without affecting files on the “main” branch. Branches contain one or more commits, and when you’re ready, you can merge your changes (commits) into the main branch to update the files there. You can think of branches as saving a copy of a file so that you can work on changes without affecting others’ work, but in a way that makes it easier to merge any changes you make back in with the original when you’re ready.&lt;/p&gt;
&lt;h2 id=&quot;github-flow&quot;&gt;GitHub flow&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#github-flow&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.github.com/en/get-started/quickstart/github-flow&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;GitHub flow&lt;/a&gt; describes the process of making changes to a repository. The basic steps are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open an issue describing the problem you want to solve&lt;/li&gt;
&lt;li&gt;Once there is agreement that the problem should be solved, decide on the best solution&lt;/li&gt;
&lt;li&gt;Create a branch to work on the solution&lt;/li&gt;
&lt;li&gt;Make changes to files on the branch&lt;/li&gt;
&lt;li&gt;Commit those changes&lt;/li&gt;
&lt;li&gt;Open a pull request “requesting” that those changes be merged back into the “main” branch&lt;/li&gt;
&lt;li&gt;Your colleagues review your pull request and either approve it or suggest changes&lt;/li&gt;
&lt;li&gt;Once approved, your pull request is “merged” and your changes are now “live” on the main branch&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;notifications&quot;&gt;Notifications&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#notifications&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;GitHub sends &lt;a href=&quot;https://docs.github.com/en/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/about-notifications&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;notifications&lt;/a&gt; to you when someone mentions you in a comment, assigns you to an issue, or requests your review on a pull request. You can also (and often should) “subscribe” to repositories to be notified about some or all activity. Likewise, you can unsubscribe from individual issues if you’re not interested. By default you’ll receive &lt;a href=&quot;/2020/08/25/how-i-manage-github-notifications/&quot;&gt;notifications&lt;/a&gt; via email, but you can also configure GitHub to use “web notifications”, or even set up notifications in your Slack or Teams channel.&lt;/p&gt;
&lt;h2 id=&quot;mentions&quot;&gt;@mentions&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#mentions&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;One of the most powerful GitHub features is @mentions. You can tag anyone into an issue or pull request by typing &lt;code&gt;@&lt;/code&gt; followed by their GitHub login. They’ll receive a notification and can respond. You can also use @mentions to tag teams, like &lt;code&gt;@github/eng&lt;/code&gt; or &lt;code&gt;@github/eng-ops&lt;/code&gt;. When @mentioning users or teams, it’s best to provide context in the comment so they know why they are receiving the notification.&lt;/p&gt;
&lt;h2 id=&quot;cross-references&quot;&gt;Cross references&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#cross-references&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Another powerful GitHub feature is issue and pull request &lt;a href=&quot;/2015/11/12/why-urls/&quot;&gt;cross references&lt;/a&gt;. You can reference another issue or pull request in a comment by including its number (for example, &lt;code&gt;This is related to #123&lt;/code&gt;). When cross referenced, links are created between the two issues or pull requests, making it easier for others to discover and understand the context of the conversation.&lt;/p&gt;
&lt;h2 id=&quot;desktop-vs-web&quot;&gt;Desktop vs. web&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#desktop-vs-web&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a id=&quot;quote-do-everything-in-the-browser&quot; href=&quot;#quote-do-everything-in-the-browser&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;do-everything-in-the-browser&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;Almost everything you’d want to do on GitHub you can do entirely through the web interface.&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; You can view, create, edit, or delete files, browse and comment on issues, and merge pull requests. If you’d prefer to work on your desktop using your favorite desktop software, you can install &lt;a href=&quot;https://desktop.github.com&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;GitHub Desktop&lt;/a&gt;. GitHub Desktop provides a visual interface for “pulling” (downloading) repositories onto your computer and interacting with GitHub.&lt;/p&gt;
&lt;h2 id=&quot;advanced-ish-topics&quot;&gt;Advanced-ish topics&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#advanced-ish-topics&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;pushing-and-pulling&quot;&gt;Pushing and pulling&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#pushing-and-pulling&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;If you’re using the web interface, you don’t have to worry about pushing or pulling. If you’re using the desktop client, you can think of pulling as downloading the files from GitHub and pushing as uploading the files back to GitHub. (Before pulling, you need to clone, or create a copy of, the files.)&lt;/p&gt;
&lt;h3 id=&quot;emoji-and-animated-gifs-&quot;&gt;Emoji and animated GIFs &lt;span role=&quot;img&quot; aria-label=&quot;party popper&quot;&gt;🎉&lt;/span&gt;&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#emoji-and-animated-gifs-&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In addition to Markdown you’ll often see emoji and animated GIFs used heavily on issues and pull requests. &lt;a id=&quot;quote-emoji-body-language-of-github&quot; href=&quot;#quote-emoji-body-language-of-github&quot; class=&quot;quote-inline&quot; data-quote-id=&quot;emoji-body-language-of-github&quot;&gt;&lt;mark class=&quot;quote-inline-mark&quot;&gt;&lt;strong&gt;You can think of emoji and animated GIFs as the facial expressions and body language of GitHub&lt;/strong&gt;&lt;/mark&gt;&lt;span class=&quot;sr-only&quot;&gt; (share this quote)&lt;/span&gt;&lt;span class=&quot;quote-inline-icon&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M9 17H7A5 5 0 0 1 7 7h2&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M15 7h2a5 5 0 1 1 0 10h-2&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;8&quot; x2=&quot;16&quot; y1=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. They make it easier to convey emotion in written text. I like to describe the communication style on GitHub as “professional but informal”, meaning don’t be afraid to use emoji and animated GIFs to make your comments more expressive (while remaining appropriate, of course).&lt;/p&gt;
&lt;h2 id=&quot;project-boards&quot;&gt;Project boards&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#project-boards&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If individual tasks are tracked as issues, &lt;a href=&quot;https://docs.github.com/en/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;project boards&lt;/a&gt; are how you track the progress of a project as a whole. Project boards are a visual representation of what issues are on deck, what issues are in progress, and what issues have been completed (todo, doing, done).&lt;/p&gt;
&lt;h2 id=&quot;finding-information&quot;&gt;Finding information&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#finding-information&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;With so much information available on GitHub, it’s often intimidating to find what you’re looking for. Here are some tips for using &lt;a href=&quot;https://github.com/search&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;GitHub’s powerful search&lt;/a&gt; to find anything on GitHub:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use keyword search, just like you would any search engine. For example, searching for &lt;code&gt;widgets&lt;/code&gt; will find all repositories, issues, pull requests, and discussions that contain the word “widgets”.&lt;/li&gt;
&lt;li&gt;Scope your search to an organization or repository by using the &lt;code&gt;org:&lt;/code&gt; or &lt;code&gt;repo:&lt;/code&gt; qualifiers. For example, &lt;code&gt;org:github&lt;/code&gt; will find all issues in all repositories in the &lt;code&gt;github&lt;/code&gt; organization, or &lt;code&gt;repo:github/docs&lt;/code&gt; will find all issues in the &lt;code&gt;github/docs&lt;/code&gt; repository.&lt;/li&gt;
&lt;li&gt;You can further refine your search to only show threads that you’re involved in by using the &lt;code&gt;involves:@me&lt;/code&gt; modifier. For example, &lt;code&gt;widgets involves:@me&lt;/code&gt; will find all issues, pull requests, and discussions that contain the word “widgets” and that you are involved in.&lt;/li&gt;
&lt;li&gt;Different types of information (issues, pull requests, discussions, Markdown) are displayed as separate results. Be sure to check the side bar to see all the different types of information that match your search.&lt;/li&gt;
&lt;li&gt;You can limit a “code” search to only Markdown files, by clicking “Markdown” in the sidebar to filter results, or adding &lt;code&gt;language:Markdown&lt;/code&gt; to your search query.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.github.com/en/search-github/github-code-search/using-github-code-search&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Official docs&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;checks&quot;&gt;Checks&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#checks&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;You &lt;em&gt;may&lt;/em&gt; see one or more &lt;a href=&quot;https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;status checks&lt;/a&gt; on your pull request. Checks are automated tests that run against your proposed changes to enforce certain rules (such as formatting, spelling, or style). If a check fails, you’ll need to fix the problem before your pull request can be merged. You can click “details” next to a failed check to learn more.&lt;/p&gt;
&lt;h3 id=&quot;when-to-use-an-issue-vs-a-pull-request-vs-a-discussion-vs-a-markdown-file-vs-a-project-board&quot;&gt;When to use an issue vs. a pull request vs. a discussion vs. a Markdown file vs. a project board&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#when-to-use-an-issue-vs-a-pull-request-vs-a-discussion-vs-a-markdown-file-vs-a-project-board&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Project work generally flows in this order:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Discussions - Open-ended conversation without a specific outcome or concept of “done”. This is often the ideation or brainstorming stage.&lt;/li&gt;
&lt;li&gt;Issues - How problems are tracked, discussed, and prioritized.&lt;/li&gt;
&lt;li&gt;Pull requests - How solutions/changes are proposed and reviewed. Generally pull requests should tie back to the issue/problem they are solving.&lt;/li&gt;
&lt;li&gt;Markdown files - How long-lived information is shared and stored (documentation, policy, procedures, etc.). Markdown files are changed via pull request.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As a project proceeds in one or more repositories, high-level project progress is tracked on one or more project boards (which visually organizes the state of multiple issues).&lt;/p&gt;
&lt;h2 id=&quot;putting-it-all-together-editing-a-file-on-the-web&quot;&gt;Putting it all together, editing a file on the web&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#putting-it-all-together-editing-a-file-on-the-web&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Open the repository you want to edit&lt;/li&gt;
&lt;li&gt;Navigate to the file you want to edit&lt;/li&gt;
&lt;li&gt;Click the pencil icon to edit the file&lt;/li&gt;
&lt;li&gt;Make your changes&lt;/li&gt;
&lt;li&gt;Click “Commit changes” to save your changes&lt;/li&gt;
&lt;li&gt;Describe your changes in the commit message&lt;/li&gt;
&lt;li&gt;Name your branch&lt;/li&gt;
&lt;li&gt;Click “Propose changes” to open a pull request&lt;/li&gt;
&lt;li&gt;Describe your changes in the pull request, ideally referencing the issue you’re solving (for example, &lt;code&gt;Closes #123&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Your colleagues review your pull request and either approve it or suggest changes&lt;/li&gt;
&lt;li&gt;Once approved and checks pass, your pull request is “merged” and your changes are now “live” on the main branch&lt;/li&gt;
&lt;li&gt;Celebrate your first contribution to GitHub!&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;glossary&quot;&gt;Glossary&lt;a class=&quot;anchor-link&quot; aria-label=&quot;Link to this section&quot; href=&quot;#glossary&quot;&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;If you come across a term or concept not covered here, be sure to check out &lt;a href=&quot;https://docs.github.com/en/get-started/quickstart/github-glossary&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;the official GitHub glossary&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Happy GitHubbing! &lt;span role=&quot;img&quot; aria-label=&quot;party popper&quot;&gt;🎉&lt;/span&gt;&lt;/p&gt;
&lt;githubculture&gt;&lt;/githubculture&gt;&lt;hr style=&quot;margin:2.5em 0 1.5em;border:none;border-top:1px solid #d0d7de;&quot; /&gt;&lt;table role=&quot;presentation&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;margin:0 0 1em;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:1px solid #d0d7de;border-radius:8px;padding:16px 20px;background:#f6f8fa;&quot;&gt;&lt;p style=&quot;margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#57606a;&quot;&gt;Out now&lt;/p&gt;&lt;p style=&quot;margin:0 0 6px;font-size:16px;font-weight:600;color:#1f2328;&quot;&gt;This post is adapted from my book, Open &amp;amp; Async.&lt;/p&gt;&lt;p style=&quot;margin:0 0 12px;font-size:14px;color:#424a53;&quot;&gt;The collaborative software development playbook for remote and distributed teams.&lt;/p&gt;&lt;a href=&quot;https://open-and-async.com/?utm_source=benbalter-email&quot; style=&quot;font-size:14px;font-weight:600;color:#0969da;text-decoration:none;&quot;&gt;Buy it — $9.99 &amp;rarr;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content:encoded><author>ben@balter.com</author></item></channel></rss>