<?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>Team · 仁才德</title>
    <link>https://jared.lynskey.co.nz/zh-cn/tags/team/</link>
    <description>关于软件工程与研发团队领导力的短文——绩效评估、招聘与团队扩张、CI/CD、DevOps 监控、智能体 AI。写于首尔。</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <copyright>© 2026 仁才德</copyright>
    <lastBuildDate>Sun, 01 Nov 2026 00:00:00 +1300</lastBuildDate>
    <atom:link href="https://jared.lynskey.co.nz/zh-cn/tags/team/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>咖啡聊天（Coffee Chat）是什么？和面试有什么不同，该问些什么</title>
      <link>https://jared.lynskey.co.nz/zh-cn/posts/2024/2024-07-12-coffee-chats/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/zh-cn/posts/2024/2024-07-12-coffee-chats/</guid>
      <pubDate>Fri, 12 Jul 2024 00:30:03 +0000</pubDate>
      <dc:creator>Jared Lynskey</dc:creator>
      <category>Engineering Manager</category>
      <category>Team</category>
      <category>People</category>
      <category>Team Size</category>
      <category>Scaling</category>
      <category>Efficiency</category>
      <category>Talent Scouting</category>
      <category>Coffee Chat</category>
      <category>Recruitment</category>
      <category>Hiring</category>
      <category>Culture Fit</category>
      <category>Networking</category>
      <description>咖啡聊天（coffee chat）是在咖啡馆或视频通话里进行的 30–45 分钟非正式对话，用来看双方值不值得深谈，它不是面试。为什么它成了我认识开发者最好用的方式，我怎么安排、问些什么，如果你是被邀请的一方该穿什么、聊什么，以及人们把它搞砸的几种方法。</description>
      <content:encoded><![CDATA[<p>我最想招的开发者从来不在招聘网站上。他们正埋头做自己的产品，对现状还算满意，对猎头消息保持着理所当然的警惕。今年转做工程管理之后，我用来认识这些人的工具简单得有点不好意思：一杯咖啡。</p>
<p>咖啡聊天就是 30–45 分钟的非正式对话，在咖啡馆或视频通话里都行。没有白板，没有面试官团，没有陷阱题。我讲我们在做什么、为什么做，对方讲自己在做什么、接下来想要什么，聊完双方就知道值不值得继续深谈。招聘与其说是筛选问题，不如说是匹配问题，而要交换匹配所需的信息，我不知道还有什么比这更快的办法。</p>

<h4 class="relative group">我为什么坚持做这件事
    <div id="我为什么坚持做这件事" 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="#%e6%88%91%e4%b8%ba%e4%bb%80%e4%b9%88%e5%9d%9a%e6%8c%81%e5%81%9a%e8%bf%99%e4%bb%b6%e4%ba%8b" aria-label="锚点">#</a>
    </span>
    
</h4>
<p>我已经不把这些聊天当成招聘了。它们就是聊天，只是每隔一阵子，其中一场会变成一次入职——有时是十八个月之后，对方的处境变了。能稳定产出好员工的管道，是靠这样的关系一点点垒起来的，不是靠职位广告。</p>
<p>它还解决了职位描述的老问题。JD 天生只能写得笼统。喝着咖啡，候选人可以问真正要紧的问题：头六个月做到什么算成功？我会和谁一起工作？团队眼下最棘手的技术难题是什么？听到诚实回答的人，会自己做出正确的取舍。</p>
<p>另外，聊天是在“演示”你的文化，而不是“描述”它。你有没有做功课、是不是真的好奇、尊不尊重对方的时间，这些比任何招聘页面都有说服力。反过来也一样——一个人在放松的对话里的样子，比排练过的面试更能告诉你和他共事是什么感觉。</p>
<p>咖啡聊天最见效的几个场景：接触没在找工作的人；在正式流程之前给内推热热身；以及和正在考虑职业转向的人聊聊——从 IC（个人贡献者）转管理、从创业公司去大厂，或者反过来。在人才紧张的市场里，你想要的人多半都属于其中一类。</p>

<h4 class="relative group">我怎么安排一场咖啡聊天
    <div id="我怎么安排一场咖啡聊天" 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="#%e6%88%91%e6%80%8e%e4%b9%88%e5%ae%89%e6%8e%92%e4%b8%80%e5%9c%ba%e5%92%96%e5%95%a1%e8%81%8a%e5%a4%a9" aria-label="锚点">#</a>
    </span>
    
</h4>
<p>第一条消息决定一切。模板化的开场白只会被删掉。先做功课，再坦白来意：</p>
<p><em>“你好 Sarah，我看了你在 QCon 上关于分布式系统的演讲，也读过你写事件溯源的博客。我们在 [公司] 扩展支付基础设施时正遇到类似的挑战。愿不愿意来一场 30 分钟的咖啡聊天？没有面试议程——只是想听听你的看法，也分享一下我们在做的事。”</em></p>
<p>这样写有效，是因为它具体、不藏目的，而且给出了价值（一次关于有趣问题的交流），而不是单方面索取时间。接下来是把麻烦留给自己：多给几个时间选项，选对方方便的地点（线上就用不需要下载的视频工具），发一封信息完整的日历邀请，别让对方猜。</p>
<p>聊天本身有个松散的形状就够了。开头几分钟是真诚的寒暄，说清楚为什么找对方。然后听对方讲：现在的工作、喜欢什么、烦什么、下一步想要什么——这一段你的任务主要是听。再讲你们的事：使命、团队真实的难题，包括难啃的部分，因为候选人尊重坦诚，而且对推销的味道极其敏感。最有价值的是接近尾声的开放环节：什么条件成立，对方才会考虑挪动？最后把下一步说清楚，哪怕下一步只是“保持联系”。</p>
<p>聊完 24 小时内发一条简短的感谢，提到对话里某个具体细节；答应过的东西——引荐也好、链接也好——尽快兑现。这段无聊的收尾，才是公司文化的现场演示。</p>
<p>如果你打算长期做，就用一个简单的表格记下聊过的人，隔段时间问候一下，哪怕手上没有空缺。这也不必是管理者的专利——很多最好的聊天，发生在你的工程师约自己圈子里厉害的人喝咖啡的时候。好的内推往往就是这么来的。</p>

<h4 class="relative group">值得一问的问题
    <div id="值得一问的问题" 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="#%e5%80%bc%e5%be%97%e4%b8%80%e9%97%ae%e7%9a%84%e9%97%ae%e9%a2%98" aria-label="锚点">#</a>
    </span>
    
</h4>
<p>我常问的：</p>
<ul>
<li>“你最近做过的最有意思的问题是什么？”</li>
<li>“下一份工作里，你希望有什么不一样？”</li>
<li>“你喜欢怎样学习？希望怎样在职业上成长？”</li>
<li>“有什么问题是你想问的、能帮你判断这里合不合适的？”</li>
</ul>
<p>如果我坐在候选人那一侧，我会问：</p>
<ul>
<li>“团队现在面临的最大挑战是什么？”</li>
<li>“这个职位的成功怎么衡量？”</li>
<li>“晋升路径是什么样的？”</li>
<li>“你当初为什么加入？为什么留下来？”</li>
<li>“关于在这里工作，有什么事是会让我意外的？”</li>
</ul>

<h4 class="relative group">如果你是被邀请的那一方
    <div id="如果你是被邀请的那一方" 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="#%e5%a6%82%e6%9e%9c%e4%bd%a0%e6%98%af%e8%a2%ab%e9%82%80%e8%af%b7%e7%9a%84%e9%82%a3%e4%b8%80%e6%96%b9" aria-label="锚点">#</a>
    </span>
    
</h4>
<p>搜“咖啡聊天是什么”的人，大多其实坐在我对面：有人约了他们，他们想知道自己要面对的是什么。下面是我站在发邀请这一侧，想告诉你的话。</p>
<p>它不是面试。没人给你打分，也没有测试，所以不用准备标准答案。但它终究是第一印象，所以把它当成见一位未来的同事，而不是朋友的朋友。和面试不同的是，你可以尽管好奇，而且对方期待你问的和答的一样多。</p>
<p>穿你平时在那家公司上班会穿的衣服。拿不准的话，商务休闲永远不会错。如果是视频通话，打开摄像头，找个安静的房间，这比穿哪件衬衫重要得多。</p>
<p>准备大约半小时就够了。看看这家公司做什么，以及对方写过或做过的东西。准备一个两分钟的版本，讲讲你现在在做什么、接下来想做什么，因为这个问题一定会来。再带上两三个自己的问题，上面那份清单就是个不错的起点。</p>
<p>至于聊什么：你的工作、你喜欢它哪里、你对他们的工作好奇什么。薪资先放一放，除非对方主动提起。问一句他们心里有没有具体的职位、如果有的话流程会是怎样，完全没问题。</p>
<p>一般是发起邀请的人买单。你可以主动提一下，但别为这个推来推去。一天之内发一条简短的感谢，提到你们真正聊过的某件事，你就已经比大多数人做得好了。</p>
<p>如果你自己也想约一场，那就开口。消息写短一点，说清楚为什么找的是这个人，让对方容易答应：“我一直在关注你们团队做的新搜索功能，我自己也在考虑转去做平台工程。接下来几周你有没有 30 分钟，喝杯咖啡或者打个电话？时间按你方便来。”这么具体的请求，大多数人都会答应。</p>

<h4 class="relative group">把它搞砸的几种方法
    <div id="把它搞砸的几种方法" 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="#%e6%8a%8a%e5%ae%83%e6%90%9e%e7%a0%b8%e7%9a%84%e5%87%a0%e7%a7%8d%e6%96%b9%e6%b3%95" aria-label="锚点">#</a>
    </span>
    
</h4>
<p>最快的一种是把它变成暗中面试。一旦开始考察技术能力、往里塞行为面试题，那份默契就破了——这些留给正式流程。其次是用力过猛地推销：留得住的员工，都是把难处看清楚之后才加入的人。毫无准备地出现，或者聊完就消失，伤害更隐蔽——每一场聊天都在决定这个人会怎么向自己的圈子描述你的公司。</p>
<p>站在我这一侧，警报信号是：对什么都没有好奇心的候选人，纯粹交易感的对话，以及用同一种怨气描述每一任前雇主的人。候选人也该有自己的清单：说不清这份工作为什么重要的对接人，谈到流失率或公司方向就闪烁其词的回答，还有那种比起理解你更热衷于推销的人。</p>
<p>不是每场咖啡聊天都有下文，事实上大多数没有，这没关系。关键在于，下次要填一个重要岗位时，你不是从一页空白的招聘启事开始，而是从一摞真实的对话开始。发出去的应该是一句“喝杯咖啡吗”，而不是一份职位描述。</p>

<h4 class="relative group">延伸阅读
    <div id="延伸阅读" 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="#%e5%bb%b6%e4%bc%b8%e9%98%85%e8%af%bb" aria-label="锚点">#</a>
    </span>
    
</h4>
<p><strong>本站相关文章：</strong></p>
<ul>
<li><a href="https://jared.lynskey.co.nz/zh-cn/posts/2024/2024-12-19-star-interviews/" >开发者面试中的 STAR 方法</a> —— 聊天进入正式面试流程后用得上</li>
<li><a href="https://jared.lynskey.co.nz/zh-cn/posts/2024/2024-02-10-prioritizing-onboarding/" >刚当上工程经理，我先做这三件事</a> —— 团队靠什么运转，正是你在匹配的东西</li>
<li><a href="https://jared.lynskey.co.nz/zh-cn/posts/2024/2024-07-01-internships/" >为什么你应该去创业公司实习</a> —— 和考虑去创业公司的人聊天时的有用背景</li>
</ul>
<p><strong>外部资源：</strong></p>
<ul>
<li><a href="https://review.firstround.com/articles/hiring-engineers/"  target="_blank" rel="noreferrer">First Round Review：工程师招聘</a> —— 经验丰富的创业公司操盘手写的招聘指南</li>
<li><a href="https://larahogan.me/blog/first-one-on-one-questions/"  target="_blank" rel="noreferrer">Lara Hogan 的“第一次 1:1 该问的问题”</a> —— 本是为 1:1 写的，用在咖啡聊天里同样好使</li>
<li><a href="https://www.kalzumeus.com/2012/01/23/salary-negotiation/"  target="_blank" rel="noreferrer">Patrick McKenzie 谈薪资谈判</a> —— 值得一读，帮你理解候选人那一侧的处境</li>
<li><a href="https://whothebook.com/" target="_blank" rel="noreferrer">Who: The A Method for Hiring</a> —— Geoff Smart 和 Randy Street 的系统化招聘框架</li>
<li><a href="https://hbr.org/topic/subject/hiring-and-recruitment"  target="_blank" rel="noreferrer">哈佛商业评论：招聘专题</a> —— 有研究支撑的人才招募文章</li>
</ul>
]]></content:encoded>
      <media:content url="https://jared.lynskey.co.nz/en/posts/2024/2024-07-12-coffee-chats/featured.jpg" medium="image" type="image/jpeg" />
    </item>
    <item>
      <title>用 GitHub Issues 做决策和项目管理：Alan 的方法，附模板</title>
      <link>https://jared.lynskey.co.nz/zh-cn/posts/2024/2024-01-04-githubforprojectmanagement/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/zh-cn/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>法国公司 Alan 怎么用书面的 GitHub issue 取代大部分会议：什么样的决策值得开 issue、LOCI 角色分工、写作规矩、一份可以直接放进 .github/ISSUE_TEMPLATE 的 issue 模板，以及什么时候该在上面再加一个 GitHub Project。</description>
      <content:encoded><![CDATA[<p>法国健康保险公司 Alan 写过<a href="https://alan.com/en/healthybusiness/media/a/asynchronous-decisions"  target="_blank" rel="noreferrer">一篇讲他们如何做决策的文章</a>，我反反复复看了好几遍。一句话概括：他们不订会议室，而是开一个 GitHub issue，把争论摆到文字里打。如今我自己也开始带团队了，这次是认认真真做了笔记。下面是我对他们这套系统的消化，夹带一些我自己的看法。</p>

<h2 class="relative group">Alan 为什么放弃了开会
    <div id="alan-为什么放弃了开会" 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="#alan-%e4%b8%ba%e4%bb%80%e4%b9%88%e6%94%be%e5%bc%83%e4%ba%86%e5%bc%80%e4%bc%9a" aria-label="锚点">#</a>
    </span>
    
</h2>
<p>他们的起点你一定不陌生：没人做准备，会议迟迟开不起来，嗓门最大的人不管对错总能拍板。一小时后，你比进会议室之前更糊涂，开始琢磨抽屉里还有没有止痛药。</p>
<p>Alan 一开始也想修好会议这台机器——最长 15 分钟、议程明确、必须产出决策。没用。讨论照样跑题，说过什么没人记得，缺席的和远程的同事干脆被排除在外。于是他们干脆把整件事搬进了文字里。</p>
<p>他们列举的好处我基本都认。写作逼你停下来真正思考，讨论因此更细致、论证更扎实；一切都有记录，不用靠七零八落的记忆；也不再是一场口才竞赛。而且论坛对全公司公开，谁都能参与讨论——不再只属于碰巧坐在会议室里的那几个人。</p>

<h2 class="relative group">把 GitHub 当公司论坛用
    <div id="把-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="#%e6%8a%8a-github-%e5%bd%93%e5%85%ac%e5%8f%b8%e8%ae%ba%e5%9d%9b%e7%94%a8" aria-label="锚点">#</a>
    </span>
    
</h2>
<p>这个&quot;论坛&quot;就是 GitHub。一个本为代码评审而生的平台，被 Alan 理直气壮地挪作他用。搭建过程简单得有点不好意思：</p>
<ol>
<li>注册一个 GitHub 账号。</li>
<li>建一个没有代码的私有仓库（他们的叫&quot;Topics&quot;）。</li>
<li>建一套标签体系，给对话分类。</li>
<li>用 Issues 标签页：open 的是进行中的讨论，closed 的是已定的决策。</li>
</ol>
<p>他们的 issue 已经超过 17,000 个。这意味着 17,000 场没必要开的会，而最让我心动的是：每一个决策为什么这么定，都留下了可搜索的历史。想推翻一个老决定？先去读读上次是哪些论据赢了。</p>

<h2 class="relative group">什么时候开 issue
    <div id="什么时候开-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="#%e4%bb%80%e4%b9%88%e6%97%b6%e5%80%99%e5%bc%80-issue" aria-label="锚点">#</a>
    </span>
    
</h2>
<p>不是每个决策都配得上一个 issue。他们的过滤器是四个问题：谁会受影响？可逆性如何？急不急？做决定前还需要更多背景吗？</p>
<p><figure><span class="mc-img"><img
    class="my-0 rounded-md"
    loading="lazy"
    decoding="async"
    fetchpriority="auto"
    alt="image"
    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>大体上，影响大、难回头的决策进论坛，其余留在 Slack。他们也用&quot;单向门/双向门&quot;的说法：单向决策（撤销代价太大，他们举的例子是涨价）走完整的书面流程；双向决策（撤销便宜，最坏不过损失点精力）就不必兴师动众。</p>

<h2 class="relative group">LOCI：谁干什么
    <div id="loci谁干什么" 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%e8%b0%81%e5%b9%b2%e4%bb%80%e4%b9%88" aria-label="锚点">#</a>
    </span>
    
</h2>
<p>每场讨论都按 LOCI 模型分配角色——Lead、Owner、Consulted、Informed。</p>
<p>Lead 对决策的成败负责，确保决策背后的来龙去脉在团队里讲清楚。他会在讨论开头说明自己想介入到什么程度，之后信任 Owner、为团队的产出兜底，只在强烈反对时才出声。每场讨论只有一个 Lead。</p>
<p>Owner 拍最终的板，推着项目往目标走。他要保证每个参与者知情并按时发言，调查问题、收集答案、跟进进展，负责开 issue 也负责关 issue，最后做出决定并公之于众。碰到自己迈不过去的坎，就去找 Lead。每个决策也只有一个 Owner。</p>
<p>Consulted 是那些意见真正影响权衡的人。他们必须按时发言——哪怕只是一句&quot;我没有补充&quot;——如果认为决策错得离谱，就要拉响警报，最坏的情况上报给 Lead。Alan 把这个群体控制在六人左右，再多，进度就要付出代价。</p>
<p>Informed 通常在决策定了之后才被告知。沟通是单向的，不需要他们做任何事。通知谁，由 Owner 根据影响范围来定。</p>
<p>这是针对单个决策的做法。放到整个项目上，我会把同样的事一次性写成一份<a href="https://jared.lynskey.co.nz/zh-cn/posts/2023/2023-06-02-project-frameworks-for-future-cto/" >项目沟通计划</a>：谁需要知道什么、多久一次、由谁来告诉他们。</p>

<h2 class="relative group">一个 issue 的解剖图
    <div id="一个-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="#%e4%b8%80%e4%b8%aa-issue-%e7%9a%84%e8%a7%a3%e5%89%96%e5%9b%be" aria-label="锚点">#</a>
    </span>
    
</h2>
<p>每个 issue 都用同一套模板。这既能磨利思路，也悄悄教会了初级同事怎么拆解问题：</p>
<ul>
<li>范围——讨论的&quot;为什么&quot;，其中最被低估的一行是&quot;这个 issue 不讨论……&quot;</li>
<li>背景和材料——链接到之前的讨论和文档</li>
<li>LOCI——谁是 Lead、Owner、Consulted、Informed</li>
<li>截止时间——发言截止日、issue 关闭日、必须拿出方案的日期</li>
<li>方案提议——推荐一个方案，或列几个供选择</li>
<li>提问——把具体的问题抛给具体的人，去证实或推翻具体的假设，免得 issue 变成一只&quot;漂流瓶&quot;</li>
</ul>
<p><figure><span class="mc-img"><img
    class="my-0 rounded-md"
    loading="lazy"
    decoding="async"
    fetchpriority="auto"
    alt="image"
    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">让讨论不拖沓的写作规矩
    <div id="让讨论不拖沓的写作规矩" 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="#%e8%ae%a9%e8%ae%a8%e8%ae%ba%e4%b8%8d%e6%8b%96%e6%b2%93%e7%9a%84%e5%86%99%e4%bd%9c%e8%a7%84%e7%9f%a9" aria-label="锚点">#</a>
    </span>
    
</h2>
<p>文字辩论拖起来一点不比口头的差，所以他们有规矩。首先是简洁——他们引用布瓦洛：&ldquo;构思清晰的内容，表达也清晰。&ldquo;写不简单，说明你自己还没想清楚。其次，每写一段都做一次&quot;那又怎样？&ldquo;测试：如果你这条评论的言下之意不明显，就把它写明白。</p>
<p>对 Owner 来说，开完 issue 之后的经营同样重要。让讨论始终对准那个&quot;百万美元问题&rdquo;——真正要紧的那一个卡点——别让它溶解在细节的海洋里；定期总结哪些已达成一致、哪些还悬着；Slack 提醒留作最后手段，只用于发言逾期或真正紧急的情况。</p>
<p><figure><span class="mc-img"><img
    class="my-0 rounded-md"
    loading="lazy"
    decoding="async"
    fetchpriority="auto"
    alt="image"
    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 还可以隐藏那些没有推动对话的评论。另外，标题、脚注、表格、键盘快捷键这些 GitHub 排版功能，默认人人都要会用——在书面世界里，形式和内容几乎同等重要。</p>

<h2 class="relative group">不搞共识，不养观众
    <div id="不搞共识不养观众" 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="#%e4%b8%8d%e6%90%9e%e5%85%b1%e8%af%86%e4%b8%8d%e5%85%bb%e8%a7%82%e4%bc%97" aria-label="锚点">#</a>
    </span>
    
</h2>
<p>有两条规矩防止这套系统沦为&quot;委员会决策&rdquo;。</p>
<p>第一，Owner 以 Alan 所说的&quot;开明专制者&quot;身份做决定。他去调研新想法、衡量风险、分析数据、追问同事——但不寻求共识，也没义务采纳听到的每一条建议。Alan 说得很直白：公司不是民主制。人人都是股东，公司利益排在团队和个人之前。当然他们也不要孤立、仓促、拍脑袋的决定。当 Owner 对这一注有了足够把握，就拍板，大家一起试；等影响逐渐清晰，再回头复盘，看下次怎么做得更好。</p>
<p>第二，控制参与人数。贝佐斯的&quot;两个披萨&quot;规则在异步世界照样成立：人越多，每个人的贡献越少。超过六个参与者，旁观者效应就开始冒头，参与质量随之下滑。通知也遵循同样的哲学，渐进式来——Alan 信任每个人都配置好了自己的 GitHub 通知（Settings 里把&quot;Participating&quot;和&quot;Watching&quot;下的&quot;Web and Mobile&quot;勾上），所以 issue 提问区里的 @ 能省则省。</p>

<h2 class="relative group">我打算带走什么
    <div id="我打算带走什么" 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="#%e6%88%91%e6%89%93%e7%ae%97%e5%b8%a6%e8%b5%b0%e4%bb%80%e4%b9%88" aria-label="锚点">#</a>
    </span>
    
</h2>
<p>一场会议的内容，永远没法向缺席的人复述完整；但一份写下来的决策，谁都能读。Alan 自己也说，这不是最好的、更不是唯一的方案，只是最合他们脾性的那一个：打断变少了，旁观者效应变淡了，做决策时能先退一步，事实也都写在纸面上。我不打算把团队的每个决定都搬进 GitHub issue，但下面这个模板，马上就进我们的仓库。</p>

<h3 class="relative group">做成 GitHub issue 模板
    <div id="做成-github-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="#%e5%81%9a%e6%88%90-github-issue-%e6%a8%a1%e6%9d%bf" aria-label="锚点">#</a>
    </span>
    
</h3>
<p>把下面这段存成 <code>.github/ISSUE_TEMPLATE/decision.md</code>，放进你拿来当论坛的那个仓库，以后每次有人新建 issue，GitHub 都会把它列出来供选择。各个部分是 Alan 的，LOCI 那几行和标签是我加的。</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">决策</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">提出一个决策，以书面形式收集意见</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;[决策] &#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">## 范围
</span></span></span><span class="line"><span class="cl"><span class="k">-</span> 这个 issue 的目标是……
</span></span><span class="line"><span class="cl"><span class="k">-</span> 这个 issue **不**讨论……
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## 我为什么开这个 issue
</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">## 时间线
</span></span></span><span class="line"><span class="cl"><span class="k">-</span> 发言截止日：
</span></span><span class="line"><span class="cl"><span class="k">-</span> 决策截止日：
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## 背景和材料
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## 方案提议
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">## 提问</span></span></code></pre></div></div>

<h2 class="relative group">GitHub Issues 还是 GitHub Projects？
    <div id="github-issues-还是-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="#github-issues-%e8%bf%98%e6%98%af-github-projects" aria-label="锚点">#</a>
    </span>
    
</h2>
<p>如果你在更大的范围里考虑拿 GitHub 做项目管理，这两样东西分工不同。Issues 承载讨论，关闭之后承载的就是决策本身。GitHub Project 则是铺在一个或多个仓库的 issue 之上的看板或表格，状态、负责人、截止日期这些字段都可以自己定义。像 Alan 这样的决策论坛，标签加上 issue 列表就够了。等你想把所有还没定的决策放在一个屏幕上、按必须拍板的日期排好序，或者开始在同一个地方跟踪交付工作时，再加一个 Project。大多数团队最后都是走到这一步，两样一起用。</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>我们赢了 Seoul Tech Impact Hackathon 2023</title>
      <link>https://jared.lynskey.co.nz/zh-cn/posts/2024/2024-01-05-hackathon/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/zh-cn/posts/2024/2024-01-05-hackathon/</guid>
      <pubDate>Fri, 05 Jan 2024 00:30:03 +0000</pubDate>
      <dc:creator>Jared Lynskey</dc:creator>
      <category>Hackathon</category>
      <category>Team</category>
      <category>Seoul</category>
      <category>Startups</category>
      <description>我们团队做了一个帮你找到韩国路边小吃摊的定位应用，拿下了 Seoul Tech Impact Hackathon 2023 的冠军。这里记下那个周末，也给第一次参加黑客马拉松的人几条建议。</description>
      <content:encoded><![CDATA[<p>一个到现在想起来还会咧嘴笑的消息：我们团队赢了 Seoul Tech Impact Hackathon 2023。我们做的是一个帮你找到韩国路边小吃摊的定位应用。</p>

<h4 class="relative group">想法本身
    <div id="想法本身" 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="#%e6%83%b3%e6%b3%95%e6%9c%ac%e8%ba%ab" aria-label="锚点">#</a>
    </span>
    
</h4>
<p>韩国的路边摊没有地址。布帐马车想支在哪就支在哪，除非你本来就知道那个摊位，否则在网上根本搜不到。我们的应用做的事，就是把摊位真真正正地标到地图上。摊主受益，深夜到处找辣炒年糕的人也受益。</p>

<h4 class="relative group">那个周末
    <div id="那个周末" 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="#%e9%82%a3%e4%b8%aa%e5%91%a8%e6%9c%ab" aria-label="锚点">#</a>
    </span>
    
</h4>
<p>活动由 Lunit Global 主办，场地也是他们的办公室。各种背景的队伍聚在一起，大部分人通宵干活，主办方把一切安排得井井有条。就是那种一抬头发现已经凌晨四点的活动。</p>

<h4 class="relative group">我们的队伍
    <div id="我们的队伍" 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="#%e6%88%91%e4%bb%ac%e7%9a%84%e9%98%9f%e4%bc%8d" aria-label="锚点">#</a>
    </span>
    
</h4>
<p>队友是 Sharon Levy、Jonothan Sue、我，还有 Tiaan van der Riel。每个人的长处都不一样，所以分工毫无摩擦。路演能打动评委，我想是因为这个问题根本不需要解释——&ldquo;路边摊在网上是隐形的&quot;这句话一说出口，答案自己就冒出来了。</p>
<p><figure><span class="mc-img" style="--lqip:url('data:image/webp;base64,UklGRlQBAABXRUJQVlA4IEgBAADQBwCdASogABUAPw10qkomI6GYDAQAYxDE8oBhnNQSgLnv/cvQDSXs9k240h38VtUtE0Basu7YrEVFFoagJbnHV66dtYtmAADyxOyne/pqKTTtaNVvYOMbOdLcZroQrm9UGpnSk0pIfpX1gNbXtnAJZ/hmO5p+ZlKdBp0ZaNEfXjavuInT4aIP/RO1tLHfZ7Pmg6EXGNR+VleGtREWnGPiXPTGMDk22kANPcMnHaV2GhB4pq+jnD7c+JDuhevSHrPWPfD+0ivP59RfB3YpR50VQuSBTWXZewRHzuG4Rz0ddTS0W0JdKVNEGdNCa3tgSLkzwyp5uiZXbpy/vxbQaepzka4oulP4+YGk0/+Z2BpB7s5dUqtaOSVxF3nc1/j/X5Yif8M28kaWYKzxb/k/tiM6UdwVgQsDTff8FVDBwihizJe/NJOgH8AA')"><img
    class="my-0 rounded-md"
    loading="lazy"
    decoding="async"
    fetchpriority="auto"
    alt="在 Seoul Tech Impact Hackathon 2023 上埋头干活的 Kiwi Alumni 团队"
    width="1562"
    height="1039"
    src="https://jared.lynskey.co.nz/img/posts/2024/2024-01-05-hackathon/app_hu_dc1693bdd058fb5d.webp"
    srcset="https://jared.lynskey.co.nz/img/posts/2024/2024-01-05-hackathon/app_hu_dc1693bdd058fb5d.webp 800w, https://jared.lynskey.co.nz/img/posts/2024/2024-01-05-hackathon/app_hu_ad63f8a62aed6509.webp 1280w"
    sizes="(min-width: 768px) 50vw, 65vw"
    data-zoom-src="https://jared.lynskey.co.nz/img/posts/2024/2024-01-05-hackathon/app_hu_daf2a7eb33e096ee.webp"></span></figure>
</p>

<h4 class="relative group">接下来
    <div id="接下来" 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="#%e6%8e%a5%e4%b8%8b%e6%9d%a5" aria-label="锚点">#</a>
    </span>
    
</h4>
<p>我们正在准备把这个应用上架应用商店。它起于一个周末项目，但它要解决的问题足够真实，现在停手反而觉得可惜。</p>

<h4 class="relative group">如果这是你的第一次黑客马拉松
    <div id="如果这是你的第一次黑客马拉松" 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="#%e5%a6%82%e6%9e%9c%e8%bf%99%e6%98%af%e4%bd%a0%e7%9a%84%e7%ac%ac%e4%b8%80%e6%ac%a1%e9%bb%91%e5%ae%a2%e9%a9%ac%e6%8b%89%e6%9d%be" aria-label="锚点">#</a>
    </span>
    
</h4>
<p>如果你还没参加过黑客马拉松，我很推荐去试一次。和素不相识的人快速做出点东西，顺便看清自己在压力下到底是什么样，偶尔还能带走一个值得继续做的产品。最坏的结果，也不过是一个零食管够的周末，外加一个没人要求你做的、但能跑起来的原型。</p>
<p>去之前，有几件事值得知道：</p>
<ul>
<li>选一个一句话就能讲清楚的问题。评委要是花了第一分钟才弄明白问题是什么，你的解决方案他们就听不进去了。</li>
<li>尽早分工，最好在第一个小时内定好：谁写代码，谁做设计，谁负责路演。拖到凌晨两点再商量，代价大得多。</li>
<li>先把演示路径做出来。台上要展示的那一条流程先从头到尾跑通，再往上加别的东西。</li>
<li>路演要带着真实的 demo 大声排练，至少两遍。路演几乎总会比你预想的长。</li>
<li>睡一会儿。哪怕只睡两三个小时，第二天早上的判断和路演都会明显更好。</li>
</ul>

<h4 class="relative group">链接：
    <div id="链接" 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="#%e9%93%be%e6%8e%a5" aria-label="锚点">#</a>
    </span>
    
</h4>
<p><a href="https://lnkd.in/drMXUgPB"  target="_blank" rel="noreferrer">https://lnkd.in/drMXUgPB</a></p>
]]></content:encoded>
      <media:content url="https://jared.lynskey.co.nz/en/posts/2024/2024-01-05-hackathon/featured.jpeg" medium="image" type="image/jpeg" />
    </item>
  </channel>
</rss>
