<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Async Communication · Nhân Tài Đức</title>
    <link>https://jared.lynskey.co.nz/vi/tags/async-communication/</link>
    <description>Những câu chuyện ngắn về kỹ thuật phần mềm và lãnh đạo đội ngũ kỹ sư — performance review, tuyển dụng và mở rộng team, CI/CD, giám sát DevOps và AI agent. Viết từ Seoul.</description>
    <generator>Hugo</generator>
    <language>vi</language>
    <copyright>© 2026 Nhân Tài Đức</copyright>
    <lastBuildDate>Wed, 28 Oct 2026 00:00:00 +1300</lastBuildDate>
    <atom:link href="https://jared.lynskey.co.nz/vi/tags/async-communication/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Dùng GitHub Issues để ra quyết định và quản lý dự án: cách làm của Alan, kèm mẫu issue</title>
      <link>https://jared.lynskey.co.nz/vi/posts/2024/2024-01-04-githubforprojectmanagement/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/vi/posts/2024/2024-01-04-githubforprojectmanagement/</guid>
      <pubDate>Tue, 09 Apr 2024 00:30:03 +0000</pubDate>
      <dc:creator>Jared Lynskey</dc:creator>
      <category>GitHub</category>
      <category>GitHub Issues</category>
      <category>Project Management</category>
      <category>Decision Making</category>
      <category>Async Communication</category>
      <category>Remote Work</category>
      <category>Team</category>
      <description>Cách Alan thay gần hết các cuộc họp bằng GitHub issue viết thành văn: quyết định nào mới đáng mở issue, các vai trò trong mô hình LOCI, những quy tắc khi viết, một mẫu issue bạn có thể bỏ ngay vào thư mục .github/ISSUE_TEMPLATE, và khi nào nên dựng thêm một GitHub Project bên trên các issue.</description>
      <content:encoded><![CDATA[<p>Có một <a href="https://alan.com/en/healthybusiness/media/a/asynchronous-decisions"  target="_blank" rel="noreferrer">bài viết</a> mà tôi cứ đọc đi đọc lại, của Alan, một công ty bảo hiểm sức khỏe ở Pháp, kể về cách họ ra quyết định. Nói ngắn gọn: thay vì đặt lịch họp, họ mở một GitHub issue rồi tranh luận bằng chữ. Giờ chính tôi cũng đang quản lý một đội, nên lần này tôi ngồi ghi chép cẩn thận. Dưới đây là phần tóm lược hệ thống của họ, có xen vài nhận xét của riêng tôi.</p>

<h2 class="relative group">Vì sao họ bỏ họp
    <div id="vì-sao-họ-bỏ-họp" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#v%c3%ac-sao-h%e1%bb%8d-b%e1%bb%8f-h%e1%bb%8dp" aria-label="Cọc dấu">#</a>
    </span>
    
</h2>
<p>Điểm xuất phát của họ chắc bạn cũng thấy quen. Không ai chuẩn bị gì, họp thì bắt đầu muộn, và ai nói to nhất thì người đó thắng, bất kể đúng hay sai. Một tiếng sau bạn bước ra còn rối hơn lúc bước vào, và bắt đầu lục ngăn kéo xem còn viên paracetamol nào không.</p>
<p>Ban đầu Alan thử sửa lại cách họp: tối đa 15 phút, chương trình họp rõ ràng, họp xong bắt buộc phải có quyết định. Nhưng không duy trì được. Thảo luận cứ lan man, chẳng ai nhớ ai đã nói gì, còn người vắng mặt hay làm việc từ xa thì coi như chịu thiệt. Thế là họ chuyển hẳn sang viết.</p>
<p>Những lợi ích họ nêu ra, tôi thấy đều đúng. Viết buộc bạn phải chậm lại và suy nghĩ thật sự, nên cuộc thảo luận sâu hơn và lập luận chặt chẽ hơn. Mọi thứ được ghi lại rõ ràng, thay vì mỗi người nhớ một ít. Tranh luận không còn là cuộc thi xem ai ăn nói giỏi hơn. Và vì diễn đàn mở cho cả công ty, ai cũng có thể góp ý, chứ không chỉ những người tình cờ có mặt trong phòng họp.</p>

<h2 class="relative group">GitHub làm diễn đàn chung của công ty
    <div id="github-làm-diễn-đàn-chung-của-công-ty" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#github-l%c3%a0m-di%e1%bb%85n-%c4%91%c3%a0n-chung-c%e1%bb%a7a-c%c3%b4ng-ty" aria-label="Cọc dấu">#</a>
    </span>
    
</h2>
<p>Diễn đàn đó chính là GitHub, một nền tảng vốn sinh ra để rà soát mã (code review), và Alan cứ thế vui vẻ &ldquo;mượn&rdquo; nó cho việc khác. Cách thiết lập đơn giản đến mức hơi ngại:</p>
<ol>
<li>Tạo một tài khoản GitHub.</li>
<li>Tạo một kho mã (repository) riêng tư không chứa dòng mã nào (kho của họ tên là &ldquo;Topics&rdquo;).</li>
<li>Thêm một hệ thống nhãn (label) để phân loại các cuộc thảo luận.</li>
<li>Dùng tab Issues: issue đang mở là thảo luận đang diễn ra, issue đã đóng là quyết định đã chốt.</li>
</ol>
<p>Họ đã vượt mốc 17,000 issue. Tức là có ngần ấy cuộc họp không bao giờ phải diễn ra, và, phần tôi thích nhất, họ có cả một lịch sử tra cứu được về lý do vì sao mỗi quyết định lại đi theo hướng đó. Nếu muốn lật lại một quyết định cũ, bạn có thể đọc trước xem lần trước những lập luận nào đã thắng.</p>

<h2 class="relative group">Khi nào nên mở issue
    <div id="khi-nào-nên-mở-issue" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#khi-n%c3%a0o-n%c3%aan-m%e1%bb%9f-issue" aria-label="Cọc dấu">#</a>
    </span>
    
</h2>
<p>Không phải quyết định nào cũng đáng mở một issue. Họ lọc bằng bốn câu hỏi: ai sẽ bị ảnh hưởng? có dễ quay lại không? gấp đến mức nào? mình có cần thêm bối cảnh trước khi quyết không?</p>
<p><figure><span class="mc-img"><img
    class="my-0 rounded-md"
    loading="lazy"
    decoding="async"
    fetchpriority="auto"
    alt="hình minh họa"
    width="1390"
    height="1213"
    src="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/decisionchart_hu_9ca1837f8ecdf619.webp"
    srcset="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/decisionchart_hu_9ca1837f8ecdf619.webp 800w, https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/decisionchart_hu_8ecbad24825e93ec.webp 1280w"
    sizes="(min-width: 768px) 50vw, 65vw"
    data-zoom-src="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/decisionchart_hu_c84e7ceb7d35c8e2.webp"></span></figure>
</p>
<p>Đại khái, quyết định nào tác động lớn và khó quay lại thì đưa lên diễn đàn, còn lại cứ để trên Slack. Họ dựa vào cách phân biệt &ldquo;cửa một chiều&rdquo; và &ldquo;cửa hai chiều&rdquo;. Quyết định một chiều là loại muốn quay lại thì quá tốn kém hoặc quá đau (ví dụ của họ là tăng giá), nên được xử lý đầy đủ bằng văn bản. Quyết định hai chiều thì dễ quay lại, tệ nhất cũng chỉ mất chút công sức, nên không cần thủ tục rườm rà.</p>

<h2 class="relative group">LOCI: ai làm gì
    <div id="loci-ai-làm-gì" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#loci-ai-l%c3%a0m-g%c3%ac" aria-label="Cọc dấu">#</a>
    </span>
    
</h2>
<p>Mỗi cuộc thảo luận đều phân vai theo mô hình LOCI: Lead, Owner, Consulted, Informed.</p>
<p>Lead chịu trách nhiệm về thành công của quyết định và đảm bảo cả đội hiểu rõ bối cảnh. Ngay từ đầu, Lead nói rõ mình muốn tham gia sâu đến đâu, sau đó tin tưởng giao cho Owner, chịu trách nhiệm về những gì đội làm ra, và chỉ lên tiếng khi thực sự không đồng ý. Mỗi thảo luận chỉ có đúng một Lead.</p>
<p>Owner là người chốt quyết định cuối cùng và kéo dự án đi tới. Owner giữ cho những người tham gia luôn nắm được tình hình và góp ý đúng hạn, tìm hiểu vấn đề, mở và đóng issue, rồi thông báo quyết định. Nếu vướng một bức tường không tự vượt qua được thì Owner tìm đến Lead. Mỗi quyết định chỉ có đúng một Owner.</p>
<p>Consulted là những người mà ý kiến của họ thực sự ảnh hưởng tới việc cân nhắc được mất. Họ phải góp ý kịp thời, dù chỉ để nói &ldquo;tôi không có gì thêm&rdquo;, và phải lên tiếng cảnh báo (đẩy lên Lead nếu cần) khi thấy quyết định đang sai nghiêm trọng. Alan giới hạn nhóm này khoảng sáu người, vì càng thêm người góp ý thì càng tốn thêm thời gian.</p>
<p>Informed thì đơn giản là những người được báo tin, thường là sau khi quyết định đã chốt. Đây là giao tiếp một chiều, không ai chờ họ phản hồi. Owner là người quyết định ai bị ảnh hưởng đủ nhiều để cần được thông báo.</p>

<h2 class="relative group">Một issue gồm những gì
    <div id="một-issue-gồm-những-gì" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#m%e1%bb%99t-issue-g%e1%bb%93m-nh%e1%bb%afng-g%c3%ac" aria-label="Cọc dấu">#</a>
    </span>
    
</h2>
<p>Issue nào cũng dùng chung một mẫu (template). Mẫu này vừa giúp suy nghĩ rõ ràng hơn, vừa ngầm dạy các bạn mới vào nghề cách bóc tách một vấn đề:</p>
<ul>
<li>Phạm vi (Scope): lý do có cuộc thảo luận này, kèm một dòng hay bị xem nhẹ là &ldquo;issue này KHÔNG bàn về…&rdquo;</li>
<li>Bối cảnh và tài liệu: đường dẫn tới các thảo luận và tài liệu trước đó</li>
<li>LOCI: ai là Lead, Owner, Consulted, Informed</li>
<li>Hạn chót: góp ý trước khi nào, khi nào đóng issue, khi nào cần có giải pháp</li>
<li>Đề xuất giải pháp: một phương án cụ thể, hoặc vài lựa chọn để cân nhắc</li>
<li>Câu hỏi: hỏi thẳng từng người cụ thể để xác nhận hoặc bác bỏ từng giả định cụ thể, để issue không thành lá thư bỏ vào chai thả trôi</li>
</ul>
<p><figure><span class="mc-img"><img
    class="my-0 rounded-md"
    loading="lazy"
    decoding="async"
    fetchpriority="auto"
    alt="hình minh họa"
    width="1390"
    height="715"
    src="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/gitpreview_hu_154de40eb6124f02.webp"
    srcset="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/gitpreview_hu_154de40eb6124f02.webp 800w, https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/gitpreview_hu_ab103b11817c0ef0.webp 1280w"
    sizes="(min-width: 768px) 50vw, 65vw"
    data-zoom-src="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/gitpreview_hu_aada79d3a582942a.webp"></span></figure>
</p>

<h2 class="relative group">Quy tắc viết để mọi thứ không bị ì
    <div id="quy-tắc-viết-để-mọi-thứ-không-bị-ì" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#quy-t%e1%ba%afc-vi%e1%ba%bft-%c4%91%e1%bb%83-m%e1%bb%8di-th%e1%bb%a9-kh%c3%b4ng-b%e1%bb%8b-%c3%ac" aria-label="Cọc dấu">#</a>
    </span>
    
</h2>
<p>Tranh luận bằng chữ cũng có thể lê thê y như tranh luận bằng miệng, nên họ đặt ra quy tắc. Viết ngắn gọn. Họ trích lời Boileau: &ldquo;Điều gì đã nghĩ thấu thì sẽ nói ra rõ ràng.&rdquo; Nếu bạn không viết được nó ra một cách đơn giản, tức là bạn vẫn chưa thực sự chắc. Mọi thứ viết ra đều phải qua phép thử &ldquo;Thì sao?&rdquo;: nếu bình luận của bạn dẫn tới hệ quả gì mà người đọc chưa thấy ngay, hãy nói thẳng ra.</p>
<p>Với Owner, việc theo sát về sau quan trọng không kém lúc mở đầu. Phải giữ cho cuộc thảo luận bám vào &ldquo;câu hỏi triệu đô&rdquo;, tức đúng cái điểm vướng thực sự quan trọng, thay vì để nó tan vào tiểu tiết. Thường xuyên tóm tắt lại những gì đã thống nhất và những gì còn bỏ ngỏ. Còn nhắc nhở qua Slack thì chỉ là phương án cuối cùng, dành cho những phần góp ý đã quá hạn hoặc chuyện thực sự gấp.</p>
<p><figure><span class="mc-img"><img
    class="my-0 rounded-md"
    loading="lazy"
    decoding="async"
    fetchpriority="auto"
    alt="hình minh họa"
    width="1390"
    height="910"
    src="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/slackmessage_hu_b208cd2844b5ba3a.webp"
    srcset="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/slackmessage_hu_b208cd2844b5ba3a.webp 800w, https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/slackmessage_hu_f44bfed068b95993.webp 1280w"
    sizes="(min-width: 768px) 50vw, 65vw"
    data-zoom-src="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/slackmessage_hu_3f37871d11c679c.webp"></span></figure>
</p>
<p>Owner cũng ẩn đi những bình luận không giúp cuộc thảo luận tiến lên. Ai cũng phải thạo cách định dạng trên GitHub, từ tiêu đề, chú thích cuối trang, bảng cho tới phím tắt, vì khi viết thì hình thức gần như quan trọng ngang nội dung.</p>

<h2 class="relative group">Không cần đồng thuận, không có khán giả
    <div id="không-cần-đồng-thuận-không-có-khán-giả" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#kh%c3%b4ng-c%e1%ba%a7n-%c4%91%e1%bb%93ng-thu%e1%ba%adn-kh%c3%b4ng-c%c3%b3-kh%c3%a1n-gi%e1%ba%a3" aria-label="Cọc dấu">#</a>
    </span>
    
</h2>
<p>Có hai quy tắc giữ cho cách làm này không biến thành kiểu quyết định theo hội đồng.</p>
<p>Thứ nhất, Owner ra quyết định theo kiểu mà Alan gọi là &ldquo;nhà độc tài sáng suốt&rdquo;. Họ tìm hiểu các ý tưởng, cân nhắc rủi ro, chất vấn đồng nghiệp, nhưng không đi tìm sự đồng thuận và cũng không bắt buộc phải làm theo mọi điều người khác nói. Alan nói thẳng họ không phải một nền dân chủ: nhân viên nào cũng là cổ đông, và lợi ích của công ty đặt trên lợi ích của một đội hay một cá nhân. Khi Owner đã khá chắc về một hướng đi, họ quyết, mọi người cùng làm thử, và khi đã thấy được tác động thì cùng nhìn lại xem quyết định đó đúng hay sai.</p>
<p>Thứ hai, số người tham gia được kiểm soát. Quy tắc &ldquo;hai chiếc pizza&rdquo; của Jeff Bezos cũng đúng với cách làm việc bất đồng bộ (async): issue càng đông người thì mỗi người càng góp ít. Quá khoảng sáu người là hiệu ứng khán giả xuất hiện, và chất lượng góp ý đi xuống. Chuyện thông báo cũng theo cùng tinh thần đó. Alan tin rằng ai cũng đã tự cấu hình thông báo GitHub cho mình (vào Settings, rồi tick &ldquo;Web and Mobile&rdquo; ở cả &ldquo;Participating&rdquo; lẫn &ldquo;Watching&rdquo;), nên việc gắn thẻ (tag) thẳng tên người trong phần Câu hỏi được giữ ở mức tối thiểu.</p>

<h2 class="relative group">Những gì tôi học được
    <div id="những-gì-tôi-học-được" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#nh%e1%bb%afng-g%c3%ac-t%c3%b4i-h%e1%bb%8dc-%c4%91%c6%b0%e1%bb%a3c" aria-label="Cọc dấu">#</a>
    </span>
    
</h2>
<p>Bạn không bao giờ kể lại được trọn vẹn một cuộc họp cho người vắng mặt, nhưng một quyết định đã viết ra thì ai cũng đọc được. Alan không nói đây là hệ thống tốt nhất hay duy nhất, chỉ là hệ thống hợp với họ: ít bị ngắt quãng hơn, ít hiệu ứng khán giả hơn, và quyết định được đưa ra sau khi đã lùi lại một bước để nhìn, với đầy đủ dữ kiện trên giấy. Tôi chưa định chuyển mọi quyết định của đội mình sang GitHub issue, nhưng cái mẫu dưới đây thì sẽ vào thẳng kho mã của chúng tôi.</p>

<h3 class="relative group">Mẫu đề xuất, dùng làm mẫu issue (issue template) trên GitHub
    <div id="mẫu-đề-xuất-dùng-làm-mẫu-issue-issue-template-trên-github" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#m%e1%ba%abu-%c4%91%e1%bb%81-xu%e1%ba%a5t-d%c3%b9ng-l%c3%a0m-m%e1%ba%abu-issue-issue-template-tr%c3%aan-github" aria-label="Cọc dấu">#</a>
    </span>
    
</h3>
<p>Hãy lưu nội dung dưới đây thành tệp <code>.github/ISSUE_TEMPLATE/decision.md</code> trong kho mã mà bạn dùng làm diễn đàn, và mỗi lần có người mở issue mới, GitHub sẽ gợi ý sẵn mẫu này. Các mục trong mẫu là của Alan; phần LOCI và nhãn là tôi thêm vào.</p>
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">Quyết định</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">about</span><span class="p">:</span><span class="w"> </span><span class="l">Đề xuất một quyết định và thu thập góp ý bằng văn bản</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;[Quyết định] &#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">labels</span><span class="p">:</span><span class="w"> </span><span class="l">decision</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Phạm vi
</span></span></span><span class="line"><span class="cl"><span class="k">-</span> Mục tiêu của issue này là ...
</span></span><span class="line"><span class="cl"><span class="k">-</span> Issue này KHÔNG bàn về ...
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Vì sao tôi mở issue này
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## LOCI
</span></span></span><span class="line"><span class="cl"><span class="k">-</span> Lead:
</span></span><span class="line"><span class="cl"><span class="k">-</span> Owner:
</span></span><span class="line"><span class="cl"><span class="k">-</span> Consulted:
</span></span><span class="line"><span class="cl"><span class="k">-</span> Informed:
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Mốc thời gian
</span></span></span><span class="line"><span class="cl"><span class="k">-</span> Góp ý trước ngày:
</span></span><span class="line"><span class="cl"><span class="k">-</span> Chốt quyết định trước ngày:
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Bối cảnh và tài liệu
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Đề xuất
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">## Câu hỏi</span></span></code></pre></div></div>

<h2 class="relative group">Nên dùng GitHub Issues hay GitHub Projects?
    <div id="nên-dùng-github-issues-hay-github-projects" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#n%c3%aan-d%c3%b9ng-github-issues-hay-github-projects" aria-label="Cọc dấu">#</a>
    </span>
    
</h2>
<p>Nếu bạn đang tính dùng GitHub để quản lý dự án theo nghĩa rộng hơn, thì nên biết hai phần này làm hai việc khác nhau. GitHub Issues là nơi diễn ra cuộc thảo luận, và khi issue đã đóng thì là nơi lưu lại quyết định. Còn một GitHub Project là một bảng công việc, ở dạng cột kiểu Kanban (board) hoặc dạng bảng tính (table), đặt chồng lên các issue của một hay nhiều kho mã, với các trường (field) do bạn tự định nghĩa như trạng thái, người phụ trách hay hạn chót. Với một diễn đàn ra quyết định như của Alan, chỉ cần nhãn và danh sách issue là đủ. Hãy thêm một Project khi bạn muốn thấy mọi quyết định đang mở trên cùng một màn hình, sắp xếp theo ngày phải chốt, và khi bạn bắt đầu theo dõi cả các đầu việc phát triển, bàn giao sản phẩm ở cùng chỗ đó. Đó cũng là lúc phần lớn các đội rốt cuộc dùng cả hai.</p>
]]></content:encoded>
      <media:content url="https://jared.lynskey.co.nz/en/posts/2024/2024-01-04-githubforprojectmanagement/featured.jpg" medium="image" type="image/jpeg" />
    </item>
    <item>
      <title>Giao tiếp bất đồng bộ (async) là gì? Ý nghĩa và niềm tin cần có để đội tự chủ</title>
      <link>https://jared.lynskey.co.nz/vi/posts/2023/2023-09-20-async-and-auto-flow/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/vi/posts/2023/2023-09-20-async-and-auto-flow/</guid>
      <pubDate>Wed, 20 Sep 2023 00:30:03 +0000</pubDate>
      <dc:creator>Jared Lynskey</dc:creator>
      <category>Async Communication</category>
      <category>Remote Work</category>
      <category>Autonomy</category>
      <category>Communication</category>
      <category>Management</category>
      <description>Giao tiếp bất đồng bộ (async communication) là gì, khác giao tiếp đồng bộ ở đâu, ví dụ một tin cập nhật bất đồng bộ viết tốt, và vì sao chuyển sang đội tự chủ là chuyện niềm tin nhiều hơn là công cụ.</description>
      <content:encoded><![CDATA[<p>Giao tiếp bất đồng bộ (asynchronous communication, gọi tắt là async) là kiểu trao đổi mà người nhận có thể đọc và trả lời vào lúc thuận tiện của họ: một bản cập nhật viết sẵn, một tài liệu, một bình luận trên ticket, hay một video quay sẵn. Còn giao tiếp đồng bộ thì đòi hỏi mọi người có mặt cùng lúc, như một cuộc họp, một cuộc gọi, hay một tin nhắn chat mà người gửi chờ được trả lời ngay. Đội nào cũng cần cả hai; rắc rối chỉ bắt đầu khi quyết định nào cũng phải chờ đến kiểu đồng bộ mới chốt được.</p>
<p>Trong hầu hết các dự án tôi từng tham gia, khâu chậm nhất không phải là viết mã. Mà là xếp hàng chờ: các quyết định chất đống sau lịch làm việc của một người quản lý, chờ một cái gật đầu mất ba ngày mới tới. Giao tiếp bất đồng bộ và đội tự chủ là cách chữa quen thuộc, và tôi tin vào nó. Nhưng về bản chất, cuộc chuyển đổi này là bài toán niềm tin khoác áo bài toán công cụ.</p>

<h3 class="relative group">Vì sao việc gì cũng phải chờ duyệt
    <div id="vì-sao-việc-gì-cũng-phải-chờ-duyệt" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#v%c3%ac-sao-vi%e1%bb%87c-g%c3%ac-c%c5%a9ng-ph%e1%ba%a3i-ch%e1%bb%9d-duy%e1%bb%87t" aria-label="Cọc dấu">#</a>
    </span>
    
</h3>
<p>Công bằng mà nói, văn hóa xin duyệt cũng có gốc gác của nó. Kiểm soát cho người ta cảm giác mọi thứ được chính xác: nếu quyết định nào cũng phải qua bàn quản lý thì chẳng có gì đi chệch hướng được. Một quyết định sai không chỉ làm hỏng dự án mà còn làm sứt mẻ uy tín của người quản lý, nên nỗi sợ chiếm phần rất lớn. Đôi khi người quản lý thật sự nghi ngờ đội chưa đủ kinh nghiệm để tự quyết cho tốt. Và đôi khi chỉ là thói quen còn sót lại: sơ đồ tổ chức xưa nay vẫn vận hành như vậy, thì cứ thế vận hành tiếp.</p>
<p>Để ý mà xem, trong bốn lý do đó chỉ có một lý do thực sự nằm ở phía đội. Ba lý do còn lại đều là chuyện của người quản lý.</p>

<h3 class="relative group">Để tự chủ thì cần những gì
    <div id="để-tự-chủ-thì-cần-những-gì" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%c4%91%e1%bb%83-t%e1%bb%b1-ch%e1%bb%a7-th%c3%ac-c%e1%ba%a7n-nh%e1%bb%afng-g%c3%ac" aria-label="Cọc dấu">#</a>
    </span>
    
</h3>
<p>Tự chủ mà không cùng nhìn về một hướng thì chỉ là hỗn loạn, có điều tinh thần mọi người phấn chấn hơn. Khi ai cũng thực sự hiểu mục tiêu chung, những quyết định họ tự đưa ra phần lớn sẽ tự khắc cùng hướng. Bí quyết chỉ có vậy. Đào tạo cũng quan trọng, vì tin một người được trang bị đầy đủ thì dễ hơn tin một người chỉ có nhiệt huyết. Nên giữ lại vài ranh giới: có những quyết định thực sự nên để quản lý đưa ra, và nói rõ đó là những quyết định nào sẽ giúp tránh được những bất ngờ tệ nhất. Sau đó cứ để vòng lặp phản hồi vận hành, và coi những sai lầm không tránh khỏi là học phí chứ không phải bằng chứng để quy lỗi.</p>
<p>Nếu niềm tin đã sứt mẻ (mà ở những đội đang cố thoát khỏi văn hóa xin duyệt thì thường là đã sứt mẻ, từ cả hai phía) thì không có đường tắt nào cả. Hãy gọi tên vấn đề trong một buổi nói chuyện cởi mở, để phía quản lý nhận phần lỗi của mình trước, rồi kiên trì nhất quán đến nhàm chán trong nhiều tháng. Vai trò rõ ràng và những buổi trao đổi định kỳ (check-in) hàn gắn được nhiều hơn mọi cử chỉ hoành tráng.</p>

<h3 class="relative group">Phần bất đồng bộ mới là phần dễ
    <div id="phần-bất-đồng-bộ-mới-là-phần-dễ" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#ph%e1%ba%a7n-b%e1%ba%a5t-%c4%91%e1%bb%93ng-b%e1%bb%99-m%e1%bb%9bi-l%c3%a0-ph%e1%ba%a7n-d%e1%bb%85" aria-label="Cọc dấu">#</a>
    </span>
    
</h3>
<p>Nói qua về công cụ trước: Slack hay Microsoft Teams đều ổn cả. Việc thật sự cần làm là tài liệu. Khi không ai ngồi chung phòng hay chung múi giờ, những quyết định được viết ra chính là trí nhớ của cả đội. Hãy đặt quy ước về thời gian phản hồi để bất đồng bộ không lặng lẽ biến thành &ldquo;không ai trả lời&rdquo;; &ldquo;trong vòng một ngày&rdquo; tốt hơn nhiều so với &ldquo;lúc nào rảnh&rdquo;, và quy ước này nên được ghi vào <a href="https://jared.lynskey.co.nz/vi/posts/2023/2023-06-02-project-frameworks-for-future-cto/" >kế hoạch truyền thông</a> của đội, ngay cạnh phần ai nhận bản cập nhật nào. Và hãy thực sự dạy mọi người cách viết một tin cập nhật cho người khác đọc sau sao cho tử tế, vì kỹ năng này không tự nhiên mà có: đủ bối cảnh để người đọc ra quyết định, nói rõ cần quyết định điều gì, và hạn chót là khi nào. Chẳng hạn như thế này:</p>
<blockquote><p><strong>Cần chốt trước thứ Năm: thử lại thanh toán</strong><br>
Hiện tại, khi thanh toán bằng thẻ thất bại, hệ thống chỉ thử lại (retry) một lần sau 24 giờ, và câu hỏi “Đơn hàng của tôi đâu rồi?” đang là loại yêu cầu hỗ trợ nhiều nhất.<br>
Phương án A: thử lại ba lần trong vòng 24 giờ (mất khoảng nửa ngày làm). Phương án B: giữ nguyên, thay vào đó gửi email báo cho khách.<br>
Tôi đề xuất chọn A. Chi tiết và số liệu có trong tài liệu tôi gửi kèm.<br>
Nếu đến 17 giờ thứ Năm không ai phản đối, tôi sẽ bắt đầu làm theo phương án A.</p>
</blockquote><p>Một tin như vậy thì ai đọc lúc 7 giờ sáng hay 11 giờ đêm, ở múi giờ nào, cũng có thể trả lời được mà không cần họp.</p>
<p>Bạn có thể triển khai Slack trong một buổi chiều. Còn niềm tin thì phải mất hàng tháng, và chính nó quyết định mọi thứ ở đây có thành hay không. Hãy làm rõ mục tiêu, và để một sai lầm chỉ tốn một bài học chứ không tốn cả sự nghiệp của ai. Làm được vậy thì phần bất đồng bộ gần như tự vận hành.</p>
]]></content:encoded>
      <media:content url="https://jared.lynskey.co.nz/en/posts/2023/2023-09-20-async-and-auto-flow/featured.jpeg" medium="image" type="image/jpeg" />
    </item>
  </channel>
</rss>
