[{"data":1,"prerenderedAt":532},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fit\u002Flifestyle\u002Flinear-async-standup-12-person-team-meeting-free-week":13},{"i18nKey":4,"paths":5},"lifestyle-001-2026-06",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Flifestyle\u002Flinear-async-standup-meeting-free-week-12-person-team","\u002Fen\u002Flifestyle\u002Flinear-async-standup-meeting-free-week","\u002Fes\u002Flifestyle\u002Flinear-async-standup-equipo-12-personas-sin-reuniones","\u002Ffr\u002Flifestyle\u002Flinear-async-standup-equipe-12-personnes-sans-reunions","\u002Fit\u002Flifestyle\u002Flinear-async-standup-team-senza-riunioni","\u002Fru\u002Flifestyle\u002Flinear-async-standup-12-person-team-meeting-free-week","\u002Ftr\u002Flifestyle\u002Flinear-async-standup-12-kisilik-ekipte-toplantisiz-hafta",{"_path":14,"_dir":15,"_draft":16,"_partial":16,"_locale":17,"title":18,"description":19,"publishedAt":20,"modifiedAt":20,"category":15,"i18nKey":4,"tags":21,"readingTime":27,"author":28,"body":29,"_type":526,"_id":527,"_source":528,"_file":529,"_stem":530,"_extension":531},"\u002Fit\u002Flifestyle\u002Flinear-async-standup-12-person-team-meeting-free-week","lifestyle",false,"","Linear + Async Standup: Meeting-Free Week with a 12-Person Team","Cycle management, daily updates, and blocker escalation for async-first team coordination. Reporting replaced by operations.","2026-06-03",[22,23,24,25,26],"async-work","linear","team-coordination","cycle-management","remote-work",8,"Roibase",{"type":30,"children":31,"toc":511},"root",[32,40,47,52,57,62,149,154,161,175,184,189,194,200,213,221,241,246,252,257,262,282,287,293,298,306,311,316,351,356,362,367,390,395,400,406,418,423,452,457,463,468,501,506],{"type":33,"tag":34,"props":35,"children":36},"element","p",{},[37],{"type":38,"value":39},"text","Every synchronous meeting notification interrupts a team member's 23-minute deep work session (UC Irvine research, 2023). In a 12-person team, daily standups consume 40 minutes × 5 days × 12 people = 2,400 minutes (40 hours) per week. Async-first work culture doesn't eliminate this loss—it converts it into measurable, traceable operations. Linear's cycle management and async daily update discipline shifts team coordination from meetings to outputs. This post documents Roibase's proven workflow, refined over 8 years of team leadership.",{"type":33,"tag":41,"props":42,"children":44},"h2",{"id":43},"cycle-discipline-fibonacci-pointing-and-weekly-rhythm",[45],{"type":38,"value":46},"Cycle Discipline: Fibonacci Pointing and Weekly Rhythm",{"type":33,"tag":34,"props":48,"children":49},{},[50],{"type":38,"value":51},"Every cycle in Linear runs exactly one week. Not sprints—cycles. The term \"sprint\" suggests end-of-week urgency; \"cycle\" implies rhythmic repetition. Each Monday morning starts a new cycle; Friday evening publishes the cycle review post. Within each cycle, issues exist in three states: Backlog, In Progress, Done.",{"type":33,"tag":34,"props":53,"children":54},{},[55],{"type":38,"value":56},"We use Fibonacci pointing: 1, 2, 3, 5, 8. One point = under 2 hours of work; 8 points = one full day. Issues larger than 8 points are rejected—decomposition is mandatory. This isn't estimation theater; it's empirical calibration. Linear's \"Cycle Analytics\" panel displays team velocity (Roibase averages ~42 points per week per cycle).",{"type":33,"tag":34,"props":58,"children":59},{},[60],{"type":38,"value":61},"Every cycle opening fills three columns:",{"type":33,"tag":63,"props":64,"children":65},"table",{},[66,90],{"type":33,"tag":67,"props":68,"children":69},"thead",{},[70],{"type":33,"tag":71,"props":72,"children":73},"tr",{},[74,80,85],{"type":33,"tag":75,"props":76,"children":77},"th",{},[78],{"type":38,"value":79},"Column",{"type":33,"tag":75,"props":81,"children":82},{},[83],{"type":38,"value":84},"Content",{"type":33,"tag":75,"props":86,"children":87},{},[88],{"type":38,"value":89},"Owner",{"type":33,"tag":91,"props":92,"children":93},"tbody",{},[94,113,131],{"type":33,"tag":71,"props":95,"children":96},{},[97,103,108],{"type":33,"tag":98,"props":99,"children":100},"td",{},[101],{"type":38,"value":102},"Priority",{"type":33,"tag":98,"props":104,"children":105},{},[106],{"type":38,"value":107},"Customer blockers, revenue-impacting bugs, deadline-driven features",{"type":33,"tag":98,"props":109,"children":110},{},[111],{"type":38,"value":112},"Product Lead",{"type":33,"tag":71,"props":114,"children":115},{},[116,121,126],{"type":33,"tag":98,"props":117,"children":118},{},[119],{"type":38,"value":120},"Next Up",{"type":33,"tag":98,"props":122,"children":123},{},[124],{"type":38,"value":125},"Issues to pull if Priority completes early",{"type":33,"tag":98,"props":127,"children":128},{},[129],{"type":38,"value":130},"Engineering Lead",{"type":33,"tag":71,"props":132,"children":133},{},[134,139,144],{"type":33,"tag":98,"props":135,"children":136},{},[137],{"type":38,"value":138},"Icebox",{"type":33,"tag":98,"props":140,"children":141},{},[142],{"type":38,"value":143},"Work for the next 2 cycles; off-limits this week",{"type":33,"tag":98,"props":145,"children":146},{},[147],{"type":38,"value":148},"Team",{"type":33,"tag":34,"props":150,"children":151},{},[152],{"type":38,"value":153},"The Priority column doesn't change mid-cycle—requests breaking this rule shift to the next cycle. Exception: P0 bugs (production down, payment failure). This discipline prevents \"urgent\" inflation.",{"type":33,"tag":155,"props":156,"children":158},"h3",{"id":157},"async-daily-update-text-first-reporting",[159],{"type":38,"value":160},"Async Daily Update: Text-First Reporting",{"type":33,"tag":34,"props":162,"children":163},{},[164,166,173],{"type":38,"value":165},"The Slack channel ",{"type":33,"tag":167,"props":168,"children":170},"code",{"className":169},[],[171],{"type":38,"value":172},"#daily-updates",{"type":38,"value":174}," runs one post per person. Each team member posts a 3-line update when starting their day:",{"type":33,"tag":176,"props":177,"children":179},"pre",{"code":178},"Yesterday: Implemented Stripe webhook retry logic (LIN-482, 5pt) — merged\nToday: Fixing flaky Cypress test on checkout flow (LIN-490, 3pt)\nBlocker: Need design approval on new onboarding modal (CC @DesignLead)\n",[180],{"type":33,"tag":167,"props":181,"children":182},{"__ignoreMap":17},[183],{"type":38,"value":178},{"type":33,"tag":34,"props":185,"children":186},{},[187],{"type":38,"value":188},"Format is fixed—free-form prose isn't accepted. Linear issue ID required (LIN-xxx), point estimate required. Don't include a \"Blocker\" line if unblocked—no need to signal the absence of problems.",{"type":33,"tag":34,"props":190,"children":191},{},[192],{"type":38,"value":193},"Daily updates post between 09:00–10:30 local time. Post late, and the automation bot sends a reminder (Linear webhook + Slack automation). This discipline answers \"who's working on what\" before anyone asks.",{"type":33,"tag":41,"props":195,"children":197},{"id":196},"blocker-escalation-the-4-hour-rule",[198],{"type":38,"value":199},"Blocker Escalation: The 4-Hour Rule",{"type":33,"tag":34,"props":201,"children":202},{},[203,205,211],{"type":38,"value":204},"When a team member spends more than 4 hours stuck on a single issue, manual intervention triggers. The Linear issue gets a ",{"type":33,"tag":167,"props":206,"children":208},{"className":207},[],[209],{"type":38,"value":210},"blocked",{"type":38,"value":212}," label; Slack notifies the relevant owner:",{"type":33,"tag":176,"props":214,"children":216},{"code":215},"LIN-490 blocked — Can't seed DB in Cypress test environment.\n@DevOpsLead: Is the CI pipeline seed script failing?\n",[217],{"type":33,"tag":167,"props":218,"children":219},{"__ignoreMap":17},[220],{"type":38,"value":215},{"type":33,"tag":34,"props":222,"children":223},{},[224,226,232,234,239],{"type":38,"value":225},"This message goes to ",{"type":33,"tag":167,"props":227,"children":229},{"className":228},[],[230],{"type":38,"value":231},"#blockers",{"type":38,"value":233},", not ",{"type":33,"tag":167,"props":235,"children":237},{"className":236},[],[238],{"type":38,"value":172},{"type":38,"value":240},". A thread opens under the message; resolution discussion happens there. Once solved, a Linear issue comment documents: \"Blocker resolved—seed script couldn't access .env file; added to Docker Compose.\"",{"type":33,"tag":34,"props":242,"children":243},{},[244],{"type":38,"value":245},"The 4-hour rule breaks \"solo hero\" culture. Roibase's blocker escalation averages 2.3 issues per cycle—fewer suggests low-risk work selection, more indicates scope complexity needs adjustment.",{"type":33,"tag":155,"props":247,"children":249},{"id":248},"code-review-async-wait-time",[250],{"type":38,"value":251},"Code Review Async Wait Time",{"type":33,"tag":34,"props":253,"children":254},{},[255],{"type":38,"value":256},"When a pull request opens, GitHub integration auto-links it to the Linear issue. The author doesn't wait for review—they pull the next issue from the Priority column. Review SLA: at least one person must comment within 8 hours.",{"type":33,"tag":34,"props":258,"children":259},{},[260],{"type":38,"value":261},"Review rules:",{"type":33,"tag":263,"props":264,"children":265},"ul",{},[266,272,277],{"type":33,"tag":267,"props":268,"children":269},"li",{},[270],{"type":38,"value":271},"PRs over 400 lines require decomposition (review quality drops)",{"type":33,"tag":267,"props":273,"children":274},{},[275],{"type":38,"value":276},"Test coverage below 80% auto-rejects (CI check enforces this)",{"type":33,"tag":267,"props":278,"children":279},{},[280],{"type":38,"value":281},"Approval requires two sign-offs (lead + peer)",{"type":33,"tag":34,"props":283,"children":284},{},[285],{"type":38,"value":286},"During review, synchronous discussion is banned. Reviewer comments, author responds—threads stay open until resolved. No \"let's sync on Zoom?\" escape hatches.",{"type":33,"tag":41,"props":288,"children":290},{"id":289},"friday-cycle-review-numerical-retrospective",[291],{"type":38,"value":292},"Friday Cycle Review: Numerical Retrospective",{"type":33,"tag":34,"props":294,"children":295},{},[296],{"type":38,"value":297},"Every Friday at 16:00, Linear's \"Cycle Completion Report\" automation posts to Slack:",{"type":33,"tag":176,"props":299,"children":301},{"code":300},"Cycle 2026-W22 Summary:\nCompleted: 38 points (target: 42)\nCarryover: 2 issues (LIN-495, LIN-501)\nBlocker count: 3\nAverage cycle time: 2.1 days\n",[302],{"type":33,"tag":167,"props":303,"children":304},{"__ignoreMap":17},[305],{"type":38,"value":300},{"type":33,"tag":34,"props":307,"children":308},{},[309],{"type":38,"value":310},"If carryover exceeds 2, the team adjusts Priority sequencing for next cycle. More than 3 consecutive cycles with high carryover signals a planning error—reduce cycle capacity.",{"type":33,"tag":34,"props":312,"children":313},{},[314],{"type":38,"value":315},"The cycle review post lives in Notion. It's not a meeting—it's a text document. Structure:",{"type":33,"tag":317,"props":318,"children":319},"ol",{},[320,331,341],{"type":33,"tag":267,"props":321,"children":322},{},[323,329],{"type":33,"tag":324,"props":325,"children":326},"strong",{},[327],{"type":38,"value":328},"Completed work:",{"type":38,"value":330}," One-sentence summary per issue",{"type":33,"tag":267,"props":332,"children":333},{},[334,339],{"type":33,"tag":324,"props":335,"children":336},{},[337],{"type":38,"value":338},"Learnings:",{"type":38,"value":340}," Technical debt, tooling improvements, process friction",{"type":33,"tag":267,"props":342,"children":343},{},[344,349],{"type":33,"tag":324,"props":345,"children":346},{},[347],{"type":38,"value":348},"Next cycle focus:",{"type":38,"value":350}," Which areas demand emphasis",{"type":33,"tag":34,"props":352,"children":353},{},[354],{"type":38,"value":355},"After posting, team members comment—\"LIN-482's Stripe retry needs production validation\" becomes next cycle input.",{"type":33,"tag":155,"props":357,"children":359},{"id":358},"carryover-pattern-and-scope-discipline",[360],{"type":38,"value":361},"Carryover Pattern and Scope Discipline",{"type":33,"tag":34,"props":363,"children":364},{},[365],{"type":38,"value":366},"Carryover issues stem from two causes:",{"type":33,"tag":317,"props":368,"children":369},{},[370,380],{"type":33,"tag":267,"props":371,"children":372},{},[373,378],{"type":33,"tag":324,"props":374,"children":375},{},[376],{"type":38,"value":377},"Underestimate:",{"type":38,"value":379}," 5-point estimate becomes 8 points of actual work",{"type":33,"tag":267,"props":381,"children":382},{},[383,388],{"type":33,"tag":324,"props":384,"children":385},{},[386],{"type":38,"value":387},"External blocker:",{"type":38,"value":389}," Design approval delay, API dependency",{"type":33,"tag":34,"props":391,"children":392},{},[393],{"type":38,"value":394},"In case one, Linear updates the issue's \"Actual Effort\" field (retrospectively). This data calibrates future estimates. In case two, the issue moves to Priority column—once the blocker clears, it closes fast.",{"type":33,"tag":34,"props":396,"children":397},{},[398],{"type":38,"value":399},"Three consecutive cycles of carryover signal low capacity. Roibase runs a \"cooldown cycle\": no new features, only technical debt (test flakes, deprecated dependencies, documentation gaps).",{"type":33,"tag":41,"props":401,"children":403},{"id":402},"meeting-free-week-rare-synchronous-exceptions",[404],{"type":38,"value":405},"Meeting-Free Week: Rare Synchronous Exceptions",{"type":33,"tag":34,"props":407,"children":408},{},[409,411,416],{"type":38,"value":410},"Async-first doesn't mean zero meetings—it means minimizing mandatory ones. Roibase runs one sync per week: ",{"type":33,"tag":324,"props":412,"children":413},{},[414],{"type":38,"value":415},"Bi-weekly Planning",{"type":38,"value":417}," (every 2 weeks, 60 minutes). The team discusses a 4-week roadmap via Linear's \"Projects\" view.",{"type":33,"tag":34,"props":419,"children":420},{},[421],{"type":38,"value":422},"Situations requiring synchronous time:",{"type":33,"tag":263,"props":424,"children":425},{},[426,431,447],{"type":33,"tag":267,"props":427,"children":428},{},[429],{"type":38,"value":430},"Architecture decisions (monolith to microservices migration)",{"type":33,"tag":267,"props":432,"children":433},{},[434,436,445],{"type":38,"value":435},"Customer alignment (cross-functional work like ",{"type":33,"tag":437,"props":438,"children":442},"a",{"href":439,"rel":440},"https:\u002F\u002Fwww.roibase.com.tr\u002Fit\u002Fbranding",[441],"nofollow",[443],{"type":38,"value":444},"Branding & Brand Identity",{"type":38,"value":446}," initiatives)",{"type":33,"tag":267,"props":448,"children":449},{},[450],{"type":38,"value":451},"Conflict resolution (code review without consensus)",{"type":33,"tag":34,"props":453,"children":454},{},[455],{"type":38,"value":456},"These arise ~0.4 times per cycle—roughly once every 2.5 cycles. Meetings cap at 30 minutes; agendas post to Notion beforehand; notes conclude with decisions.",{"type":33,"tag":41,"props":458,"children":460},{"id":459},"operationalizing-async-discipline",[461],{"type":38,"value":462},"Operationalizing Async Discipline",{"type":33,"tag":34,"props":464,"children":465},{},[466],{"type":38,"value":467},"Async culture isn't \"flexible\"—it demands rigor. Roibase's three operating principles:",{"type":33,"tag":317,"props":469,"children":470},{},[471,481,491],{"type":33,"tag":267,"props":472,"children":473},{},[474,479],{"type":33,"tag":324,"props":475,"children":476},{},[477],{"type":38,"value":478},"Text-first communication:",{"type":38,"value":480}," No Slack voice messages, no Loom videos (exception: onboarding)",{"type":33,"tag":267,"props":482,"children":483},{},[484,489],{"type":33,"tag":324,"props":485,"children":486},{},[487],{"type":38,"value":488},"Response SLAs:",{"type":38,"value":490}," Blocker replies within 2 hours; normal messages within 8 hours",{"type":33,"tag":267,"props":492,"children":493},{},[494,499],{"type":33,"tag":324,"props":495,"children":496},{},[497],{"type":38,"value":498},"Time zone respect:",{"type":38,"value":500}," If posting after 19:00 local time, use Slack scheduled send (no notifications)",{"type":33,"tag":34,"props":502,"children":503},{},[504],{"type":38,"value":505},"This works because each team member preserves deep work blocks. Linear's \"Focus Time\" carves a 4-hour uninterrupted calendar block per person—no notifications, Slack closed, only code or design iteration.",{"type":33,"tag":34,"props":507,"children":508},{},[509],{"type":38,"value":510},"Async-first coordination isn't about fewer meetings; it's about decision quality through rhythm. Cycle discipline + daily updates + blocker escalation = the answer to \"what's everyone doing?\" arrives before the question. This system reduces 12-person meeting time from 48 hours weekly to 1 hour. The remaining 47 hours? Deep work.",{"title":17,"searchDepth":512,"depth":512,"links":513},3,[514,518,521,524,525],{"id":43,"depth":515,"text":46,"children":516},2,[517],{"id":157,"depth":512,"text":160},{"id":196,"depth":515,"text":199,"children":519},[520],{"id":248,"depth":512,"text":251},{"id":289,"depth":515,"text":292,"children":522},[523],{"id":358,"depth":512,"text":361},{"id":402,"depth":515,"text":405},{"id":459,"depth":515,"text":462},"markdown","content:it:lifestyle:linear-async-standup-12-person-team-meeting-free-week.md","content","it\u002Flifestyle\u002Flinear-async-standup-12-person-team-meeting-free-week.md","it\u002Flifestyle\u002Flinear-async-standup-12-person-team-meeting-free-week","md",1782079500614]