<?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 · Jared Lynskey</title>
    <link>https://jared.lynskey.co.nz/en/tags/team/</link>
    <description>Short stories of value on software engineering and engineering leadership — performance reviews, hiring and scaling teams, CI/CD, DevOps monitoring and agentic AI. Written from Seoul.</description>
    <generator>Hugo</generator>
    <language>en</language>
    <copyright>© 2026 Jared Lynskey</copyright>
    <lastBuildDate>Sun, 01 Nov 2026 00:00:00 +1300</lastBuildDate>
    <atom:link href="https://jared.lynskey.co.nz/en/tags/team/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>What Is a Coffee Chat? How It Differs From an Interview, and What to Ask</title>
      <link>https://jared.lynskey.co.nz/en/posts/2024/2024-07-12-coffee-chats/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/en/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>A coffee chat is an informal 30–45 minute conversation, over coffee or a video call, to see whether a deeper conversation makes sense. It&#39;s not an interview. Why it&#39;s become my favourite way to meet developers, how I run one, the questions worth asking, what to wear and talk about if you&#39;re the one invited, and the ways people ruin them.</description>
      <content:encoded><![CDATA[<p>The developers I most want to hire are never on the job boards. They&rsquo;re heads-down building something, reasonably content where they are, and rightly suspicious of recruiter messages. Since moving into engineering management this year, the tool I&rsquo;ve come to rely on for meeting them is embarrassingly simple: a coffee.</p>
<p>A coffee chat is 30–45 minutes, informal, at a café or over a video call. No whiteboard, no panel, no trick questions. I talk about what we&rsquo;re building and why, they talk about what they&rsquo;re working on and what they&rsquo;d want next, and both of us leave knowing whether a deeper conversation makes sense. Hiring is a matching problem more than a selection problem, and this is the fastest way I know to trade the information that matching actually needs.</p>

<h4 class="relative group">Why I bother
    <div id="why-i-bother" 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="#why-i-bother" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>I&rsquo;ve stopped thinking of these chats as recruiting. They&rsquo;re just conversations, and every so often one turns into a hire — sometimes eighteen months later, when the person&rsquo;s circumstances change. The pipelines that reliably produce good hires are built out of relationships like that, not out of job ads.</p>
<p>They also fix the job-description problem. JDs are generic by necessity. Over coffee, a candidate can ask the questions that actually matter to them: what does success look like in the first six months, who would I be working with, what&rsquo;s the hairiest technical problem on the team right now. People who hear honest answers to those questions self-select well.</p>
<p>And a chat shows your culture instead of describing it. Whether you turn up prepared, curious, and respectful of someone&rsquo;s time says more than any careers page. It runs both ways, too — how someone behaves in a relaxed conversation tells you more about working with them than a rehearsed interview ever will.</p>
<p>The moments where a coffee chat earns its keep: approaching someone who isn&rsquo;t looking, warming up a referral before anything formal, and talking with someone weighing a career shift — IC to management, startup to enterprise, or the reverse. In a tight talent market, that covers most of the people you want.</p>

<h4 class="relative group">How I run one
    <div id="how-i-run-one" 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="#how-i-run-one" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>The first message decides everything. Generic outreach gets deleted. Do your homework and be honest about your intentions:</p>
<p><em>&ldquo;Hi Sarah, I noticed your talk on distributed systems at QCon and your blog posts on event sourcing. We&rsquo;re tackling similar challenges at [Company] as we scale our payment infrastructure. Would you be open to a 30-minute coffee chat? No interview agenda—just curious to hear your perspective and share what we&rsquo;re working on.&rdquo;</em></p>
<p>That works because it&rsquo;s specific, upfront, and offers something (a conversation about interesting problems) rather than only asking for time. Then make it easy: offer a few time options, pick a spot convenient for them or a video tool that doesn&rsquo;t need a download, and send a proper calendar invite so nobody&rsquo;s guessing.</p>
<p>The chat itself only needs a loose shape. A few minutes of real small talk and why you reached out. Then their story — current work, what they enjoy, what frustrates them, what they&rsquo;d want in the next thing — where your job is mostly to listen. Then yours: the mission, the team&rsquo;s actual challenges, hard parts included, because candidates respect transparency and can smell a sales pitch. The most valuable stretch is the open one near the end: what would need to be true for them to consider a move? Close with explicit next steps, even if the next step is just &ldquo;let&rsquo;s stay in touch&rdquo;.</p>
<p>Follow up within 24 hours with a short note that references something specific, and deliver anything you promised — an intro, a link, whatever. The boring aftermath is the real culture demo.</p>
<p>If you do this more than occasionally, keep a simple spreadsheet of who you&rsquo;ve talked to and check in every so often, even with no role open. And it needn&rsquo;t be a manager-only activity — some of the best chats happen when your engineers grab coffee with impressive people in their own networks. That&rsquo;s where good referrals come from.</p>

<h4 class="relative group">Questions that earn their slot
    <div id="questions-that-earn-their-slot" 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="#questions-that-earn-their-slot" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>Ones I ask:</p>
<ul>
<li>&ldquo;What&rsquo;s been the most interesting problem you&rsquo;ve worked on recently?&rdquo;</li>
<li>&ldquo;What would you want to be different in your next role?&rdquo;</li>
<li>&ldquo;What&rsquo;s your learning style? How do you like to grow professionally?&rdquo;</li>
<li>&ldquo;What questions do you have that would help you evaluate whether this could be a fit?&rdquo;</li>
</ul>
<p>Ones I&rsquo;d ask if I were on the other side of the table:</p>
<ul>
<li>&ldquo;What&rsquo;s the biggest challenge the team is facing right now?&rdquo;</li>
<li>&ldquo;How do you measure success for this role?&rdquo;</li>
<li>&ldquo;What does the path to promotion look like?&rdquo;</li>
<li>&ldquo;Why did you join the company? What&rsquo;s kept you here?&rdquo;</li>
<li>&ldquo;What&rsquo;s something about working here that might surprise me?&rdquo;</li>
</ul>

<h4 class="relative group">If you&rsquo;re the one invited
    <div id="if-youre-the-one-invited" 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="#if-youre-the-one-invited" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>Most people who look up what a coffee chat is are on the other side of the table from me: someone has asked them for one, and they want to know what they&rsquo;re walking into. Here&rsquo;s what I&rsquo;d tell you from the side that sends the invitations.</p>
<p>It isn&rsquo;t an interview. Nobody is scoring you and there&rsquo;s no test, so you don&rsquo;t need to prepare answers. It is still a first impression, though, so treat it like meeting a future colleague rather than a friend of a friend. The difference from an interview is that you&rsquo;re allowed to be curious, and you&rsquo;re expected to ask as much as you answer.</p>
<p>Wear what you&rsquo;d wear to work there on an ordinary day. If you don&rsquo;t know, smart casual is never wrong. On a video call, have the camera on and find a quiet room; that matters more than the shirt.</p>
<p>Preparation takes about half an hour. Read what the company makes and anything the person has written or built. Have a two-minute version of what you work on now and what you&rsquo;d want next, because that question is coming. Bring two or three of your own questions; the list above is a fair start.</p>
<p>As for what to talk about: your work, what you enjoy about it, what you&rsquo;re curious about in theirs. Leave salary for later unless they raise it. It&rsquo;s perfectly fine to ask whether there&rsquo;s a role in mind and what the process would look like if there were.</p>
<p>Whoever did the inviting usually pays. Offer, but don&rsquo;t make a thing of it. Send a short thank-you within a day that mentions something you actually talked about, and you&rsquo;ve done more than most.</p>
<p>And if you want one yourself, ask. Keep the message short, say why that person, and make it easy to say yes: &ldquo;I&rsquo;ve been following your team&rsquo;s work on the new search, and I&rsquo;m thinking about moving into platform engineering. Would you have 30 minutes for a coffee or a call in the next few weeks? Happy to work around you.&rdquo; Most people say yes to a request that specific.</p>

<h4 class="relative group">Ways to ruin it
    <div id="ways-to-ruin-it" 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="#ways-to-ruin-it" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>The fastest is turning it into a stealth interview. Start quizzing someone on technical skills or sliding in behavioural questions and you&rsquo;ve broken the implicit deal — save that for the formal process. Over-selling is a close second: the hires that stick are the people who joined with clear eyes about the hard parts. Turning up unprepared, or going silent afterwards, does quieter damage; every chat shapes what that person tells their network about you.</p>
<p>From my side of the table, the warning signs are a candidate with no curiosity about anything, a conversation that feels purely transactional, or someone who describes every past employer with the same bitterness. Candidates should keep their own list: a rep who can&rsquo;t explain why the work matters, evasive answers about turnover or direction, and anyone more interested in selling you than understanding you.</p>
<p>Not every chat leads anywhere, and that&rsquo;s fine — most don&rsquo;t. The point is that the next time you need to fill a critical role, you&rsquo;re not starting from a blank job ad. You&rsquo;re starting from a stack of real conversations. Reach out with an invitation to coffee, not a job description.</p>

<h4 class="relative group">Further Reading
    <div id="further-reading" 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="#further-reading" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p><strong>Related Articles on This Site:</strong></p>
<ul>
<li><a href="https://jared.lynskey.co.nz/en/posts/2024/2024-12-19-star-interviews/" >Using the STAR Method for Developer Interviews</a> - for when the chat turns into a formal interview process</li>
<li><a href="https://jared.lynskey.co.nz/en/posts/2024/2024-02-10-prioritizing-onboarding/" >Three Things I&rsquo;m Focusing on as a New Engineering Manager</a> - what makes teams work, which is what you&rsquo;re matching for</li>
<li><a href="https://jared.lynskey.co.nz/en/posts/2024/2024-07-01-internships/" >Why You Should Intern at a Startup</a> - useful context when chatting with someone weighing a startup move</li>
</ul>
<p><strong>External Resources:</strong></p>
<ul>
<li><a href="https://review.firstround.com/articles/hiring-engineers/"  target="_blank" rel="noreferrer">First Round Review: Hiring Engineers</a> - startup hiring guides from experienced operators</li>
<li><a href="https://larahogan.me/blog/first-one-on-one-questions/"  target="_blank" rel="noreferrer">Lara Hogan&rsquo;s &ldquo;Questions for Our First 1:1&rdquo;</a> - written for 1:1s, works brilliantly over coffee</li>
<li><a href="https://www.kalzumeus.com/2012/01/23/salary-negotiation/"  target="_blank" rel="noreferrer">Patrick McKenzie on Salary Negotiation</a> - worth reading to understand the candidate&rsquo;s side of the table</li>
<li><a href="https://whothebook.com/" target="_blank" rel="noreferrer">Who: The A Method for Hiring</a> - Geoff Smart and Randy Street&rsquo;s framework for systematic hiring</li>
<li><a href="https://hbr.org/topic/subject/hiring-and-recruitment"  target="_blank" rel="noreferrer">Harvard Business Review: Hiring and Recruitment</a> - research-backed pieces on talent acquisition</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>Using GitHub Issues for Decisions and Project Management: Alan&#39;s Method, With a Template</title>
      <link>https://jared.lynskey.co.nz/en/posts/2024/2024-01-04-githubforprojectmanagement/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/en/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>How Alan replaces most meetings with written GitHub issues: when a decision earns an issue, the LOCI roles, the writing rules, an issue template you can drop into .github/ISSUE_TEMPLATE, and when to add a GitHub Project on top.</description>
      <content:encoded><![CDATA[<p>I keep coming back to <a href="https://alan.com/en/healthybusiness/media/a/asynchronous-decisions"  target="_blank" rel="noreferrer">this article</a> from Alan, the French health insurance company, about how they make decisions. The short version: instead of booking a meeting, they open a GitHub issue and argue it out in writing. Now that I&rsquo;m managing a team myself, I&rsquo;ve been taking proper notes. What follows is my digest of their system, with my own comments mixed in.</p>

<h2 class="relative group">Why they gave up on meetings
    <div id="why-they-gave-up-on-meetings" 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="#why-they-gave-up-on-meetings" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Their starting point will sound familiar. Nobody comes prepared, the meeting starts late, and the loudest voice wins whether it&rsquo;s right or not. An hour later you&rsquo;re more confused than when you walked in and wondering if there&rsquo;s any paracetamol left in the drawer.</p>
<p>Alan tried fixing meetings first — 15 minutes max, clear agenda, decision required. It didn&rsquo;t hold. Discussions drifted, nobody could remember what was said, and absent or remote people were simply out of luck. So they moved the whole thing into writing.</p>
<p>The claims they make for it ring true to me. Writing forces you to slow down and actually think, so the discussion gets more nuanced and better argued. Everything is documented instead of half-remembered. It stops being an eloquence contest. And because the forum is open to the whole company, anyone can contribute — not just whoever happened to be in the room.</p>

<h2 class="relative group">GitHub as the company forum
    <div id="github-as-the-company-forum" 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-as-the-company-forum" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>The forum itself is GitHub, a platform built for code review that Alan cheerfully hijacked. The setup is almost embarrassingly simple:</p>
<ol>
<li>Create a GitHub account.</li>
<li>Create a private repo with no code in it (theirs is called &ldquo;Topics&rdquo;).</li>
<li>Add a labelling system to categorise conversations.</li>
<li>Use the Issues tab: open issues are live discussions, closed ones are decisions made.</li>
</ol>
<p>They&rsquo;ve passed 17,000 issues. That&rsquo;s a lot of meetings that never had to happen, and — the part I find most appealing — a searchable history of why every decision went the way it did. If you want to challenge an old decision, you can first read which arguments won last time.</p>

<h2 class="relative group">When to open an issue
    <div id="when-to-open-an-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="#when-to-open-an-issue" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Not every decision earns an issue. Their filter is four questions: who will be affected? how reversible is it? how urgent is it? do I need more context before deciding?</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>Broadly, high-impact and hard-to-reverse decisions go to the forum; the rest can stay in Slack. They lean on the one-way vs two-way door distinction: a one-way decision (too expensive or painful to reverse — their example is a price increase) gets the full written treatment, while a two-way decision (cheap to undo, worst case you lose some energy) doesn&rsquo;t need the ceremony.</p>

<h2 class="relative group">LOCI: who does what
    <div id="loci-who-does-what" 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-who-does-what" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Every discussion assigns roles using the LOCI model — Lead, Owner, Consulted, Informed.</p>
<p>The Lead is accountable for the decision&rsquo;s success and makes sure the context is understood across the team. They say upfront how involved they want to be, then trust the Owner and take responsibility for what the team produces, speaking up only when they strongly disagree. One Lead per discussion.</p>
<p>The Owner makes the final call and drives the project. They keep contributors informed and contributing on time, investigate the problem, open and close the issue, and share the decision. If they hit a wall they can&rsquo;t get past, they go to the Lead. One Owner per decision.</p>
<p>Consulted people are the ones whose input genuinely matters to the trade-off. They&rsquo;re expected to contribute promptly — even if only to say &ldquo;nothing to add&rdquo; — and to raise the alarm (escalating to the Lead if needed) when they think the decision is badly wrong. Alan caps this group at about six, because more input starts costing schedule.</p>
<p>Informed people simply get told, usually once the decision is made. One-way communication, nothing expected back. The Owner decides who&rsquo;s affected enough to be notified.</p>
<p>That works decision by decision. For a whole project, I write the same thing down once, as a <a href="https://jared.lynskey.co.nz/en/posts/2023/2023-06-02-project-frameworks-for-future-cto/" >project communication plan</a>: who needs to hear what, how often, and who tells them.</p>

<h2 class="relative group">The anatomy of an issue
    <div id="the-anatomy-of-an-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="#the-anatomy-of-an-issue" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Every issue uses the same template, which both sharpens the thinking and quietly teaches junior people how to break a problem down:</p>
<ul>
<li>Scope — the &ldquo;why&rdquo; of the discussion, including the underrated line &ldquo;this issue is NOT about…&rdquo;</li>
<li>Context &amp; materials — links to prior discussions and documents</li>
<li>LOCI — who&rsquo;s Lead, Owner, Consulted, Informed</li>
<li>A deadline — when to contribute by, when the issue closes, when a solution is needed</li>
<li>A solution proposal — one suggested answer, or options to choose between</li>
<li>Questions — aimed at specific people to confirm or refute specific assumptions, so the issue isn&rsquo;t a message in a bottle</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">Writing rules that keep things moving
    <div id="writing-rules-that-keep-things-moving" 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="#writing-rules-that-keep-things-moving" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>A written debate can drag just as badly as a spoken one, so they have rules. Be concise — they quote Boileau: &ldquo;What is well conceived is clearly stated.&rdquo; If you can&rsquo;t write it simply, you&rsquo;re not actually sure of it yet. Apply the &ldquo;So what?&rdquo; test to everything you write; if the implication of your comment isn&rsquo;t obvious, spell it out.</p>
<p>For the Owner, the follow-up matters as much as the opening. Keep the discussion pointed at the million-dollar question — the one sticking point that actually matters — rather than letting it dissolve into details. Recap regularly what&rsquo;s been agreed and what&rsquo;s still open. And treat Slack reminders as a last resort, reserved for overdue contributions or genuine urgency.</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>Owners also hide comments that don&rsquo;t move the conversation forward, and everyone is expected to know their way around GitHub&rsquo;s formatting — headings, footnotes, tables, keyboard shortcuts — because in writing, form carries almost as much as substance.</p>

<h2 class="relative group">No consensus, no spectators
    <div id="no-consensus-no-spectators" 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="#no-consensus-no-spectators" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Two rules stop this from turning into decision-by-committee.</p>
<p>First, the Owner decides as what Alan calls an &ldquo;enlightened despot&rdquo;. They investigate ideas, measure risks, question peers — but they don&rsquo;t seek consensus and they don&rsquo;t have to implement everything they&rsquo;re told. Alan is blunt about not being a democracy: every employee is a shareholder, and the company&rsquo;s interest comes before the team&rsquo;s or the individual&rsquo;s. When the Owner is reasonably sure of the right bet, they decide, everyone tries it, and once the impact is visible they review whether it was the right call.</p>
<p>Second, contributor numbers are controlled. Jeff Bezos&rsquo; two-pizza rule applies to async work too: the more people on an issue, the less each one contributes. Past about six contributors, the spectator effect kicks in and participation quality drops. Notifications follow the same philosophy — Alan trusts everyone to have configured their own GitHub notifications (Settings, then tick &ldquo;Web and Mobile&rdquo; under both &ldquo;Participating&rdquo; and &ldquo;Watching&rdquo;), so direct tags in the Questions section are kept to a minimum.</p>

<h2 class="relative group">What I&rsquo;m taking from it
    <div id="what-im-taking-from-it" 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="#what-im-taking-from-it" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>You can never fully explain a meeting to someone who wasn&rsquo;t there, but anyone can read a decision. Alan doesn&rsquo;t claim this is the best or only system — just the one that fits them: fewer interruptions, less spectator effect, and decisions made with a step back and the facts written down. I&rsquo;m not about to move every decision my team makes into GitHub issues, but the template below is going straight into our repo.</p>

<h3 class="relative group">The template, as a GitHub issue template
    <div id="the-template-as-a-github-issue-template" 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="#the-template-as-a-github-issue-template" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Save this as <code>.github/ISSUE_TEMPLATE/decision.md</code> in whichever repository you use as the forum, and GitHub offers it every time someone opens a new issue. The sections are Alan&rsquo;s; the LOCI lines and the label are my additions.</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">Decision</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">Propose a decision and collect input in writing</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;[Decision] &#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">## Scope
</span></span></span><span class="line"><span class="cl"><span class="k">-</span> The goal of this issue is ...
</span></span><span class="line"><span class="cl"><span class="k">-</span> This issue is NOT about ...
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Why I&#39;m opening this 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">## Timeline
</span></span></span><span class="line"><span class="cl"><span class="k">-</span> Contributions by:
</span></span><span class="line"><span class="cl"><span class="k">-</span> Decision by:
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Context and materials
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Proposal
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">## Questions</span></span></code></pre></div></div>

<h2 class="relative group">GitHub Issues or GitHub Projects?
    <div id="github-issues-or-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-or-github-projects" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>If you&rsquo;re thinking about GitHub for project management more broadly, the two pieces do different jobs. Issues hold the discussion and, once closed, the decision. A GitHub Project is a board or table laid over issues from one or more repositories, with your own fields for status, owner or deadline. For a decision forum like Alan&rsquo;s, labels and the issue list are enough. Add a Project when you want every open decision on one screen, sorted by the date it has to be made, and when you start tracking delivery work in the same place, which is where most teams end up using both.</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>We Won the Seoul Tech Impact Hackathon 2023</title>
      <link>https://jared.lynskey.co.nz/en/posts/2024/2024-01-05-hackathon/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/en/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>Our team won the Seoul Tech Impact Hackathon 2023 with a geolocation app for finding street food vendors in Korea. How the weekend went, plus a few tips if it&#39;s your first hackathon.</description>
      <content:encoded><![CDATA[<p>Some news I&rsquo;m still grinning about: our team won the Seoul Tech Impact Hackathon 2023. We built a geolocation app for finding street food vendors in Korea.</p>

<h4 class="relative group">The idea
    <div id="the-idea" 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="#the-idea" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>Street food vendors in Korea don&rsquo;t have addresses. A pojangmacha sets up wherever it sets up, and unless you already know the spot, you won&rsquo;t find it online. Our app puts vendors on the map — literally. That&rsquo;s good for the vendors, and good for anyone hunting down late-night tteokbokki.</p>

<h4 class="relative group">The weekend itself
    <div id="the-weekend-itself" 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="#the-weekend-itself" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>The hackathon was hosted by Lunit Global, who put up the office space. Teams from all sorts of backgrounds, most of us working straight through the night, and organisers who kept everything running smoothly. The kind of event where you look up and it&rsquo;s suddenly 4am.</p>

<h4 class="relative group">The team
    <div id="the-team" 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="#the-team" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>The team was Sharon Levy, Jonothan Sue, me, and Tiaan van der Riel. Everyone brought something different, so splitting the work was painless. The pitch landed with the judges, I think, because the problem doesn&rsquo;t need explaining — say &ldquo;street food vendors are invisible online&rdquo; out loud and the solution suggests itself.</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="The Kiwi Alumni team at work during the Seoul Tech Impact Hackathon 2023"
    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">What&rsquo;s next
    <div id="whats-next" 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="#whats-next" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>We&rsquo;re working on getting the app into the stores. It started as a weekend project, but the problem it solves is real enough that stopping now would feel like a waste.</p>

<h4 class="relative group">If it&rsquo;s your first hackathon
    <div id="if-its-your-first-hackathon" 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="#if-its-your-first-hackathon" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>If you&rsquo;ve never done a hackathon, I&rsquo;d recommend it. You build something fast with people you&rsquo;ve never worked with, find out how you actually handle pressure, and once in a while you walk out with something worth continuing. Worst case, you get a weekend of free snacks and a working prototype nobody asked for.</p>
<p>A few things worth knowing before you go:</p>
<ul>
<li>Pick a problem you can explain in one sentence. If the judges spend the first minute working out what the problem is, they aren&rsquo;t listening to your solution.</li>
<li>Split the roles early, ideally in the first hour: who builds, who designs, who owns the pitch. Working that out at 2am costs far more.</li>
<li>Build the demo path first. Get the one flow you&rsquo;ll show on stage working end to end before you add anything else.</li>
<li>Rehearse the pitch out loud, with the live demo, at least twice. Pitches nearly always run longer than you think.</li>
<li>Sleep a little. Even a couple of hours makes the morning&rsquo;s decisions, and the pitch, noticeably better.</li>
</ul>

<h4 class="relative group">Links:
    <div id="links" 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="#links" aria-label="Anchor">#</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>
