<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Linear Blog</title>
        <link>https://linear.app/now</link>
        <description>Updates from the Linear team.</description>
        <lastBuildDate>Tue, 14 Apr 2026 00:07:53 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en-US</language>
        <copyright>All rights reserved 2026, Linear</copyright>
        <item>
            <title><![CDATA[How we use Linear Agent at Linear]]></title>
            <link>https://linear.app/now/how-we-use-linear-agent-at-linear</link>
            <guid>https://linear.app/now/how-we-use-linear-agent-at-linear</guid>
            <pubDate>Fri, 10 Apr 2026 12:17:56 GMT</pubDate>
            <description><![CDATA[The workflows that proved most useful across CX, Product, and Engineering, and what they tell us about working with agents.]]></description>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/be61e760ff9913e8be4ac3b07cfb153dc2e64569-3904x2158.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/591b2f6f77d262c9b6d914dede361554b3e3a38c-3904x2220.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/9734ec1828019647b0dc1bee094f7cb07abbfa7b-3904x1178.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/ff720aa27f11fb7b8253ec8be6aa2eb9279319ab-3904x2220.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/6690d4e42578f85593a5cb705a5dc03042fe32c0-3904x1516.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/e71ccb4d99c30ddbf387d5ad17cedea87a9989fd-3904x2248.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/d6e0a8745158615a1ae1b9db1b27e2a71bbadfba-3904x1782.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/741848cfb4ad3a691ba6e893da449a5aa2a00f00-3904x1784.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/615574c3f5efbf1fbdd23a53d23eba578950060a-3904x2032.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/ee171c7bfd359419392dd10f9e1a41970e65b4ea-3904x1824.png?q=95&amp;auto=format&amp;dpr=2"/><p>Before we launched Linear agent, our teams were already using it across Slack, Linear, and our codebase. It’s become a core part of how we build. Here are three workflows that have proven most effective:</p><ul><li>A customer email turns into a shipped feature</li><li>A Slack thread becomes a pull request</li><li>A PM files an issue, and ships the fix</li></ul><p><em>As you’d expect, some of what we use internally has not been released yet, and we’ve called that out where relevant.</em></p><h3>From customer email to shipped feature</h3><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/be61e760ff9913e8be4ac3b07cfb153dc2e64569-3904x2158.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2158" alt="Dark workflow diagram showing a support process from Intercom to Triage Intelligence, then to Product and Engineering, with Product linked to a Linear Agent and Engineering linked to a Coding Agent."/></figure><h4>Stage 1: Pull the context into Linear</h4><p>Customer feedback submitted by email, or in-app within Linear, accrues to an Intercom inbox managed by <a href="https://linear.app/now/cx-in-linear">Customer Experience</a>. That creates a large volume of high-signal feedback which needs to find its way through the org to the right team. Through <a href="https://linear.app/integrations#customer-experience">Linear agent</a>, CX turns emails into scoped issues directly from Intercom, without ever needing to leave the inbox.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/591b2f6f77d262c9b6d914dede361554b3e3a38c-3904x2220.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2220" alt="Dark interface mockup of an Intercom ticket sidebar with a Linear integration, showing a prompt field and a “Create with Linear Agent” button."/></figure><p>The agent picks up the full context, including any back-and-forth with the customer, metadata, and attachments. While you can add extra details in Intercom to help define the issue, Alexandra Lapinsky Wilson, who leads Product Operations and CX, says she rarely finds it necessary. The agent typically gets it right.</p><h3>Stage 2: Route it to the right team automatically</h3><p>Once the agent has scoped the context into an actionable issue in Linear, the CX team doesn’t have to hesitate over who to assign it to because <a href="https://linear.app/docs/triage-intelligence">Triage Intelligence</a> handles that step. It sends feature requests to the product management team’s triage queue, and in doing so, flags duplicates, suggests the right labels, and links relevant customer context, including their <a href="https://linear.app/integrations/datadog">Datadog</a> and <a href="https://linear.app/integrations/sentry">Sentry</a>.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/9734ec1828019647b0dc1bee094f7cb07abbfa7b-3904x1178.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1178" alt="Dark UI card labeled “Triage Intelligence” showing suggested issue tags, a possible duplicate, and a related engineering issue"/></figure><h4>Stage 3: Make sense of overlapping feature requests</h4><p>Often projects can fill up with feature requests related to the same part of the product without <em>quite</em> asking for the same thing. Untangling this is time consuming and easy to put off, which can turn it into a bottleneck.</p><p>When Sid Bhargava, a PM, runs into a catch-all project like this, he opens a chat with Linear agent and asks it to identify the main themes across the requests; an example of a repeatable workflow that Sid could save as a <a href="https://linear.app/changelog/2026-03-24-introducing-linear-agent#skills-and-automations">Skill</a>.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/ff720aa27f11fb7b8253ec8be6aa2eb9279319ab-3904x2220.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2220" alt="Dark UI mockup of an AI chat panel summarizing discussion themes inside Linear."/></figure><p>After reviewing the output, he instructs the agent to reorganize the issues around the themes, shaping the work into a clearer starting point for Engineering. Sid also might use the agent to add usage scenario context to an existing PRD, draft implementation issues based on a spec, or write a PRD from scratch for a new project.</p><h4>Stage 4: Code alongside the agents</h4><p>Once an engineer picks up the issue, how they work with the agent depends on the nature of the task at hand. For more complex requests, Mingjie Jiang, one of our product engineers, starts by chatting with Linear agent about the history of decisions around that part of the product: Why did we build the feature <em>this</em> way? When was it most recently touched? Which engineers should I talk to if I have further questions? The agent uses Code Intelligence to provide answers grounded in its knowledge of our codebase. <em>(We’re currently testing Code Intelligence and custom MCP servers internally, with plans to launch soon.)</em></p><p>Mingjie then usually delegates the issue to a coding agent directly within Linear. While the issue reflects the delegation, it <a href="https://linear.app/developers/aig#an-agent-cannot-be-held-accountable">remains assigned to him</a>. The agent takes a first pass to save Mingjie the friction of starting from scratch, then, if necessary, he continues the work locally. He sees even AI’s mistakes as useful because it shows him potential failure modes as he works through the problem.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/6690d4e42578f85593a5cb705a5dc03042fe32c0-3904x1516.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1516" alt="Dark UI panel showing issue properties: status “In Progress,” assigned to “yann,” with a linked Coding Agent beneath"/></figure><p>At Linear, a coding agent takes a crack at reviewing every PR (for the past couple of months, we’ve been leaning on Codex for this), and then a human engineer makes the final approval. When the pull request is merged, our <a href="https://linear.app/integrations/github">Github integration</a> marks the related issue in Linear as ‘Done’.</p><h4>Stage 5: Close the loop with a happy customer</h4><p>When an issue is marked ‘Done,’ every related feature request reopens in Intercom with a note for the CX team to know that the customer’s request is fulfilled. The team then follows up with each one, which Alexandra calls a joy because customers are delighted that their request made it into the product <em>and </em>that Linear took the time to tell them about it.</p><h3>How a complaint in Slack ends up as a pull request</h3><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/e71ccb4d99c30ddbf387d5ad17cedea87a9989fd-3904x2248.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2248" alt="Dark workflow diagram showing Slack team discussion feeding into a Linear Agent and Triage system, with Code Intelligence connected below and arrows indicating a feedback loop between Slack and Linear."/></figure><h4>Stage 1: Turn a Slack thread into a scoped issue</h4><p>In shared Slack channels with our high-priority customers, ambiguous user feedback used to mean a scramble for context. Now, Simone Jacobs, who works in Customer Support, starts with <a href="https://linear.app/changelog/2025-10-23-linear-agent-for-slack">Linear’s Slack agent</a>.</p><p>Simone questions the agent in an internal product channel, with the intention of drawing Engineering and Product into a discussion about its response. She sees the agent’s role as providing context about the current state of the product, allowing the team to focus on the roadmap ahead.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/d6e0a8745158615a1ae1b9db1b27e2a71bbadfba-3904x1782.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1782" alt="Dark Slack thread screenshot showing a teammate asking about private sub-team issues in a parent team’s cycle, followed by a Linear agent reply explaining they are not included. "/></figure><p>Product engineers like Mingjie keep an eye on these discussions, often using the agent to create an issue routed to the engineering triage queue directly from Slack. And if the discussion continues, he tags Linear again to update the issue instead of reading through dozens of new messages.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/741848cfb4ad3a691ba6e893da449a5aa2a00f00-3904x1784.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1784" alt="Dark Slack thread showing a user asking Linear to create triage issues from messages, followed by the app confirming that two issues were created."/></figure><h4>Stage 2: Code alongside the agents</h4><p>When engineer Matthijs Wolting is assigned a customer-specific issue like this, he uses Linear agent, along with Code Intelligence and custom MCP servers, to investigate. This saves him from the tedium of looking up the right customer ID, logs, and metadata, and correlating information fragmented across various tools.</p><p>Matthijs gets the best results from coding agents by breaking the work into small, targeted steps, which keeps the agent on track and creates a much narrower path to success.</p><h4>Stage 3: Close the loop with a happy customer</h4><p>Once Matthijs has resolved the bug, he marks the issue as ‘Done’ in Linear. This automatically sends a notification to the Slack thread where the issue originated, which is Simone’s signal to follow up with the customer.</p><h3>When the person who noticed it can also ship it</h3><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/615574c3f5efbf1fbdd23a53d23eba578950060a-3904x2032.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2032" alt="Dark workflow diagram showing Product creating a new issue that passes to a Linear Agent, then to a pull request routed to Engineering."/></figure><h4>Stage 1: Find a problem (and fix it)</h4><p>Product managers like Sid are restless beings. He sometimes fiddles with features in Linear without a precise objective, just to re-experience them the way a new user would. Recently, he noticed there was no way to filter for issues that had been created from a specific external source, a gap that made it harder to track and triage that work</p><p>He used Linear agent to create an issue to add that filter <em>and</em> take a first pass at actually adding it. The agent opened a pull request, which was reviewed by a human engineer within the hour (thanks, Paco Coursey), and the change was live.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/ee171c7bfd359419392dd10f9e1a41970e65b4ea-3904x1824.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1824" alt="Dark activity feed showing Linear posting a summary of code changes and a draft pull request on an issue timeline."/></figure><h4>…and there’s no Stage 2</h4><p>The same prompt that Sid would’ve once used to report an issue can now be used to solve it. Deciding when to work this way, he says, is still a judgment call. UI polish like copy edits is an obvious candidate, but what made this especially interesting was that it was a functional, albeit small, change in the product.</p><h3>How you can get the most out of Linear</h3><p>We’ve noticed a few recurring patterns in the way teams at Linear use the agent. The most effective workflows seem to share the same principles, and we’re keeping a running list of them, with an eye to consolidate in the near future.</p><h4>The best workflows keep the agent close to the source</h4><p>Teams get the most value when they use it inside the systems where work is already happening, like Intercom, Slack, and Linear.</p><h4>Autonomy works best when it is introduced gradually</h4><p>Teams start by asking the agent for suggestions, observe its performance, and add guidance, only putting it on autopilot once it’s proven reliable. Engineers too, get better results by breaking work into small, focused steps instead of delegating a broad task.</p><h4>The agent is most useful at points of friction</h4><p>People use it where work would otherwise stall, whether that means making sense of overlapping requests, debugging a gnarly customer-specific issue, or clarifying ambiguous feedback.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Post mortem on Linear security incident on March 24th, 2026]]></title>
            <link>https://linear.app/now/linear-incident-on-mar-24th-2026</link>
            <guid>https://linear.app/now/linear-incident-on-mar-24th-2026</guid>
            <pubDate>Mon, 06 Apr 2026 15:35:15 GMT</pubDate>
            <description><![CDATA[A code change temporarily weakened team-level permissions within some workspaces from 12:07 to 1:10 UTC (about one hour) due to a bug that caused a permission filter to be skipped.]]></description>
            <content:encoded><![CDATA[<p>On Tuesday March 24, a code change we deployed caused data from private teams to be accessible to other members within the same workspace. During a window of approximately one hour, 12:07am through 1:10am UTC, workspace members, including guest users, may have had access to data outside their normal team permissions. The issue was identified, code change reverted, and affected client sessions cleared within hours of detection.</p><p>We notified the owners/admins of affected workspaces by email on Thursday, March 26.</p><p>We’re sorry this happened. Private teams and guest roles exist so that sensitive work stays visible only to authorized members, and we failed to uphold that boundary. </p><p>Below is a timeline of the incident, more detail around its cause, and the steps we’ve taken and intend to take.</p><h3>Incident timeline</h3><p><em>All times are in Coordinated Universal Time (UTC)</em></p><p><strong>March 24</strong></p><ul><li>00:07: Code change deployed to production.</li><li>01:10: Initial subset of exposure identified, code change reverted, and rollback deployed.</li><li>01:30: Server side cache reset and database version incremented, forcing client cache reset.</li><li>01:40: Customer report of notification email with excessive content.</li><li>01:45: Incident channel opened.</li><li>03:13: Mobile clients active during the window logged out, forcing cache reset.</li><li>03:23: Web and desktop clients forced to clear cache with reload.</li><li>04:02: <a href="https://linearstatus.com/incidents/01KMF04EBVAP7BKFWBX0QSGYW8">Status page incident</a> published.</li><li>05:04: Auto-generated Pulse feed posts created during the window deleted as a precaution.</li></ul><p><strong>March 25</strong></p><p><em>Data gathering and analysis efforts to understand per-workspace exposure continued.</em></p><ul><li>23:45: Email notification sent to all affected workspace contacts.</li><li>23:47: Status page incident marked as resolved.</li></ul><p><strong>March 27</strong></p><p><em>Analysis efforts to understand per-workspace exposure continued.</em></p><ul><li>21:30: Began sending per-workspace exposure summaries to customers who requested additional detail.</li></ul><h3>What happened</h3><p>Linear’s access control layer uses an internal “sync group” mechanism to determine which data each workspace member can access. When a query is executed—whether via the web client, mobile app, or API—sync group resolvers add permission filters to ensure users only see data from teams they belong to.</p><p>A performance optimization attempted to skip sync group resolvers that could never match a given user’s permissions. The optimization was gated to run only for a single internal workspace in production, with the intent to validate before broader rollout. However, the code that disabled the optimization for all other workspaces contained a variable shadowing bug: instead of falling back to the original unfiltered resolvers, it omitted all user specific resolvers.</p><p>This caused the downstream permission check to be skipped entirely; rather than raising an error, queries silently returned results without team-level filtering.</p><p>The change was tested and peer-reviewed. Our existing test coverage validated that the optimization worked correctly when active, but did not cover the codepath where it was disabled for non-target workspaces. This is the gap that allowed the regression to reach production.</p><p>This change was written and reviewed by engineers without AI assistance. While we use AI extensively in our development workflow, the root cause here was a variable shadowing bug in a code path that was peer-reviewed and tested. The gap was in test coverage, not in the authoring process.</p><h3>What was affected</h3><p>No data was exposed to anyone outside each workspace. No credentials, API keys, or authentication tokens were exposed.<br/><br/>During the window, data from private teams may have been exposed to other workspace members, including:</p><ul><li>Issues, comments, and attachments</li><li>Projects, documents, and related entities</li></ul><p>Private teams did not appear in the Linear web or desktop app interface directly.</p><p>The exposure was primarily through:</p><p><strong>Notification emails</strong>: Digest emails sent to workspace members during the window may have contained inflated unread counts and details of activity from private teams. The notification system, operating under the broken permissions, generated notifications spanning team boundaries. In some workspaces, a single member received a digest containing notifications for the entire workspace.</p><p><strong>Web and desktop client data sync</strong>: Approximately 7,000 full client bootstraps occurred during the window. Users who synced may have temporarily had data from private teams in their local client database, though this data was not surfaced in the app interface. All clients were force-reloaded during remediation to clear cached data.</p><p><strong>Mobile app</strong>: Mobile sessions active during the window may have had access to data from private teams via in-app functionality. All mobile sessions active during the window were logged out. Pulse feed content that may have contained cross-boundary data was deleted.</p><p><strong>API and third-party integrations</strong>: OAuth apps and API keys made requests during the window that may have received responses containing data from private teams, depending on the scope of each integration’s queries. Integrations that query specific issues or teams they already have access to would not have been affected, while those making broader queries may have received data beyond their normal permissions. API access was restored to normal permissions when the code change was reverted.</p><p><strong>Background tasks</strong>: Several server-side tasks that operate with user context were affected. The notification pruning task incorrectly archived notifications at the workspace level instead of per-user, and the feed summary generator produced posts with cross-boundary data. Incorrectly archived notifications were restored, and affected feed posts were deleted.</p><p>Our post-incident audit of sensitive mutations—team membership changes, role changes, and workspace invitations—across all affected workspaces found no evidence of malicious abuse.</p><h3>Our response</h3><p>Following identification of the issue, we completed an initial set of remediation activities:</p><ul><li>Reverted the code change within one hour of deployment</li><li>Force-reloaded all desktop and web clients to clear cached data</li><li>Logged out all mobile sessions active during the window</li><li>Conducted an audit of access and modification logs for affected workspaces</li></ul><p>We notified affected workspace contacts within 48 hours of the incident. For customers who requested additional detail, we provided per-workspace exposure summaries covering activity associated with each exposure vector during the window.</p><h3>Next steps and improvements</h3><p>This incident revealed gaps in how we validate and deploy changes to our access control layer. We’ve already made the following changes:</p><ul><li>Expanded integration test coverage that validates permission boundaries across deployment environments, team types, user roles, guest access, and authentication methods.</li><li>Implemented limits to cap the number of notification items rendered in a single digest email.</li></ul><p>Additional followup tasks we will prioritize are:</p><ul><li>Tighten enforcement of pre-deployment security review, by human and agent, for any changes to authorization-related code paths.</li><li>Improve operational monitoring for anomalous authorization layer behavior and permission boundary violations.</li><li>Extend internal logging system to provide a higher level of visibility into workspace related events.</li><li>Allow workspace admins / owners to configure specific security contacts for future notifications.</li><li>Document incident data collection process to enable faster analysis in future incidents.</li></ul><p>We take the trust our customers place in us seriously, and we’re committed to the actions above and continued transparency in our incident response.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A calmer interface for a product in motion]]></title>
            <link>https://linear.app/now/behind-the-latest-design-refresh</link>
            <guid>https://linear.app/now/behind-the-latest-design-refresh</guid>
            <pubDate>Thu, 12 Mar 2026 14:18:00 GMT</pubDate>
            <description><![CDATA[The thinking, trade-offs, and tools behind our design refresh]]></description>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/b6d6be14c96978b10553cfb9205be1065087e793-3904x2720.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/51c8d03e31853bae9491d8ac5f05bdf1d7921236-3904x2160.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/67561baa677fbc429d94edd080e95aecabb6bae2-3904x2720.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/dc2fb694f3a1a1b6fe85acc17260705a8d674be6-3924x2936.png?q=95&amp;auto=format&amp;dpr=2"/><p>Software rarely gets worse all at once. More often, it contorts out of shape one useful feature at a time: a new control here, another state there, an exception for one workflow followed by yet another. Even when each decision makes sense in isolation, over time, the product begins to feel crowded, inconsistent, and hard to use.</p><p>A big part of building good software is carefully pruning the product’s edges, returning it to what is helpful and intuitive to users. Since the last <a href="https://linear.app/now/a-design-reset">major redesign</a> in 2024, Linear has evolved considerably, and that growth created opportunities to make the interface more consistent—for example, the layout of the header bars, where actions like sharing a page, copying a link, and opening a PR no longer appeared in predictable places.</p><p>We believe that the experience of using the product should feel familiar and fluid; and that spirit guided the improvements we’re introducing to Linear’s visual interface today.</p><h3>What changed in the interface</h3><p>Linear is designed to surface exactly what you need, when you need it. The challenge was preserving that rich density of information without letting the interface feel overwhelming. To that end, the refresh was guided by a couple of design principles.</p><h4>Don’t compete for attention you haven’t earned</h4><p>In a product as information-dense as Linear, not every element of the interface should carry equal visual weight. While the parts central to the user’s task should stay in focus, ones that support orientation and navigation should recede.</p><p>The navigation sidebar used to appear bright enough that it remained visually prominent even after a user had reached their destination. In the updated interface, it’s a few notches dimmer, allowing the main content area—where users work—to take precedence.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/b6d6be14c96978b10553cfb9205be1065087e793-3904x2720.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2720" alt="Side-by-side comparison of a dark app sidebar before and after a visual refresh, with notes calling out smaller icons, muted inactive text, and more vertical padding"/></figure><p></p><p>We treated the tabs at the top of the desktop app similarly, making them more compact rather than spanning the full width of the screen, with rounded corners and smaller icon and text sizing.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/51c8d03e31853bae9491d8ac5f05bdf1d7921236-3904x2160.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2160" alt="Comparison of two dark interface tab bars. The updated version uses a more compact layout overall, with smaller icon-only pills for the first items."/><figcaption>The new tab bar (below) has a more compact layout overall, including smaller icon-only tabs</figcaption></figure><p></p><p>We applied the same thinking to icons. Linear relies on them to make projects, issues, initiatives, and statuses recognizable at a glance, but in some views their presence had grown excessive. The refresh reduces icon usage, scales their sizes down, and removes unnecessary visual treatments like colored team icon backgrounds.</p><h4>Structure should be felt not seen</h4><p>Borders and separators help clarify the relationship between elements in the interface. While these dividing lines are intended to help users orient themselves, they had quietly proliferated across the platform, sometimes appearing without clear reason. By rounding out their edges and softening the contrast, the polished interface gives users structure on the page without cluttering their view.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/67561baa677fbc429d94edd080e95aecabb6bae2-3904x2720.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2720" alt="Side-by-side comparison of a dark interface showing softer borders and subtler visual separation in the updated design."/><figcaption>The new borders (left) reduce visual noise with fewer separators</figcaption></figure><h3>How we approached the refresh</h3><p>A refresh of this scope has an obvious organizational challenge baked into it. The design system and component library were both changing at the same time that other teams were actively building features on top of them. When the foundation shifts beneath you, even slightly, the natural instinct is to pause and wait for solid ground. That hesitation compounds quickly, so we had to find a way to move fast without creating uncertainty for the rest of the team.</p><h4>The tools that helped us move faster</h4><p>Moving this quickly was made possible by a few bespoke internal tools we built along the way—and by leaning on coding agents where they were most useful.</p><p><strong>A handy dev tool bar</strong> — The dev toolbar exists directly inside the app and allows us to easily toggle feature flags on and off. When something didn’t look right in the refreshed UI, it took us just one click to compare it with the previous version. That made it easier to determine whether the refresh had broken something or whether it had behaved that way before. Having the updates live behind feature flags also meant that instead of developing the redesign in isolation and shipping all the changes at once, we could integrate incremental changes to the platform.</p><p></p><video src="https://webassets.linear.app/files/ornj730p/production/a8da43a8ecf9e2265c24ab1dc5260d252514c997.mp4" width="3456" height="2234"></video><p><strong><br/>An integrated color picker </strong>— Linear already allows users to create custom themes by selecting base UI and accent colors and adjusting contrast. While that capability remains, the refresh changed the default ‘light’ and ‘dark’ modes that ship with the product. The old palette was a cool, blue-ish hue, and the aim was to inch toward a warmer gray that still feels crisp, but less saturated. Go too warm, though, and the interface risks looking muddy, so getting it right involved a fair bit of iteration.</p><p>But experimenting with these changes was painfully slow: mocking it up in Figma, implementing the update in a PR, spinning up a preview build, reviewing it, and repeating the process. To speed things up, we used Claude Code to build a color tool inside Linear’s dev toolbar. The tool allows us to do everything the user-facing theme builder can do, while also exposing controls for tweaking the hue, chroma, and lightness of individual design tokens. Anyone at Linear could experiment with different combinations and share their preferred “recipe” with us.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/dc2fb694f3a1a1b6fe85acc17260705a8d674be6-3924x2936.png?q=95&amp;auto=format&amp;dpr=2" width="3924" height="2936" alt="Internal theme editor interface used to adjust color values, contrast, and design tokens for the UI palette."/></figure><p>Once we landed on a palette we liked, we copied the token values as JSON and imported them directly into Figma using a plugin built by one of our designers, Yann-Edern Gillet. This created an alignment between what we were experimenting with in the interface and what lived in the design system.</p><p><strong>A team of coding agents</strong> — As a team of two that had started working on the codebase just two months ago, we used coding agents to bring us up to speed. The Linear agent, Cursor, Codex, and Claude Code helped us answer practical questions that would’ve otherwise been a time suck: where a component was defined, the places it was used across the product, and which designers and engineers had historically worked on this area.</p><p>We also used coding agents to move faster in execution. They helped us build internal tools like the color picker in a couple of hours, and made it more efficient to prototype larger ideas. When we were choosing between two directions, we could explore both quickly, and then invest more time in implementing the right one well.</p><h3>Approximating the future, by design</h3><p>This refresh was aimed at improving the human experience of the product: making the interface better for the people using it every day, with an eye toward how it might evolve further over time. While Linear was originally designed to help humans coordinate with one another, it has since matured to support other kinds of interactions, including <a href="https://linear.app/developers/aig">agentic workflows</a> through <a href="https://linear.app/integrations/agents">integrations with leading AI providers</a>, as well as the launch of an <a href="https://linear.app/developers/agents">API for agents</a>.</p><p>Much of this project came down to tweaking a series of small details, reviewing the changes, and tweaking some more until things felt right. If most people don’t immediately notice what changed, that’s probably a good sign. Just as Linear’s users rarely think about the <a href="https://linear.app/now/zero-bugs-policy">bugs they never hit</a>, the paper cuts that were <a href="https://linear.app/now/quality-wednesdays">smoothed away</a>, or the performance issues that never slow them down; most of what makes software feel good is what you aren’t likely to see.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Design is more than code]]></title>
            <link>https://linear.app/now/design-is-more-than-code</link>
            <guid>https://linear.app/now/design-is-more-than-code</guid>
            <pubDate>Fri, 19 Dec 2025 19:30:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Designing with code is a recurring discussion, and it’s flared up again. I’ve written about it twice now. <a href="https://x.com/karrisaarinen/status/1999730838280503775">Design as a search</a>, not a pipeline. How <a href="https://x.com/karrisaarinen/status/2000451411696603437">tools carry opinions</a>, and how those opinions shape what feels “reasonable” to attempt. Why constraints that arrive too early can close off possibilities before you’ve had a chance to find them. I’m skeptical of the industry’s drive toward grand unification, collapsing a nuanced process into code and calling it progress.</p><p>The recent discourse has focused on whether designers should code, whether code is the right medium for design, how code “presents the truth” of a design, and so on. But I think centering this debate on code and tools is reductive.</p><p>The bigger question to me is what happens to how we see designers contributing in the future, especially now with AI and these new tools. How do roles evolve, and what do we start expecting from each of them?</p><p>Are designers now engineers, with the same expectations? Do engineers start having the same expectations of designers? Will we still have a “head of engineering” and “head of design”, or does it turn into something like “head of craft”? Titles don’t matter that much, but these questions are useful because they reveal what we value and how we think the job gets done.</p><p>And then the practical question. If designers get funneled toward engineering, designing with code directly, is that a good direction? What do we lose or gain?</p><p>Part of why this discussion gets messy is that design means different things to different people. Your view on it depends on what kind of design you do, and how you understand design as a practice.</p><p>I believe design comes in many flavors. It’s influenced by the person, the domain, the market, the customers. In consumer products, you might need to test ideas quickly because motivations are hard to predict. In B2B or enterprise, you often have more context and can design from that. Some industries require extreme reliability and clarity. The environment matters too. Stakeholders, clients, company culture, and your skills as a designer. If you’re more visual, you lead with visuals. If you’re strong in code, you might use it earlier.</p><p>And for some, design simply is getting the button on the screen and moving on.</p><p>So there’s a broad domain of software design, with different tools and methods inside it. The code vs no-code argument often misses the point and becomes a polarizing force.</p><p>What I’m trying to say is that I want to elevate this discussion above tools, and make sure tools don’t take over the future of design. I don’t want us to needlessly devalue conceptual and divergent thinking just because new tools make execution easier.</p><p>Even engineers who work with code all day step away from it. They draw architectures, plan systems, and reason about tradeoffs. While code is where software lives, it’s not always where all decisions should be made.</p><p>To explain what I mean, I have to start with how I understand design and how I’ve practiced it.</p><h3>Designing the problem</h3><p>First of all, I’m not a formally trained designer. It’s been self-taught through hundreds of design projects over the last two decades. So I’m not advocating gatekeeping, or any one “right” way to design. But I do think design is rarely linear. You work at different levels of abstraction, move between them. And while the outcome is the goal, spending time on the journey can make the outcome better.</p><p>Through that work, I learned to question the problem first, not treat it as an assumption. If asked to work on something, I start with: is this a real problem? What if we don’t do this? Who defined the problem?</p><p>It sounds philosophical, but what I’ve found is that the most common reason design projects drag or fail is that the problem wasn’t clear. People won’t agree on solutions, because they have different problems in mind. The solution becomes a compromise of many different problems, instead of a clean solution to one major problem. This compounds when you have too many stakeholders.</p><p>To tackle this, I’d do two things. Write the problem the way I understood it, and ask who the stakeholders are. Then when presenting solutions to those stakeholders, I’d repeat the problem to see if it caused reactions. If it did, I’d stop and get the room to align on the problem. So what does this have to do with design? This sounds kind of corporate.</p><p>You’re always going to have stakeholders, if not colleagues, then customers. You have to understand whether feedback is true because the solution isn’t good, or because people don’t agree on what the problem is. Sometimes you’re designing against the wrong problem. The problem is the first part of the equation. It’s the foundation of what you’re trying to design and build.</p><p>At Linear, we knew quickly that companies needed projects. So what goes on the roadmap is “build projects.” Everyone agrees it’s needed. But if you think about it more, why do companies organize work into projects? Why not just work on the next task? What happens if they don’t have projects?</p><p>You can go deep on project management. There’s a whole discipline behind it, and many ways of doing it. But if your vision is to build a purpose-built tool for software companies, you start narrowing. What do they actually care about?</p><p>Simply put, projects are a natural abstraction for companies to manage streams of work. They help with accountability, ownership, cross-team collaboration, predictability, and visibility.</p><p>Now you might ask why research something so basic or well understood. Sometimes you don’t need to. But learning the landscape and history gives you orientation. You find assumptions you can challenge, or you decide which traditions to follow.</p><p>Most importantly, learning the problem first helps you decide what you want to do about it. What direction the product vision is pulling you toward. What you want to optimize and influence.</p><p>At Linear, we saw that projects might be the most important unit of work. Products are made of them, organizations orient around them, and you celebrate when one ships. That understanding gave us a direction for what problem we were trying to solve.</p><h3>Designing the solution</h3><p>I think of designing the solution in two stages: The conceptual stage and the execution stage. The conceptual stage is finding the overall form the design will take. While the execution stage is building it out and getting it onto the screen.</p><p>Take projects in an issue tracking tool, you could treat them as one large issue with sub-issues, a folder or label of issues, or its own entity connected to issues. Those are conceptual ideas you can consider without putting anything on the screen. The decision comes down to your understanding of users, the company, and the vision you want. All of these concepts can work, and you can find them in real products.</p><p>Because we saw projects as important, and different to issues, they needed to be their own entity, with their own shape. A project should have a recognizable form and functionality that communicates status, reasoning, user feedback, prioritization, timing, and connection to larger initiatives. Demoting projects to a label or a loose collection of issues didn’t feel right.</p><p>This conceptual stage might happen in words, on paper, in a design tool, or in code. It’s just about giving those ideas a shape, trying different directions and eventually choosing the direction that serves the problem and the product vision the best.</p><p>Once I have a direction I believe in, it’s ready for broader feedback. You test the concept by building it.</p><p>It’s the part closest to the final output. You make the design concept actually work, shaping it into something real. Code, or working with the material, is essential for this. And there are times when you gain new insights and have to go back and revisit the problem or concept.</p><p>There are different ways to use code in this stage. You can build tools, or “sketch” with throwaway code. This removes some of the constraints of production code and makes the process more exploratory. My point is that while you might see the execution stage as the real part of design, you’ve already built a foundation of context and confidence. When the material fights back, you’re pushing with that confidence.</p><p>Think of it in LLM terms. The design work you do before is the goal, context, and prompt you’re building for the agent to address the problem. The execution work is where you guide the agent through specific decisions.</p><p>After reading all this, you might think, who has time for this? We need to ship. Why not build right away and figure it out as we go? I don’t think it comes down to time. My explanation might have been long, but the process itself can be fast. You just spend the time needed.</p><p>My feeling is that without that context and goal built in, you might be iterating toward a direction, but not one that was chosen intentionally.</p><p>This brings me back to where I started. Our industry is not very patient, and once you start building designs directly to production as the default, the culture and organizational reasons to consider problems, concepts, and intentions start evaporating. We start devaluing the why behind our designs in favor of output.</p><p>My worry isn’t the code or the tools themselves. It’s a decline in consideration, and with that, a decline in unique, well-designed products. The question is how we keep that alive even as new tools and technologies emerge.</p><p>To me, design was never about what the button is or does, or which medium you work in. It was and is about finding the right problem, the right intent, the right vision. The feature you design and build today should be a considered step toward that vision.</p><hr/><p><strong>Thank you Charlie Aufmann, Tuhin Kumar, Ramon Marc, Conor Muirhead, Gavin Nelson, Raphael Schaad, Jeff Smith, and Soleio for their comments and discussion on this topic.</strong></p><p><br/></p><p></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How our Customer Experience team works in Linear]]></title>
            <link>https://linear.app/now/cx-in-linear</link>
            <guid>https://linear.app/now/cx-in-linear</guid>
            <pubDate>Thu, 06 Nov 2025 15:43:19 GMT</pubDate>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/88faa60fb388b2d4814e9909001d21bd6c603e4f-3904x2138.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/d14a877ab5037f08a4ac58e814be0876919d12dc-1952x1669.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/33505ac482eb62752c75ac76dd20ff2931641a8b-3904x1178.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/8eec7357bedbd5499ef2556053918be6d20cdbf0-3904x1034.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/1a958da630ad00d771f5bf38d4220379b2ca26ca-3904x2992.png?q=95&amp;auto=format&amp;dpr=2"/><p>One of our main goals in Customer Experience (CX) at Linear is to make the support process feel like an extension of the product itself.</p><p>That starts with meeting customers where they are—places like Intercom, Slack, Slack Community, X, or Reddit—and turning those conversations into part of our product development process. This creates a tight feedback loop between customers and our EPD teams, leading to a better product and moments of delight when users see their feedback realized in the app.</p><p>At a high level, this is our process:</p><p><strong>Stage 1</strong>: CX routes customer feedback through designated waypoints (namely Intercom and Slack) into triage queues in Linear monitored by our engineering and product teams.</p><p><strong>Stage 2</strong>: When an issue lands in triage, it triggers a notification to a Linear team member whose priority that week is to take on the work themselves or assign it to the right engineer (in the case of bugs) or attach it to the right candidate projects (in the case of feature requests).</p><p><strong>Stage 3</strong>: The assigned engineer builds the solution and merges the PR.</p><p><strong>Stage 4</strong>: Once the PR is merged, Linear’s GitHub integration marks the issue as Done in the Linear issue, which prompts CX to close the loop with the customer.</p><p>The key is building systems that collect and funnel information in a consistent way, and wiring them together so that handoffs between stages happen efficiently. Here’s more detail on how it all works.</p><h3>Stage 1: Intake</h3><p>We initiate the CX process in two main places: Intercom and Slack. There we begin the process of translating a customer’s words into a Linear issue.</p><h4>Intercom</h4><p>We use Intercom to collect all support tickets that come in via email or from within the Linear app. We use the Linear-Intercom integration to create Linear issues directly from inside Intercom.</p><p><em>(Linear also supports integrations with Zendesk, Salesforce Service Cloud, and Front. Plain and HelpScout have built their own Linear integrations.)</em></p><p><em></em></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/88faa60fb388b2d4814e9909001d21bd6c603e4f-3904x2138.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2138" alt="A flowchart of the Intercom-Linear integration: When the bug template is used, the issue is added to Proudct. When the Feature Request template is used, the issue gets added to Engineering."/></figure><p>We have two templates in Intercom for turning customer feedback into Linear issues—one for bugs, another for feature requests. The templates automatically apply the right issue type and take a first pass at duplicate detection. They also route issues to the right team: bugs go into the engineering triage queue, feature requests go into the product triage queue.</p><h4>Slack</h4><p>Each week, as part of our CX on-call rotation, one team member is responsible for keeping an eye on feedback from external channels like social media, community spaces, and app store reviews.</p><p>Notifications from those sources flow into dedicated Slack channels such as #notifs-twitter and #notifs-reddit, which make it easier to catch relevant comments. The CX on-call person also keeps an eye on channels in our own Slack community, like #help and #product-feedback.</p><p>When they spot a comment that needs engineering or product attention, they use Linear Asks templates to turn the message directly into an issue.</p><p>Just as in Intercom, we maintain two Asks templates—one for bugs, one for feature requests. We keep the required fields to a minimum so CX can file issues quickly while still including enough detail for engineering and product teams to act on. These issues automatically include the customer’s exact words and a link back to the original conversation, which makes it easy to close the loop once the issue is resolved.</p><p><em></em></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/d14a877ab5037f08a4ac58e814be0876919d12dc-1952x1669.png?q=95&amp;auto=format&amp;dpr=2" width="1952" height="1669" alt="A screenshot of a Feature Request template in Linear Asks"/></figure><h3>Stage 2: Triage</h3><p>Triage—the dedicated “inboxes” monitored by our engineering and product teams—is where we decide who should take the work and how it should be categorized. <a href="https://linear.app/docs/triage-intelligence">Triage Intelligence</a> helps a lot here. Above and beyond the automation built into our intake templates, it:</p><ul><li>Detects duplicates (particularly useful for aggregating feature requests)</li><li>Applies labels (such as the area of the product the issue is about)</li><li>Suggests the right team or assignee</li></ul><figure><img src="https://webassets.linear.app/images/ornj730p/production/33505ac482eb62752c75ac76dd20ff2931641a8b-3904x1178.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1178" alt="A screenshot of the Triage Intelligence UI element in Linear with suggestions for assignee, labels, and potential duplicates."/></figure><p>After that automated pass, the person overseeing triage makes the final decision about where each issue should go (internally we refer to this person as the “goalie”). Engineers and product team members rotate through the role each week, as configured in our <a href="https://linear.app/changelog/2023-10-12-triage-responsibility">triage responsibility</a> settings.</p><p>For bugs, the goalie either takes the issue themselves or assigns it to the right expert on the team. We address bugs according to clear SLAs consistent with our <a href="https://linear.app/now/zero-bugs-policy">zero-bugs policy</a>.</p><p>Feature requests follow a different flow. By utilizing <a href="https://linear.app/customer-requests">Customer Requests</a>, the user’s direct feedback, company information, and a record of the original discussion are all linked to a Linear issue or project. The product team goalie for the week reviews this feedback and adds notes or context that CX can share back with customers. (For more about how we aggregate feature requests into projects, see our blog “<a href="https://linear.app/now/continuous-planning-in-linear">Continuous planning in Linear</a>.”)</p><p>You can automate much of the process of sorting incoming work with triage rules which let you define actions that run the moment after Triage Intelligence completes its work. For example, you might route all urgent enterprise bugs directly to a specific team or assignee and automatically apply the right SLA.</p><p><em></em></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/8eec7357bedbd5499ef2556053918be6d20cdbf0-3904x1034.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1034" alt="A screenshot of an example Triage Rule in Linear: When the customer tier is Enterprise, the issue automatically gets marked as Urgent"/></figure><h3>Stage 3: Engineering</h3><p>When an engineer takes on an issue, it becomes part of their active work. They make the changes, test the solution, and merge the pull request. At that point, our GitHub integration marks the associated Linear issue as “Done.”</p><h3>Stage 4: Closing the loop</h3><p>Once an issue is marked Done, it triggers an update back to wherever it originated. In Intercom, the linked conversation reopens with a note letting the CX team know the issue was resolved.</p><p><em></em></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/1a958da630ad00d771f5bf38d4220379b2ca26ca-3904x2992.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2992" alt="A screenshot of a customer conversation in Intercom that automatically gets reopened once a linked Linear issue gets marked as done"/></figure><p>In Slack, the linked message is updated with the current status. From that point, we reach out to the customer directly to share the update and confirm the fix.</p><h3>CX as UX</h3><p>Treating customer experience as part of the Linear product experience means two things. First, at a tangible level, it means CX is connected directly to product and engineering. Second, it means we want the experience customers have when they reach out for help to feel as seamless as the experience they have using Linear itself.</p><p>To build a similar workflow in your own workspace:</p><ul><li>Integrate Linear with your support tools such as <a href="https://linear.app/integrations/intercom">Intercom</a>, <a href="https://linear.app/integrations/zendesk">Zendesk</a>, <a href="https://linear.app/integrations/salesforce">Salesforce Service Cloud</a>, and <a href="https://linear.app/integrations/front">Front</a>.</li><li>Install the <a href="https://linear.app/integrations/slack">Slack</a> and <a href="https://linear.app/integrations/github">GitHub</a> integrations to connect CX with product, design, and engineering workflows. </li><li>Turn on <a href="https://linear.app/docs/triage">Triage</a> to organize new issues and route them automatically.</li><li>Enable <a href="https://linear.app/ai">Triage Intelligence</a> to automate labeling, deduplication, and assignment.</li><li>Set up <a href="https://linear.app/changelog/2025-06-05-asks-fields-and-triage-routing#triage-routing">Triage Rules</a> (Enterprise) to handle recurring actions automatically.</li></ul><p>Or, if the Linear way of product building appeals to you, consider <a href="https://linear.app/careers">joining our team</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Continuous planning in Linear]]></title>
            <link>https://linear.app/now/continuous-planning-in-linear</link>
            <guid>https://linear.app/now/continuous-planning-in-linear</guid>
            <pubDate>Thu, 30 Oct 2025 15:24:26 GMT</pubDate>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/651d26100813a9259039122b9732ac00c67c9e57-3904x1800.png?q=95&amp;auto=format&amp;dpr=2"/><p>Product planning is a fresh start for your product team. It should feel energizing and full of possibility. After all, it’s a rare opportunity to step back from the churn of daily activity and recalibrate your efforts in the most meaningful directions.</p><p>But in practice, it often creates a kind of whiplash when you shift abruptly from deep execution to high-level strategizing. Gathered in a room, staring at a blank page, it’s natural to wonder: Now what do we do?</p><p>An obvious place to turn is all the customer notes you’ve collected over the past quarter. But typically those are scattered across different surfaces and recorded at wildly different levels of abstraction: some customer requests are extremely specific—a small feature tweak—while others are sweeping statements about product direction. It’s hard to assemble mismatched building blocks into a coherent plan.</p><p>Our answer to these pitfalls is a process called continuous planning. It’s how the product team at Linear plans, and it’s a workflow we’ve designed the Linear application to easily facilitate.</p><p>Instead of organizing through a disordered pile of customer notes every few months, continuous planners organize ideas into candidate projects as they arrive (and as of 2025, <a href="https://linear.app/ai">use AI</a> to maintain them and keep them up to date). These projects form the center of gravity for both planning and execution. They are the most granular level an organization’s leadership can be expected to reason about, and they are the highest level concept that contributors are expected to think about on a day-to-day basis.</p><p>It’s an approach that alleviates the pressure of a blank page and the recency bias that can compromise planning. Under continuous planning, you’ve been accumulating and organizing ideas all along, so that by the time you actually sit down to map your team’s work for the next quarter, a well-vetted list of possibilities is already waiting for you.</p><h3>Organize your backlog around candidate projects</h3><p>Project ideas can originate from all sorts of places within your company and from customers. They can arrive via Slack, support tools, sales calls, hallway chats, or even public exchanges on social media.</p><p>Wherever the ideas originate, the key is to funnel them into a central location for processing in a structured, predictable way. At Linear, we send all feature requests to the <a href="https://linear.app/docs/triage">triage queue</a> of the product management <a href="https://linear.app/docs/teams">team</a>.</p><p><em>As a quick aside: It’s important to have separate workflows for feature requests and bugs. Bugs describe how your product doesn’t work as intended and are prioritized by severity. Feature requests describe how your product might work in the future, and are prioritized through your continuous planning process.</em></p><p>As ideas come in, patterns will start to emerge. They could be overlapping requests for specific features, or feedback around common problems users are facing.</p><p>Once a pattern takes shape, we’ll create a candidate project against it. The project serves as a gathering place for user interview notes, related feedback, and additional requirements that we discover as we continuously develop a more refined understanding of what we’d need to build.</p><p>AI increasingly assists with this work. In particular, we use our <a href="https://linear.app/ai">intelligent triage suggestions</a> to reliably identify when a new idea or request is related to, duplicates, or just broadly belongs in the same project as existing issues.</p><p>In this way, little by little, piece by piece, discovery happens all across the org. The result is an emergent map of the product landscape, with candidate projects as its main landmarks.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/651d26100813a9259039122b9732ac00c67c9e57-3904x1800.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1800" alt="Abstract illustration of issues mapped around projects"/></figure><h3>Promote candidates into priorities</h3><p>When entering into a planning cycle, a well-organized list of candidate projects might be all it takes to form a roadmap—just select the top few and go.</p><p>However, companies will also often have a structured goal-setting process to set strategy and ensure alignment. This could be a set of specific product themes or formalized systems like OKRs. Within the Linear app, those company goals are represented as <a href="https://linear.app/docs/initiatives">initiatives</a>, which can be nested into each other to closely model whichever system you employ.</p><p>When it’s time for the product team at Linear to plan, the first thing we do is order our candidate projects by the number of associated customer requests and their revenue impact. From there, we’ll pick and choose based on the highest impact candidates, our goals for the quarter, and any calculated bets we want to make.</p><p>We promote the projects that we want to take on by assigning them a priority:</p><ul><li>High (must do)</li><li>Medium (should do)</li><li>Low (nice to have)</li><li>No priority (won’t do this quarter)</li></ul><p>By starting from a prepopulated set of well-developed candidate projects, we’re never panicked to fill a blank page. This ensures that we’re not just examining the first things that come to mind or being overly affected by recency bias.</p><p>The output of the planning process is an extremely legible list of projects to undertake that have each been vetted, thoroughly considered, and prioritized.</p><h2>Continue to use projects to track progress and manage work</h2><p>Once you’ve decided which candidate projects to act on, the transition into execution is smooth. Projects seamlessly become the interface for executing on what’s been planned.</p><p>For leadership, projects are a clean handoff point to individual teams. They answer the question: <em>What do I want the teams to be working on?</em></p><p>For individual teams and contributors, projects answer the inverse question: <em>What should I focus my attention on?</em> They create issues and sub-issues within the project to define their daily work.</p><p>Then, as the work proceeds, <a href="https://linear.app/docs/initiative-and-project-updates#create-initiative-and-project-updates">project updates</a> from team leads keep planners and leaders closely in touch with how things are going.</p><p>The key to continuous planning is there’s never a need to translate between discovery, planning, and execution: projects are the universal vocabulary. You develop them organically as you triage ideas and requests; you prioritize them in your planning cycle; you use them to guide daily execution and management.</p><p>And then, when it’s time to plan again, you return to your evolving list of candidate projects and the wheels continue to turn. No sharp breaks. No staring at a blank page wondering what to build next.</p><p>Instead, just the steady, uninterrupted process of finding and realizing your best ideas.</p><p></p><p><br/></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Designing remote work at Linear]]></title>
            <link>https://linear.app/now/designing-remote-work-at-linear</link>
            <guid>https://linear.app/now/designing-remote-work-at-linear</guid>
            <pubDate>Wed, 29 Oct 2025 17:09:18 GMT</pubDate>
            <content:encoded><![CDATA[<p>When we began back in 2019, building remote-first was a design choice. We believed builders deserve freedom: freedom of place, freedom of rhythm, freedom of deep focus. And we believed <a href="https://linear.app/now/why-is-quality-so-rare">quality doesn’t come automatically</a>, it needs to be intentional. That’s why we built Linear around trust and autonomy. We wanted to give people space to do their best work, without extra layers of process.</p><p>That vision still shapes how Linear works. Today, our 99-person team spans more than 15 countries and 10 time zones. Because we are distributed, each year we bring our whole team together in one place. This year it was Copenhagen, where we spent a week working side by side, sharing ideas, and aligning on what’s next for us as a company.</p><p>We wanted to capture what working at Linear feels like, so we brought a film crew along with us. They joined us for team sessions and other activities, filming the moments that make Linear what it is. Along the way, they interviewed members of our team who talked about what being remote-first means for us, how we stay connected across time zones, and the ways we come together in person throughout the year.</p><p>We wrapped that footage into this video, which shares what it’s like to work at Linear, told through the people who build it every day.</p><p><strong><em></em></strong></p><video src="https://webassets.linear.app/files/ornj730p/production/914ae7684cca623eb09c1439365979c1569ddfae.mp4" width="2200" height="1160" poster="https://webassets.linear.app/images/ornj730p/production/7b281cf05314fec5996564071d49421665aa7642-2200x1160.jpg?q=95&amp;auto=format&amp;dpr=2"></video><h3>How we work</h3><p>We maximize for trust in our builders. Teams set their own rhythms, communicate directly, and keep meetings to a minimum. There are few distractions, and a shared respect for uninterrupted focus. Deep thinking time is treated as something worth protecting. We believe that quality compounds when work has time to develop.</p><p>At Linear that means:</p><ul><li><strong>Small teams, clear ownership.</strong> Two to four people is typical. Teams assemble around a project and disband when done. <a href="https://linear.app/now/how-we-run-projects-at-linear">Project leads rotate</a>. Often engineers or designers lead.</li><li><strong>One product team, one roadmap.</strong> We do not use OKRs or run A/B tests. We align on a north star and make decisions with judgment, customer insight, and taste.</li><li><strong>Short specs, fast feedback.</strong> Specs focus on context and intent. We ship behind feature flags to internal users first, then invite select customers through Origins when it helps. Weekly written updates auto-post to Slack so everyone can follow progress without a meeting.</li><li><strong>Protect quality. </strong>We keep a <a href="https://linear.app/now/zero-bugs-policy">zero-bugs policy</a> with SLAs. Bugs get fixed now, not later. We review a weekly bug dashboard to rebalance load and spot patterns.</li><li><strong>Practice the craft. </strong><a href="https://linear.app/now/quality-wednesdays">Quality Wednesdays</a> train the team to see what is off. More than 1,000 small fixes over two years have raised the bar and changed how we build in the first place. Feature roasts help us ship with better judgment.</li><li><strong>Use constraints. </strong>Constraints create clarity. We ask why a feature matters, why now, and for whom. We keep the bar high by saying no.</li><li><strong>Stay close to customers. </strong>We <a href="https://linear.app/now/building-what-customers-need">build what customers need</a>, not just what they ask for. <a href="https://linear.app/customer-requests">Customer Requests</a> pulls signals from support and Slack into Linear so product and engineering can see patterns next to the work.</li><li><strong>Plan for unplanned work. </strong>Triage and a “goalie” rotation <a href="https://linear.app/now/planning-for-unplanned-work">handle inbound</a> so projects keep momentum. SLAs make expectations explicit.</li></ul><p>This rhythm allows people to plan their days around their lives. What matters is doing great work and getting things done.</p><h3>Profitability and ownership</h3><p><a href="https://linear.app/now/the-profitable-startup">Profitability</a> is freedom. It lets you control your destiny and keep standards high. We’ve hired slowly, stayed focused, and built a business that funds itself. Having bigger teams does not guarantee better work. Usually it means the opposite. We hire the next person who raises the bar.</p><p>We want people to be able to choose Linear for the long term. Alongside our <a href="https://linear.app/now/building-our-way">Series C</a>, we ran a <a href="https://linear.app/now/giving-our-team-liquidity-through-linear-s-first-tender-offer">tender offer</a> so current and former teammates could sell a portion of vested options at the same $1.25B price as investors. Our equity program includes a 10-year exercise window, early exercise in the US, refreshers over time, and Linear Infinity, which provides paths to liquidity along with recharge sabbaticals so people choose to keep working here.</p><h3>Connection</h3><p>We make space for connection too. We meet monthly for a one-hour all-hands to share metrics, demo upcoming releases, and reflect on what’s working and what we can do better. Once or twice a year, the team runs Hack Week to step away from regular work and build for the fun of it. Smaller rituals, like the Great Linear Bake-Off or regular coffee chats, bring people together outside of project work and help maintain a sense of closeness across distance.</p><p>Once a year, we bring the entire company together for an offsite as we did in Copenhagen in 2025. Past offsites have been in Mexico City, Helsinki, and Lisbon.</p><p>We use these offsites to prioritize building a shared understanding of how we’ve grown, what we’ve learned, and what we’ll do to preserve the essential elements of Linear’s culture as we scale. But we also keep the agenda intentionally light to make room for unstructured time together, coworking, or discussions while exploring the city around us.</p><p>At other times during the year teams meet in smaller groups for planning sessions, project kickoffs, or to welcome new teammates. Most teams plan at least one meetup a year, usually in the opposite season from the company offsite, and anyone on the team can suggest or host one.</p><h3>Coworking hubs</h3><p>While we’re a remote-first culture, in 2025 we introduced coworking hubs in Berlin, New York, and San Francisco. These are places for anyone who wants to work alongside teammates in person. There’s no expectation to show up, but many people build it into their week in a way that works for them.</p><p>In San Francisco, for example, someone usually starts a Slack thread at the beginning of the week to see who’s around. People share their plans, line up a few overlapping days, and end up working together, grabbing coffee, or going for lunch.</p><h3>Why it matters</h3><p>We’ve built Linear with a deliberate balance of work styles that achieves the best of both worlds: the freedom to do your best work anywhere and the shared rhythm that keeps us aligned and cohesive as one team.</p><p>Our remote-first approach is part of how we live our mission to <em>inspire and accelerate builders</em>. By giving people autonomy, focus, and clarity of purpose, we create the conditions for world-class builders to do their most meaningful work. The systems, rituals, and offsites all exist to support that creative momentum and preserve the craftsmanship that defines Linear.</p><p>If this sounds like a place you’d want to help build, <a href="https://linear.app/careers">we’re hiring</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Self-driving SaaS: When software runs itself]]></title>
            <link>https://linear.app/now/self-driving-saas</link>
            <guid>https://linear.app/now/self-driving-saas</guid>
            <pubDate>Wed, 22 Oct 2025 16:33:34 GMT</pubDate>
            <content:encoded><![CDATA[<p>Traditional business software has always existed to facilitate and guide human actions. It creates efficiency through its constraints, capabilities, and nudges, but its ultimate value is only as great as the effort users put into it.</p><p>Project management software is a good example. It establishes channels for a well-defined set of human actions: users create and triage issues, merge duplicate bug reports, and write updates as projects advance. The software provides all sorts of supports, reminders, and guardrails, but human users still do the work.</p><h3>Enter the Chatbot Era</h3><p>The first instinct that many incumbents have had with AI has been to layer a helper chatbot on top of existing systems. You can prompt the chatbot to draft a document, tell it to create a research report, ask it to group or categorize items, or  otherwise enlist it to operate your app.</p><p>These chatbot workflows can look magical in a demo, but they’re really just the old ways of working dressed in a new interface. Human users are engaged in all the same tasks they’ve always been. They’re still nudging the system along every step of the way, only now using prompts instead of button presses.</p><h3>Self-driving software</h3><p>Real change comes when AI stops requiring constant input and instead proactively moves work forward. Rather than constantly requiring user attention and input, the systems of the future will be self-driving.</p><p>In our project management example:</p><ul><li>Customer requests are automatically extracted from inbound support tickets, customer research, and sales calls. Any communication the organization has with its current or potential customer base is used as context by the system for generating new issues and requirements.</li><li>Newly created issues are analyzed, researched, and automatically assigned to the correct team, project, and person. The system uses the past completion history, existing backlog, and future roadmap as context to understand what to do. </li><li>Simple changes are dispatched to a coding agent and completed without additional intervention. More complex requirements are automatically collated into project specifications and as new requirements roll in, the system keeps documentation up to date with the latest information.</li></ul><p>In this new world you, the user, are still in control—you decide which projects to pursue and where to allocate your resources—but the system moves everything forward on its own.</p><h3>Our vision for Linear</h3><p>In case it wasn’t obvious, this is our vision for Linear: a system of planning and building that operates autonomously on your behalf.</p><p>We’ve already started to build and release features to make this a reality. Like with self-driving cars, they can be adopted and operated at different levels of autonomy.</p><p>At the most basic level, the system suggests actions the way a lane-departure warning beeps when you drift. In Linear that looks like recommendations for which teams to assign an issue to or which labels to apply. You can use these assistive hints or not.</p><p>At moderate autonomy, the system takes the first pass and you correct what doesn’t fit, similar to the lightly interactive way drivers use adaptive cruise control. The car does most of the driving, but you can still nudge the steering wheel or tap the brake. In Linear, you can set up rules that direct the system to auto-apply suggestions selectively, under the conditions of your choosing. We also clearly identify these AI actions after they’ve been taken, so you can easily reverse or modify them.</p><p>At full autonomy, you can take your hands off the controls entirely and the system drives the work from start to finish. You merely step out of the car at the end of the trip and confirm you arrived at the right destination. In Linear, this means identifying classes of issues that can be completely handled by coding agents and guiding the system to automatically dispatch them. Human users only become involved when evaluating the final result.</p><p></p><p>To get there, capabilities and culture both need to progress. The adoption path there isn’t just flipping on a switch. It’s learning how to adjust your workflows to take advantage of the system’s ever-improving abilities.</p><h3>Transforming the nature of work</h3><p>Whenever a new technology arrives, our first instincts are usually naive. There’s a tendency to graft the new thing onto what already exists, often awkwardly.</p><p>But we know the real leap comes when people adjust their mental models and start to imagine what the technology makes possible on its own terms.</p><p>We can already anticipate that the self-driving cars of the future won’t just be sedans where no one’s sitting in the driver’s seat. They’ll be living rooms or offices on wheels that free your time and attention to focus on what you value.</p><p>How will the job of building software look when your attention doesn’t need to be spent on routing issues, merging duplicates, writing status updates, debriefing call notes, maintaining documentation, or fixing minor issues? You’ll be entirely focused and present when engaging with your users, discovering their problems, and imagining what’s possible.</p><p>Read more here about how we’re building <a href="https://linear.app/ai">AI workflows for modern product teams</a>.</p><p></p><p></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A Linear spin on Liquid Glass]]></title>
            <link>https://linear.app/now/linear-liquid-glass</link>
            <guid>https://linear.app/now/linear-liquid-glass</guid>
            <pubDate>Tue, 21 Oct 2025 16:32:42 GMT</pubDate>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/2f57a0573f3a88169eedecb26af5b6042de89fcb-3904x2026.jpg?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/af416eacfa0ee42bcfa22d0d58baee05cc1139d3-3904x2376.jpg?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/48c17bd0fa38add8bdb15501721d6277e52fb769-3904x1800.jpg?q=95&amp;auto=format&amp;dpr=2"/><p>Earlier this year, we were ready to redesign our mobile app. The original version had served us well, but it was built with a narrow use case foremost in mind: individual contributors engaging with issues.</p><p>A year later, Linear is the product development platform of choice for larger, more complex organizations, and the app wasn’t serving everyone equally well. In particular, executives and managers want an overview of what’s happening across their teams and the existing structure, optimized for a single workflow, couldn’t easily support that.</p><p>We knew we needed a more customizable foundation that would allow us to make the navigation more flexible, adaptable, and expandable depending on a user’s role.</p><p>Then in June, something fortuitous happened: Apple announced Liquid Glass at WWDC. We watched the keynote and right away it was clear Apple had landed on a design language that felt modern and expressive. It also matched the aesthetic shift we were already imagining.</p><p>But as we explored it more closely, we realized adopting Apple’s new APIs wouldn’t give us the control we needed to build the customizable navigation that was the real purpose for our redesign. Instead, we decided to recreate our own version of Liquid Glass. We wanted to capture what we loved about it while retaining the flexibility to design a navigation experience that fits the way people use Linear.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/2f57a0573f3a88169eedecb26af5b6042de89fcb-3904x2026.jpg?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2026" alt="Rendered image of the new Linear App design in a perspective view with heavy depth of field."/></figure><p>It was without question the harder path.</p><p>We have a small iOS team—just two engineers—and fully adopting Apple’s APIs would have been much simpler. But rebuilding it ourselves would allow us to bring our new navigation to all of our users, including those on iOS 18, while freeing us from the compromises and uncertainty that come with depending on someone else’s design system. We knew that Liquid Glass had remained a moving target throughout the beta period of iOS 26, and Apple is still making changes to it today (like the <a href="https://www.theverge.com/news/802963/apple-liquid-glass-ios-26-1-beta-tint-option">recently introduced</a> Tinted Glass option).</p><p>It was a go-big-or-go-home moment, which made the choice easy. We weren’t deciding against Liquid Glass, and our goal wasn’t simply to rebuild it as it was. We wanted to push the design to a new level that felt true to the Linear brand and better suited the way our users work.</p><h3>Aqua versus ProKit</h3><p>We knew that building our own design system might seem like an unusual choice. But it also followed a tradition that runs through Apple’s own design history.</p><p>Nearly two decades ago, the company drew a similar line between consumer and professional software, with Aqua on one side and ProKit on the other.</p><p>Aqua defined the look of consumer Mac software for nearly a decade. Similar to Liquid Glass, it was exuberant, with pinstripes, bright highlights, glassy buttons, and drop shadows everywhere. The goal was to make the interface feel tactile and approachable.</p><p>What fewer people remember is that during that time Apple also used another design language called ProKit. It traded away Aqua’s reflections and translucency for flatter gradients and sharper edges. ProKit was built for professional tools like Final Cut or Logic with complex, information-dense workflows where clarity and control are more important than visual flourish.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/af416eacfa0ee42bcfa22d0d58baee05cc1139d3-3904x2376.jpg?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2376" alt="Screenshots of apps using Aqua and ProKit"/><figcaption>Aqua vs ProKit</figcaption></figure><p>Liquid Glass is a beautiful successor to Aqua. Its primary purpose is to feel fluid and friendly for a broad consumer audience. Apple has to design for every kind of app—education, entertainment, banking, fitness—and build systems that adapt to all of them.</p><p>We have a different set of constraints. Our users come to Linear to do a specific kind of work in a focused environment. That gives us freedom to push the design in specific ways Apple can’t.</p><p>In that sense, we saw an opportunity to take Liquid Glass’s aesthetic qualities—its translucency, depth, and physicality—and apply them with a ProKit philosophy: purpose-built, disciplined, and designed for sustained focus.</p><h3>Owning our materials</h3><p>To rebuild the glass effect from first principles, we started with a single SwiftUI view modifier that applies multiple effects at once. Behind the content, a Gaussian blur sets the base layer using a UIVisualEffectView. Above it, we layer a subtle gradient for structure, then a specular highlight calculated in a SwiftUI shader.</p><p>Making the highlight behave convincingly required describing the shape mathematically. We generate a signed distance field (SDF)—a way of representing a shape mathematically—for the continuous rounded rectangle surrounding the content. Then we use its gradient to build a normal map, and from that determine how much light each point catches.</p><p>Because we can’t apply the shader directly to the UIVisualEffectView, we layer it on top using a Plus Lighter blend mode. Finally, we mask the whole thing with the same SDF and add a subtle shadow for added contrast.</p><p>After we’d defined the surface, we focused on how the light itself should behave. Instead of faking highlights with static gradients, we modeled a physical light source that moves through space as you interact with the app. Because the lighting is calculated in real time on the GPU, the surfaces respond naturally to movement—soft highlights shift as you scroll, tap, or move through the app.</p><video src="https://webassets.linear.app/files/ornj730p/production/e4fb9d575cad7724e642bf21713f12204f662b0d.mp4" width="1200" height="600" poster="https://webassets.linear.app/images/ornj730p/production/ac3b99cbeb9e22df7b307de7f1010f021be5a1cb-1200x600.png?q=95&amp;auto=format&amp;dpr=2"></video><h3>Implementing a customizable tab bar</h3><p>Once we had control over the material, we could extend it to the part of the interface that mattered most for this redesign: the tab bar. Apple’s stock tab bar in iOS 26 looks similar on the surface to the one we ended up with, but you can’t meaningfully change its shape or behavior. We wanted a bar that could expand to fit different navigation patterns, so we built it ourselves. Owning the material made that possible.</p><video src="https://webassets.linear.app/files/ornj730p/production/6367eb6cc1400f22bec7788e172c1900f6b78af7.mp4" width="1200" height="800" poster="https://webassets.linear.app/images/ornj730p/production/0a8e0005e223a7080ce711eae2ffcd74bd2f298c-1200x800.png?q=95&amp;auto=format&amp;dpr=2"></video><p>This also gives us the flexibility to customize the bar in the future. Five items is a sensible limit for apps for a general audience, but Linear users often need more. Our tab bar can expand to accommodate additional entries, similar to how the tab bar can turn into a sidebar on iPad.</p><h3>Sweating the details</h3><p>Once the core system was in place, we focused on the tactile and visual details that make the interface modern.</p><p>When you touch an element, it lifts up slightly, providing a quick pulse of feedback. Dragging beyond the edge of the view distorts it slightly, resolving the physical tension and making the UI feel responsive.</p><video src="https://webassets.linear.app/files/ornj730p/production/ec12a2b996d584656865b70f85ae3330b13f76d9.mp4" width="1200" height="800" poster="https://webassets.linear.app/images/ornj730p/production/12669209aa62d0aef9b3b33d0efb8ac521fe0bc5-2400x1600.png?q=95&amp;auto=format&amp;dpr=2"></video><p>We also replicated some of the smaller effects Liquid Glass uses, to make our custom material feel at home on iOS. At the top and bottom edges of scroll views, we apply a variable blur that intensifies as content approaches the edge of the screen. This is a detail Apple relies on internally but doesn’t expose through public APIs, so we had to get creative. We layered a subtle color mask over it to match the soft edge Apple uses systemwide.</p><video src="https://webassets.linear.app/files/ornj730p/production/ebfaf308fc7ec072bd1874d97dbc7a68169ebc1e.mp4" width="1200" height="600" poster="https://webassets.linear.app/images/ornj730p/production/6546a219abed6823ac4ddba857c77806e38afdc6-1200x600.png?q=95&amp;auto=format&amp;dpr=2"></video><p>We spent a lot of time on accessibility details. Apple’s system glass automatically adapts to settings like Increase Contrast mode. When a user enables that setting, iOS draws solid outlines around glass elements. Our material now mirrors that behavior exactly, preserving legibility for users with accessibility settings turned on.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/48c17bd0fa38add8bdb15501721d6277e52fb769-3904x1800.jpg?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1800" alt="Screenshots of the regular Linear mobile app versus the Linear mobile app in Increase Contrast mode"/></figure><p>The one effect we chose not to reproduce was Liquid Glass’s refraction. Technically, it requires access to pixel-level data that isn’t available to third-party developers. Aesthetically, it also wasn’t the right choice because refraction can make dense professional interfaces harder to read. By relying on precise blurs, masking, and lighting, we maintained a sense of depth without losing clarity.</p><p>None of these details were individually complex to implement. But like so much of what we do when building Linear, it’s the sum total that creates an enjoyable and productive user experience.</p><h3>Customization for a growing user base</h3><p>This new visual language is just the start of a broader architectural redesign of our mobile app. As Linear’s user base grows, people in different roles are using the app in more varied ways. This new foundation, which we built and own ourselves, lays the groundwork for more adaptable navigation and customizable toolbars in the future.</p><p>We’ll have more to share about that soon. In the meantime, read more about the redesign in our <a href="https://linear.app/changelog/2025-10-16-mobile-app-redesign">changelog</a> or download the update in the <a href="https://apps.apple.com/app/linear-mobile/id1645587184">App Store</a> and <a href="https://play.google.com/store/apps/details?id=app.linear">Play Store</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best practices for designing Linear Dashboards]]></title>
            <link>https://linear.app/now/dashboards-best-practices</link>
            <guid>https://linear.app/now/dashboards-best-practices</guid>
            <pubDate>Tue, 07 Oct 2025 13:09:00 GMT</pubDate>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/75b6ae1dadf92d07f0baff026dd6754349d6135b-3904x1600.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/729df3a04a3958110f05f7b95ffbee71f19401a9-3904x3130.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/3b876eb7fa1e3766ab75c07c7095967454d2ee7b-3904x5126.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/3656b5af34aeb8af92d84c63fb49533a7a346cc1-3904x4290.png?q=95&amp;auto=format&amp;dpr=2"/><p>Dashboards let you combine data from different Linear sources into a single view, whether that’s monitoring operational health, keeping tabs on team workflows, or reporting on how resources are being spent across initiatives.</p><p>Teams have created thousands of dashboards since we <a href="https://linear.app/changelog/2025-07-24-dashboards">launched</a> them in July, with especially strong uptake among enterprise customers: more than half of enterprise workspaces now use at least one. </p><p>Dashboards are modular and customizable, with insights shown as charts, tables, or single-number metrics, and they are flexible enough to support both short-term operational needs and longer-term strategic planning. Three months after launch, we’ve found that one-third of viewers check dashboards weekly, while two-thirds return monthly.</p><p>In that time, we’ve also noticed clear patterns in what makes some dashboards more useful than others. Here are some of the practices that stand out, illustrated with real dashboards from our own use.</p><h3><strong>Practice 1: Fewer dashboards is generally better</strong></h3><p>We’ve observed that the median workspace creates just two dashboards, and adoption drops off quickly beyond that. When every team spins up dozens, most go stale and stop being trusted. The solution is to make each dashboard intentional, with a clear purpose and an owner. Build regular review cycles into your process so dashboards stay accurate and relevant.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/75b6ae1dadf92d07f0baff026dd6754349d6135b-3904x1600.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1600" alt="A line chart that looks at workspaces bucketed by size, showing the average number of dashboards created versus those actively used. "/></figure><p>This chart looks at workspaces bucketed by size, showing the average number of dashboards created versus those actively used. As companies get larger, the number of dashboards grows fast, but usage doesn’t keep pace and many dashboards go stale. Be realistic about how often a dashboard will actually be used, and keep the set as tight as possible.</p><h3><strong>Practice 2: Match the design to the dashboard’s purpose</strong></h3><p>Dashboards built without a specific purpose tend to collect random charts and quickly lose their value. The best dashboards are built for a clear use case with a design that reflects that purpose. Strategy dashboards work best when they focus on a handful of long-term trends that rarely change but help with alignment. Operations dashboards, by contrast, should surface a wider range of metrics, highlight unexpected changes and help teams react quickly. Decide which type you’re building before you start.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/729df3a04a3958110f05f7b95ffbee71f19401a9-3904x3130.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="3130" alt="Burn-up charts for tracking data requests."/></figure><p>This dashboard is my personal tool for keeping data requests up to date so the underlying data stays clean. Each status has a burn-up chart so I can quickly tell if the current number looks normal. The bottom panels flag issues that need attention—items that are stale or waiting for review. I check this dashboard at least weekly, often more, to make sure my backlog is in good shape. It’s deliberately short, focused, and glanceable.</p><h3><strong>Practice 3: Design for the right audience</strong></h3><p>The right level of detail for a manager, an IC, or an executive will look very different. We’ve found that dashboards are most effective when their detail and update frequency are tuned to the audience. If a dashboard is reviewed only occasionally, it should include more guidance and annotations so it’s easy to reorient after time away. If it’s checked daily or weekly, it should be denser, more glanceable, and optimized for speed.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/3b876eb7fa1e3766ab75c07c7095967454d2ee7b-3904x5126.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="5126" alt="This dashboard with line charts is built for weekly internal team meetings. It leans on detail over explanation, assuming everyone already has context. "/></figure><p>This dashboard is built for weekly internal team meetings. The metrics are broken down by individual, the charts align with recurring meeting topics, and the design avoids extra annotation. It wouldn’t work for execs or cross-functional stakeholders, but for this audience, it’s the right level of granularity to inform discussions.</p><h3><strong>Practice 4: Provide context, not just numbers</strong></h3><p>One of the most effective dashboards I’ve seen pairs every key metric—revenue, conversions, refunds—with a simple chart showing this week, last week, and trailing highs and lows. Anyone, even without additional context, could instantly see if something was good, bad, or in line with expectations. Using consistent, minimal visuals reduces cognitive load and makes the dashboard work with the company’s operating rhythm.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/3656b5af34aeb8af92d84c63fb49533a7a346cc1-3904x4290.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="4290" alt="This dashboard tracks inbound requests from different teams. Each column represents an org (Sales, GTM, Data, Product), and each row shows burn-up, new issues, and completed issues. Laying them out this way makes it easy to compare volumes across teams and spot trends over time."/></figure><p>This dashboard tracks inbound requests from different teams. Each column represents an org (Sales, GTM, Data, Product), and each row shows burn-up, new issues, and completed issues. Laying them out this way makes it easy to compare volumes across teams and spot trends over time. It also helps with capacity planning, both for myself and in conversations with other leaders at Linear. Having the context side by side means I can see at a glance which teams are driving the most requests and whether their pace is changing.</p><p><em>Dashboards are available to workspaces on our <a href="https://linear.app/pricing">Enterprise</a> plans. See the <a href="https://linear.app/docs/dashboards">docs</a> to learn more.</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why we committed to a zero-bugs policy]]></title>
            <link>https://linear.app/now/zero-bugs-policy</link>
            <guid>https://linear.app/now/zero-bugs-policy</guid>
            <pubDate>Wed, 24 Sep 2025 13:18:00 GMT</pubDate>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/575a95e1509bdfd5da7f434cc4c7b5153f5b1b64-3904x1978.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/2a8b580d5c06d5a217182d44e813e793d898a5d2-3904x3436.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/5309a09bc5e4d42b55fc34d5f1c84ca5f64441e6-3904x2740.png?q=95&amp;auto=format&amp;dpr=2"/><p>When we tell people that Linear maintains a zero-bug policy a common response is disbelief. It may sound like a ridiculous approach, but we do it because no other way makes sense.</p><p>The zero-bug stance means that we address bugs immediately, with the exact number of days depending on the severity: low-priority bugs need to be addressed within 7 days, high-priority bugs within 2. We formalized this approach two years ago. The impetus was actually a bug in a popular consumer app that I had reported to their team. Finally two years ago—and five years after I first reported the bug—I saw that it got fixed. I thought to myself, “wow, millions of users suffered through this bug for years for no reason.” If the company was going to fix the bug eventually, it would have been so much better to fix it right away.</p><p>That’s the big idea behind our zero-bug policy. We want Linear to be a solid, high-quality product, which means we’re going to address any bug that comes in. Fixing a bug takes the same amount of work whether we do it right away or put it off. But it’s not a zero-sum game: fixing it immediately gives us a higher-quality product and spares users unnecessary pain for the same overall effort.</p><p>Plus the approach allows us to deliver a kind of magical experience for customers who report bugs and the next day (or sooner) find it’s fixed. For example, this user last October who reported a problem with paragraph breaks in the Linear editor that we <a href="https://x.com/JohnONolan/status/1847023583307948194">fixed the same day</a>:</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/575a95e1509bdfd5da7f434cc4c7b5153f5b1b64-3904x1978.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1978" alt="Image of Tweet celebrating Linear&#x27;s bug fixing speed"/></figure><h3>Zero-bugs starts by clearing the backlog</h3><p>Once we agreed that a zero-bug policy was the only right way to go, the first step was to clean out the backlog. We had about 175 open bugs at that point and set aside three weeks to fix them all. For that period we paused all other projects. No one did anything but fix bugs. By the end we had given ourselves a clean slate.</p><p>Next we had to put in place practices to maintain it.</p><p>We already had rotating triage duties. Each week it would be someone’s job to assign incoming bugs to the right team members. Now with our new zero-bug policy we gave everyone a choice: When a bug is assigned to you, you can either mark it as “won’t fix” if it’s too marginal to address, or you can commit to fixing it. Importantly, we eliminated the option of sending bugs to the backlog.</p><p>(Related to this, I’ve heard stories of companies whose backlogs grow to thousands of bugs. Eventually, instead of fixing the bugs, they just delete the whole thing and start over. It’s a reflection of how when you put bugs in a backlog, in most cases what you’re really saying is you’re never going to get to them.)</p><p>We also set SLAs to focus our work: 48 hours for high-priority bugs and 7 days for the rest. Those were the official guidelines. In practice, it soon became the team norm that the first thing you do in the morning is open your inbox and see if you have been assigned a bug. If you have, you spend a few hours fixing it right away. By taking bugs on immediately, we make sure we stay within our SLAs. We also avoid the drag of context switching all the time. Bugs first, the rest of your work after that.</p><h3>The zero-bug dashboard</h3><p>Each week we review a dashboard of open bugs. If one person has too many, we reassign some so the load is even. Those reviews show us more than just who’s carrying what. Often they highlight patterns in the product and make it obvious when a team doesn’t have enough capacity. It’s one thing to know that in the abstract, but seeing bugs accumulate in particular areas of the product really drives it home and helps us allocate resources.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/2a8b580d5c06d5a217182d44e813e793d898a5d2-3904x3436.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="3436" alt="Dashboard showing the Linear EU product team&#x27;s bug statistics"/><figcaption>The dashboard the Linear EU product team uses to track bug statistics.</figcaption></figure><p>The same idea holds for conversations with individual team members. When an engineer’s bug count creeps above four or five, we notice it when reviewing the dashboard, and provide them with the resources they need to bring it down. The solution might be to reassign a few bugs, or to have the engineer step away from project work for a couple of days and focus on clearing their queue.</p><h3>Zero-bugs is not just a practice, it’s a value</h3><p>The zero-bug policy has a few major effects at Linear. One is obvious: We end up fixing a lot of bugs. Last year we fixed more than 2,000. In the last three months we’ve addressed more than 700.</p><p>Another effect is less obvious but just as important: The zero-bugs policy changes our relationship with our customers.</p><p>It’s not uncommon for Customer Support to file a bug in the morning—often through our Intercom integration—and have it fixed by lunch. That kind of turnaround allows us to turn a bad experience—an encounter with a bug—into an excellent one that changes their whole perspective on what it’s like to reach out to a company when something is broken.</p><p>Over time these experiences have molded the way our user base reacts to imperfections in the product. Instead of coming to us angry or frustrated, we find many users write to us in a spirit of collaboration—working hand in hand with us to make Linear a better product because they trust we’ll respond quickly. It also often turns them into Linear advocates:</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/5309a09bc5e4d42b55fc34d5f1c84ca5f64441e6-3904x2740.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2740" alt="Image of a tweet exchange on Linear&#x27;s support response."/></figure><p>Then there’s how the zero-bugs policy shapes the culture of our engineering team. One way is that it preempts bugs: because the team understands they’re going to have to fix all these bugs eventually, they work harder to avoid introducing them in the first place.</p><p>It’s also a way of establishing our values as an engineering team and sets the tone right away during the hiring process. Engineers who join Linear know we care deeply about quality and that part of their job will always be fixing bugs. It’s a clear signal that helps us attract the right people.</p><p>There’s no doubt that the zero-bugs policy requires us to reprioritize our effort. Our team shipped a lot of new features this summer and keeping up with bugs alongside that was a lot of work. But when we recently discussed, purely as a thought experiment, whether anyone would want to discontinue the practice, the answer was unanimous: Nobody could imagine going back, because to do so would mean accepting a lower-quality product.</p><p>And for us, that’s simply not an option.</p><p><em>If building in a zero-bugs environment appeals to you, check out our <a href="https://linear.app/careers#join-us">open roles</a>.</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How Commure uses Dashboards to track performance and guide planning]]></title>
            <link>https://linear.app/now/commure-dashboards</link>
            <guid>https://linear.app/now/commure-dashboards</guid>
            <pubDate>Wed, 10 Sep 2025 18:05:00 GMT</pubDate>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/1737efdb5f699e09f945c9ce5f347c89f9552233-3904x1758.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/0051b9c91e8283d13363786cbc874ae32cd80e1c-3904x2180.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/5a9e0b9949034af2bc281af383f82674e91626b5-3904x2040.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/1fda2fa55e3c4d82f13755700417dec8f43ac3a2-3904x2040.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/0674a8010f10a2c7d6fcdcddae38bbe67a267a84-3904x2040.png?q=95&amp;auto=format&amp;dpr=2"/><p>As teams grow, the surface area of their work expands. This makes it harder for leaders at every level of an organization to plan on both short- and long-term timescales. It’s easy to lose track of what’s happening day to day, and just as easy to miss slow-growing trends until they’ve already caused problems.</p><p>We built <a href="https://linear.app/docs/dashboards">Dashboards</a> in Linear to help with that. They let you bring together multiple insights in a single place so you can see where things stand and step in early when something’s off. Dashboards are fully customizable, allowing you to filter by team, dig into specific issues, and take actions directly from the page.</p><p><a href="https://www.commure.com/">Commure</a>, a healthcare technology company that supports over 400,000 clinicians, uses Dashboards to guide both short-term action and longer-term planning. They check some dashboards daily to stay on top of triage, SLA performance, and postmortem follow-through. Others they refer to at longer intervals to understand how engineering time is being spent and whether it matches the company’s priorities. One of the biggest impacts for Commure has been tracking whether different workstreams are moving in the right direction. Burnup charts, for example, give their teams a way to see if issue volume is increasing or decreasing over time.</p><p>The dashboards below are real examples from their workspace, shared by Myles Baumann, a senior product manager at Commure.</p><h3>1. High-Priority Issues Over Time</h3><p><strong>Intended user</strong>: Everyone</p><p><strong>Purpose</strong>: Track how the backlog is doing and how it’s spread across teams</p><p><strong>Scope</strong>: One product, many teams</p><p><strong>Usage</strong>: This shows how the backlog has changed over time and how it’s distributed across teams. Not all teams get the same number of high-priority issues, so this helps Commure see who’s carrying more load and how that’s shifting. It’s useful for just keeping an eye on whether things are trending in the right direction.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/1737efdb5f699e09f945c9ce5f347c89f9552233-3904x1758.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1758" alt="A chart that shows how the Commure backlog is doing and how it’s spread across teams."/></figure><h3>2. Feature SLA Tracking</h3><p><strong>Intended user</strong>: Everyone</p><p><strong>Purpose</strong>: Track SLA performance based on severity</p><p><strong>Scope</strong>: One product, many teams</p><p><strong>Usage</strong>: We have SLAs depending on how critical a feature is—P0, P1, or P2—and this dashboard helps Commure see how we’re doing. It shows how often we’re hitting or missing those SLAs, what our lead times are by severity, and how that breaks down by team.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/0051b9c91e8283d13363786cbc874ae32cd80e1c-3904x2180.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2180" alt="A dashboard for tracking SLA performance based on severity."/></figure><h3>3. Project Estimate Burndown and Investment View</h3><p><strong>Intended user</strong>: Product Manager, Engineering Manager</p><p><strong>Purpose</strong>: Understand where engineering time is going and whether project scoping matches reality</p><p><strong>Scope: </strong>One product, several teams</p><p><strong>Usage</strong>:<strong> </strong>The top chart shows cumulative effort across all active projects. It helps teams explain delivery timelines and surface cases where a project is taking more time than expected. The bottom chart splits out time spent outside of projects on feature requests, operational work, and more. It’s used to spot how much unplanned work is drawing attention away from roadmap commitments.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/5a9e0b9949034af2bc281af383f82674e91626b5-3904x2040.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2040" alt="The top chart shows cumulative effort across all active projects. It helps teams explain delivery timelines and surface cases where a project is taking more time than expected. The bottom chart splits out time spent outside of projects on feature requests, operational work, and more. "/></figure><h3>4. Insights Dashboard: Cycle Time by Assignee</h3><p><strong>Intended user</strong>: Product Manager, Engineering Manager, Team Lead</p><p><strong>Purpose</strong>: Provide context for performance-related questions</p><p><strong>Scope</strong>: Product-wide. Multiple engineering teams</p><p><strong>Usage</strong>: This dashboard visualizes cycle time by assignee, giving managers a way to spot patterns in how long individuals take to complete issues. It’s not used as a performance metric on its own, but it’s helpful in two ways: as a starting point to ask questions—like whether someone is getting poorly scoped tickets or not surfacing blockers—and as a way to validate anecdotal concerns. When it feels like someone isn’t keeping up, unusually long cycle times can help reinforce the case for follow-up.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/1fda2fa55e3c4d82f13755700417dec8f43ac3a2-3904x2040.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2040" alt="This dashboard visualizes cycle time by assignee."/></figure><h3>5. Engineering Hygiene Review</h3><p><strong>Intended user</strong>: Product Manager, Engineering Manager, Team Lead</p><p><strong>Purpose</strong>: Support regular board cleanup and planning</p><p><strong>Scope:</strong> Engineering team</p><p><strong>Usage</strong>: This dashboard is used to prepare for weekly or bi-weekly reviews. It shows high-priority issues that need to be addressed in an upcoming cycle, outstanding bugs, tickets missing estimates, and tickets that haven’t been assigned. Other views highlight metadata gaps—such as missing feature labels, ticket types, or notability flags—so that teams can keep pace with labeling standards. The goal is to make sure nothing slips through the cracks and that every issue is accounted for in the current or upcoming cycle.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/0674a8010f10a2c7d6fcdcddae38bbe67a267a84-3904x2040.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2040" alt="This dashboard is used to prepare for weekly or bi-weekly reviews. It shows high-priority issues that need to be addressed in an upcoming cycle, outstanding bugs, tickets missing estimates, and tickets that haven’t been assigned."/></figure><p><em>Dashboards are available to workspaces on our <a href="https://linear.app/pricing">Enterprise</a> plans. See the <a href="https://linear.app/docs/dashboards">docs</a> to learn more.</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How we built Triage Intelligence]]></title>
            <link>https://linear.app/now/how-we-built-triage-intelligence</link>
            <guid>https://linear.app/now/how-we-built-triage-intelligence</guid>
            <pubDate>Wed, 03 Sep 2025 14:03:36 GMT</pubDate>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/7653d1901fd226336df113001467a5260a6aba0a-2496x2048.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/69921f6e85c884853a9d9c2d3bf706dbdd2077c0-2496x648.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/9734cf5617e5a20ef7ea14b84f0ab9f9c0086f1a-2496x2000.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/76e0dfae82e8fe0ddff2b8d49782a6228954b1ba-2496x1412.png?q=95&amp;auto=format&amp;dpr=2"/><p>To provide genuinely helpful signals for product decisions, a backlog needs to be well-organized, with similar issues grouped together and labels applied consistently. But organizing a backlog has historically been manual work that doesn’t scale. It tends to depend on the institutional knowledge of a few people who aggregate and classify incoming issues.</p><p>Last month we launched Triage Intelligence to help product teams handle incoming issues and put them in the right place in the backlog. It uses a combination of search, ranking, and LLM-based reasoning to make suggestions as new issues come in—drawing on your existing backlog as a data set to understand how similar work has been organized in the past. It can flag duplicates, link related issues, and recommend properties like labels or assignees, all with a brief explanation so teams can triage quickly and consistently.</p><p>We built Triage Intelligence around a few core principles. First, trust—if you are going to act on AI-generated suggestions, you need to see where they came from and believe in their accuracy. Second, transparency—making the model’s reasoning visible so that teams can validate its output and improve it over time. And third, making the feature feel like a natural extension of Linear, not an add-on. Here’s how we did it.</p><h3>Better search + bigger models</h3><p>The process started earlier this year when we were rebuilding our search engine. We were moving from a basic keyword-based system to a more general-purpose semantic backend. At the time, we were already surfacing similar issues using vector search and semantic similarity. As we rebuilt our search infrastructure, we wanted to unify on a single search approach across Linear while also improving how we detect and surface related issues.</p><p>The new search system surfaced better candidate issues from the backlog to match against incoming issues. That candidate set became the input to our LLMs, which would evaluate each incoming issue and decide whether it was a duplicate, loosely related, or unrelated.</p><p>Our first version used small models like GPT-4o mini and Gemini 2.0 Flash. We gave them tightly scoped prompts and rigid workflows to flag duplicates, and they did fine in straightforward cases. But they faltered when context-sensitive, nuanced decision-making was required because they could only work with the information we provided up front. If something important was missing, they had no way to go find it.</p><p>That limitation led us to an agentic approach, where the model could pull in whatever additional context it needed from Linear’s data. To make that work, we switched to larger models like GPT-5 and Gemini 2.5 Pro, which could handle more complexity in both inputs and reasoning. That shift unlocked better suggestion quality—especially for fuzzier or more complex issues—and made it possible to support custom, user-defined guidance to steer the data sourcing and decision-making process for each workspace.</p><p>Beyond detecting duplicates, Triage Intelligence could now reliably suggest related issues, recommend properties like labels or assignees, and explain their reasoning. But these new capabilities brought a new challenge: how to present this richer, more deliberate decision-making in a way that still felt fast and trustworthy.</p><p>That became a design question as much as a modeling one and led to the UI patterns we built for Triage Intelligence.</p><h3>Design for reasoning models</h3><p>Speed has always been a core principle in Linear. If something takes more than a few hundred milliseconds, we try to make it faster. Smaller models can get close to that bar, but the larger, frontier models behind Triage Intelligence run multi-step reasoning and matching processes that are fast compared to a human, but slower than Linear’s usual deterministic systems. Designing for that meant balancing two goals: making the feature feel responsive, even when it’s still working, and making its reasoning visible so people can trust the results.</p><p>In the triage view, Triage Intelligence lives inside its own dedicated module. We wanted it to be visible enough to be useful, without adding extra noise to an already dense screen. The suggestions it makes—assignee, labels, projects, related issue links—use the same visual language as the rest of Linear, so they blend naturally into the workflow. And we’re careful not to blur the line between issue metadata set by humans or rules and suggestions from Triage Intelligence. The UI makes that distinction clear, so you always know what came from the system and what came from your team.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/7653d1901fd226336df113001467a5260a6aba0a-2496x2048.png?q=95&amp;auto=format&amp;dpr=2" width="2496" height="2048" alt="Screenshot of Product Intelligence at an angle"/></figure><p>From there, each piece of the UI reinforces trust and transparency. Hovering over a suggestion reveals the model’s reasoning in plain language along with alternative suggestions when applicable. At the bottom of the module we display the model’s “thinking state” along with a timer. Our goal was to give you a sense of progress and to let you keep tabs on its activity, so Triage Intelligence feels active rather than idle throughout the reasoning process.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/69921f6e85c884853a9d9c2d3bf706dbdd2077c0-2496x648.png?q=95&amp;auto=format&amp;dpr=2" width="2496" height="648" alt="A screenshot of Product Intelligence&#x27;s thinking state"/></figure><p>Then, for deeper visibility, we incorporated a thinking panel—using the same approach we employ with Linear for Agents—that lets you see the full trace of the model’s research: the context it pulled in, the decisions it made, and how additional guidance shaped the outcome.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/9734cf5617e5a20ef7ea14b84f0ab9f9c0086f1a-2496x2000.png?q=95&amp;auto=format&amp;dpr=2" width="2496" height="2000" alt="A screenshot of the Product Intelligence thinking panel."/></figure><p>In addition, you can use the Additional Guidance setting to fine-tune Triage Intelligence at the workspace or team level with natural language prompts. It’s a quick way to steer suggestions toward your priorities, which is especially valuable for larger teams with multiple products or brands, where the ecosystem—and the triaging process—is more complex.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/76e0dfae82e8fe0ddff2b8d49782a6228954b1ba-2496x1412.png?q=95&amp;auto=format&amp;dpr=2" width="2496" height="1412" alt="A screenshot of the Additional Guidance settings page in Product Intelligence."/></figure><p>Each of these design choices ties back to the principles we started with: building trust, keeping the reasoning transparent, and making Triage Intelligence feel like it’s always been part of Linear. (These are also general principles we codified in our recently released <a href="https://linear.app/developers/aig">Agent Interaction Guidelines</a>.)</p><h3>The future of Triage Intelligence</h3><p>From here we intend to move in the direction of more automation and decisions based on richer context. Triage Intelligence will improve as it draws on a deeper understanding of your workspace and as we adopt newer models and techniques. With that expanded context, it will be able to deliver more accurate suggestions and handle a wider range of scenarios. We’re adding new capabilities outside of just triage support, including using LLMs to draft project and initiative updates.</p><p>Automation will come gradually and with control. If you trust certain types of suggestions, you’ll be able to opt in to having them applied automatically—whether that’s assigning an issue, adding a label, or routing work to the right team—while still keeping full visibility into what’s happening.</p><p>Every step in that direction makes your backlog more valuable. Each time Triage Intelligence takes an action, it’s quietly improving your team’s shared memory—making it more complete, accurate, and actionable.</p><p>Triage<em> Intelligence is available on our <a href="https://linear.app/pricing">Business</a> and <a href="https://linear.app/pricing">Enterprise</a> plans as a technology preview. To learn more read the <a href="https://linear.app/docs/product-intelligence">docs</a>.</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Giving our team liquidity through Linear’s first tender offer]]></title>
            <link>https://linear.app/now/giving-our-team-liquidity-through-linear-s-first-tender-offer</link>
            <guid>https://linear.app/now/giving-our-team-liquidity-through-linear-s-first-tender-offer</guid>
            <pubDate>Wed, 27 Aug 2025 14:00:11 GMT</pubDate>
            <content:encoded><![CDATA[<p>As part of our <a href="https://linear.app/now/building-our-way">Series C</a>, we completed a tender offer that gave current and former teammates the opportunity to sell a portion of their vested options at a $1.25B valuation, the same price offered to our investors.</p><p>From the beginning, we’ve tried to design Linear’s equity program to be as employee-friendly as possible. That comes from my firsthand experience at previous startups, where I had to exercise options within 90 days and then hold shares indefinitely with almost no flexibility. Often there was little transparency around early exercise, and in some cases the option wasn’t even offered.</p><p>At Linear, we wanted to do better. Since the early days, we’ve offered a 10-year extended exercise window, early exercise in the US, and as much transparency as possible on the performance of the business, starting from when we present a job offer. This tender offer builds on that approach. By creating a path to liquidity, we’ve given our people the option to realize some of the value of their ownership today, while still holding the majority for the future.</p><p>We’ve tried to think more broadly about what helps people stay at companies they care about. Too often, people leave not because they lose motivation but because their needs change. They may need cash for a life event, time away to reset, or a chance to refresh their equity to continue having skin in the game.</p><p>At Linear, we call our approach to addressing these realities <strong>Linear Infinity</strong>. The idea is to make it easy for people to keep choosing Linear, as long as the work remains fulfilling. Infinity includes paths to liquidity, such as this tender offer. It also gives teammates the ability to take real time away: a fully paid month off after four years, and an additional paid month every two years after that, with options for longer breaks through flexible unpaid leave. This allows people to recharge without having to step away from the company. We also offer equity refreshers, so ownership continues to grow without forcing a job change every few years.</p><p>We have built Linear differently than most startups. We have grown profitably, sustainably, and predictably, while keeping the team small and focused. Our hope is that people choose to stay and contribute far beyond the typical two- or four-year tenure, and Infinity is designed to make that possible.</p><p>I’m proud we were able to do this at such an exciting moment in Linear’s journey. But more than anything, I feel grateful. None of this would exist without the people who chose to put their time, talent, and care into building Linear. Whether you’re part of the team today or part of our alumni community, thank you.</p><p>If you’re excited about building the future of software with us, we’re hiring. <a href="https://linear.app/careers">Check out our careers page</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How Cursor integrated with Linear for Agents]]></title>
            <link>https://linear.app/now/how-cursor-integrated-with-linear-for-agents</link>
            <guid>https://linear.app/now/how-cursor-integrated-with-linear-for-agents</guid>
            <pubDate>Thu, 21 Aug 2025 14:46:30 GMT</pubDate>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/119b401018a67c9911cb39f7e58ceb462494f38d-1952x768.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/580d8c9755ea3476a5e4b1704f0e0e0b62a79e8d-1952x928.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/8aa3b375363166e58f09ff4fa2c13bbe5bfbe4b6-1952x720.png?q=95&amp;auto=format&amp;dpr=2"/><p>Over the last few years, powerful new tools have emerged for software development. They’ve delivered big gains on their own, and one of the most important productivity levers now is making them work closely together.</p><p>That’s why today we’re announcing a new <a href="https://cursor.com/">Cursor</a> integration for Linear, letting you assign issues directly to Cursor agents the same way you already assign issues to teammates. Many teams already use both Linear and Cursor, and this integration ties them together at the point of maximum leverage: inside Linear, where teams already manage their work and where the full context lives to spin up and manage high-quality agents.</p><p>Today, Cursor agents can take on coding tasks, open pull requests, and update progress back in Linear. The benefits of this tight integration will only grow as agents continue to improve, teams get used to writing issues with the context needs of agents in mind, and it becomes possible to have agents work with increasing automation—drafting PRs before you even open the issue, or tackling multiple issues at once in the background.</p><p>To share more about the integration—what it took to build and where it’s going next—Kevin Hartnett from Linear spoke with <a href="https://x.com/TheRohanVarma">Rohan Varma</a>, the product manager from Cursor who led the project. We talked about the workflows this supports, the technical decisions behind the integration, how Rohan sees agents evolving inside Linear, and advice he has for other teams building agent integrations with Linear.</p><p>This interview has been edited for clarity.</p><hr/><h4>For people who haven’t seen it yet, what does the Cursor–Linear integration do?</h4><p><strong>Rohan</strong>: Basically, you can assign work to Cursor, you can mention Cursor, and you can also follow up in the same session to Cursor. We’ll show you the thoughts and tools, to-dos, as it progresses.</p><p>For a lot of users, working with coding agents is still new. The reliability of these coding agents is improving a ton week over week, but it’s not perfect. So the assumption here is: how does a new user understand and use these agents? How do they build trust in them?</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/119b401018a67c9911cb39f7e58ceb462494f38d-1952x768.png?q=95&amp;auto=format&amp;dpr=2" width="1952" height="768" alt="A screenshot of a comment thread in Linear, where a user tells @cursor to take a look at the issue"/></figure><h4>How does this kind of workflow build that trust?</h4><p><strong>Rohan</strong>: We think it’s important that you can go to Cursor, open it up with the code, see what the agent’s done, and clean it up yourself if you want, or give the agent feedback on its approach. A lot of that is best done in an IDE where you can explore the code and build confidence—or lose it—or understand where the agent went wrong.</p><h4>How do you see Linear and Cursor complementing each other?</h4><p><strong>Rohan</strong>: Linear is the expert on product, customer, and project context. Cursor is the expert on the codebase, development history, and engineering practices. When you put those together, agents start with a much more complete picture. That makes their output better and lets teams move faster—because the agent isn’t starting from scratch.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/580d8c9755ea3476a5e4b1704f0e0e0b62a79e8d-1952x928.png?q=95&amp;auto=format&amp;dpr=2" width="1952" height="928" alt="A screenshot of the same comment thread as in the previous image. The Cursor agent is now connected and is reviewing the the current implementation."/></figure><h4>What kinds of issues does the agent do well with?</h4><p><strong>Rohan</strong>: For a while they’ve been very effective for smaller changes, where they can pattern match or easily verify correctness, and for larger tasks where power users provide rich prompts with clear context, file pointers, and an outline of the approach. There’s also a category of more difficult changes where the agent can ramp on codebase context a lot faster than I can, like making a fix in a really old, tricky part of the codebase.</p><p>I think the bigger point, though, is that agent capabilities are expanding rapidly as models get better. The things they’re great at have already progressed from small issues to now medium ones, and soon to really large, complex tasks without much user iteration.</p><h4>How does this integration change the kind of work teams can realistically take on?</h4><p><strong>Rohan</strong>: It lowers the activation energy for getting work done. A lot of teams have P2s or P3s that linger in the backlog because they’re not urgent enough to justify the context switch. With this integration, those tickets can get scoped, have a PR drafted, and be ready for review without much extra effort from an engineer. It’s a way to make progress on the polish and quality work that otherwise gets deprioritized.</p><h4>What was it like to build on the Linear platform?</h4><p><strong>Rohan</strong>: It was overall very easy. I think I got the new API up and working in a day. Working with Tom [Linear’s head of engineering] and Mingjie [a Linear engineer] over Slack was very easy. Having that high-fidelity touchpoint with the Linear team helped a lot. Having the Linear SDK and the auto-generated GraphQL types also helped a lot. It just reduces how much you have to look things up in the documentation.</p><h4>Can you tell me about a moment where you and the Linear team troubleshot something together?</h4><p><strong>Rohan</strong>: One was understanding the agent API data model and whether it was safe to always assume an issue ID exists. Tom explained that in the future there might be agents acting outside issues, so we made our code handle missing IDs. That kind of long-term context was valuable. I also gave feedback on surfacing the “open in Cursor” link more prominently. Our workflow often starts in Linear but continues in Cursor, so it should be easier to get back there.</p><h4>Were there any tricky parts of the integration?</h4><p><strong>Rohan</strong>: The main one was working with webhooks. You have to set up and run your own instance, so it’s a little hard to collaborate with other people on the team. If multiple people are working on webhooks, you create a Linear test app, but then it has to talk to my local server on my laptop and sometimes someone else’s laptop. If we both set up things to forward events to our laptops, it gets confusing.</p><p>Another thing that could be better is having an even deeper developer experience for running locally and testing everything end-to-end.</p><h4>We’ve developed Agent Interaction Guidelines for agents in Linear. Did any of those ideas come up in your work?</h4><p><strong>Rohan</strong>: One thing we talked about was how often the agent should leave comments in Linear. It’s tempting to have it comment whenever it does something, but that can get noisy and fatigue users.</p><p>Another principle I noticed was “<a href="https://linear.app/developers/aig#an-agent-cannot-be-held-accountable">an agent cannot be held accountable</a>.” That’s important for us—it solves the problem of communicating to our users that ultimately it’s the human engaging with the agent who’s responsible. Linear encoding that as a design really helps set the default. I was also pleasantly surprised by the support for “thoughts” and “tools” in the API. That maps well to our agent model, and I was able to quickly <a href="https://linear.app/developers/aig#an-agent-should-be-clear-and-transparent-about-its-internal-state">show that internal state</a> to the user through Linear.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/8aa3b375363166e58f09ff4fa2c13bbe5bfbe4b6-1952x720.png?q=95&amp;auto=format&amp;dpr=2" width="1952" height="720" alt="A screenshot of the issue sidebar in Linear that shows both the primary assignee of the issue (a human) and the agent the issue has been delegated to (Cursor)"/></figure><h4>The API now has a “sessions” abstraction, which represents the interaction between an agent and the Linear workspace. How did that affect the way you built the integration?</h4><p><strong>Rohan</strong>: It was pretty simple to work with overall. It complicates things a little bit because you can’t just key things off an issue. If there’s no issue, we just say we don’t know how to work with this. But it simplifies the idea of how the agent gets back to the user. Rather than trying to figure out which comment to edit or starting a thread, it’s a much simpler API for what we need.</p><h4>What would you like to see from Linear in the future?</h4><p><strong>Rohan</strong>: I wonder if you guys would have a taxonomy of some sort at some point. Things like bug, typo, feature, documentation, testing, tech debt, or refactoring. I think it’d be interesting if the platform itself understood that and could give agents a cleaner decision-making process on what to do. It would help with refusals—if it’s too hard or underspecified, we shouldn’t try to solve it. You could also use different models or budgets depending on the work.</p><h4>What would that allow Cursor to do?</h4><p><strong>Rohan</strong>: Mostly it’s just moving up the automation hierarchy. Imagine label-based or rule-based triggers that automatically assign issues to agents—“in this project, with this label, and t-shirt size small or less, let the agent handle it.” That’s a stepping stone toward richer collaboration with coding agents.</p><h4>What else is part of your vision for Cursor in Linear?</h4><p><strong>Rohan</strong>: I think it’d be really interesting to see how agents can help do planning in Linear. Potentially take a lot of the context from a large ticket and create smaller Linear issues out of it. Or take something that an agent isn’t comfortable working on and turn it into smaller pieces that it can work on.</p><h4>Finally, what advice do you have for someone building an agent integration with Linear?</h4><p><strong>Rohan:</strong> I’d recommend thinking about how your agent will handle longer-running tasks. The Linear API is designed so you accept the work, queue up the task, and then update back when it’s done. This works fine for quick jobs, but for something that takes hours you need a way to check in periodically or stream updates back. That way the user knows it’s still making progress. And think about how your agent communicates in those updates—like a new hire explaining what they did so the reviewer can quickly decide if it’s ready.</p><p><em>To learn more, read about the <a href="https://linear.app/integrations/cursor">Cursor integration</a> and check out our <a href="https://linear.app/developers/agents">agent developer docs</a>.</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Quality Wednesdays: How we trained our team to see what doesn’t work]]></title>
            <link>https://linear.app/now/quality-wednesdays</link>
            <guid>https://linear.app/now/quality-wednesdays</guid>
            <pubDate>Wed, 13 Aug 2025 14:41:47 GMT</pubDate>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/c177e95402a23d0688cc363babecd94cfd9155d3-3904x1558.png?q=95&amp;auto=format&amp;dpr=2"/><p>In early 2023 at an offsite in Tenerife, our European engineering team did a series of exercises that ended up changing the way we work.</p><p>The first was a test of sorts. I showed the team a short screen recording of a small part of the Linear app: a series of three buttons, each illuminating when the mouse hovered over them and going dark when the mouse moved away. I asked the team if they could tell what was wrong with the interactions. Even after watching it a few times, no one could see it. That’s when I realized we probably weren’t looking at the right things.</p><video src="https://webassets.linear.app/files/ornj730p/production/9495462642be1fc340a9921c0cc688c09f2c2006.mp4" width="788" height="558" poster="https://webassets.linear.app/images/ornj730p/production/e68532de3ea7895ecf228b1c193b1337ed908929-1576x1116.png?q=95&amp;auto=format&amp;dpr=2"></video><p>That same afternoon we did a more open-ended survey. One by one we scrutinized specific parts of the application like display options and issue lists. I gave the team the prompt to write down everything they noticed that wasn’t quite as good as it could have been. I didn’t know whether we’d turn up a long list or barely notice anything at all. Even so, I was surprised by the outcome: Each person noticed something different—small quality flaws that had been invisible to everyone else, including me.</p><p>From these offsite experiences, two things became clear. The first was that the pursuit of quality is not an individual sport. It’s hard to perceive subtle problems with a UI you yourself have built. Other people need to point out problems, and if you do it as a group, you’ll come closer to gaining a comprehensive view of everything that’s wrong with a product.</p><p>The second thing I realized is that I wanted a way to make sure we kept quality top-of-mind in everything we did. At the same time, I knew the team was too busy to drastically reallocate how we were spending our time. We needed quality to be a habit, like brushing your teeth. Something you just do without thinking too much about it. No one ever says they don’t have time to brush their teeth. I wanted our team to begin thinking about quality in the same way.</p><p>A new practice came out of that offsite, which we formalized a few weeks later. In my announcement I asked that each engineer find and fix some defect that’s decreasing the overall quality of the app. I added that these fixes shouldn’t address “bugs per se,” but rather, small imperfections that “degrade the overall experience you have with Linear.” I asked the team that we henceforth devote our Wednesday team meeting (one of three standups we have each week) to presenting our quality fixes. That was the start of a ritual we now call Quality Wednesdays. It’s been going ever since.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/c177e95402a23d0688cc363babecd94cfd9155d3-3904x1558.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1558" alt="A screenshot of the Slack message Tuomas sent to the team"/></figure><h3><strong>Making quality a habit</strong></h3><p>Everyone on the team approaches Quality Wednesdays in their own way. One engineer maintains a note file where he records everything he encounters during the week that seems off to him. Then as Quality Wednesday approaches, he’ll fix one or two. Others make quality fixes in the natural course of their work.</p><p>There is no shortage of places to look. Some people make quality fixes on a theme. They’ll spend a month or two scouring the menus in “Preferences,” or looking at keyboard navigations or accessibility features. The way the product appeared on mobile was a popular hunting ground before we had a native mobile app. Not all controls were optimized for small spaces, so often you could find a quality fix just by narrowing your browser and seeing what didn’t look right.</p><p>Here is a fix from this June that standardized the sizes of adjacent buttons:</p><video src="https://webassets.linear.app/files/ornj730p/production/e3bc20886a8036791dde5ccd48170640a3e75e85.mov" width="682" height="480" poster="https://webassets.linear.app/images/ornj730p/production/fb2ab75c32bcd19272f53cbafa5f7c0fa9adffd6-1364x960.png?q=95&amp;auto=format&amp;dpr=2"></video><video src="https://webassets.linear.app/files/ornj730p/production/1145fa1f60f227ec8dd44a91abe7e1f1e6d45b2b.mov" width="682" height="480" poster="https://webassets.linear.app/images/ornj730p/production/f43023bf161d0eb0486a655372be5cf493937567-1364x960.png?q=95&amp;auto=format&amp;dpr=2"></video><p><em></em></p><p>And here’s a recent UX fix to stop the height of the issue composer from changing when the user adds a line:</p><video src="https://webassets.linear.app/files/ornj730p/production/0e7893fae505bd54b767deaa72b740789e3c9d0f.mov" width="1702" height="814" poster="https://webassets.linear.app/images/ornj730p/production/1943b60eaee947a3d351eac61b3e1215a2399711-3404x1628.png?q=95&amp;auto=format&amp;dpr=2"></video><video src="https://webassets.linear.app/files/ornj730p/production/2d549676978e23db4a004ab0992722cc29148146.mov" width="1720" height="814" poster="https://webassets.linear.app/images/ornj730p/production/771b0359e60335dc9fa783a55d9f145e3bbe7d9a-3404x1628.png?q=95&amp;auto=format&amp;dpr=2"></video><p>Many of these quality fixes take 30 minutes or less. None should take more than an hour or so. Keeping the time commitment low helps to make it a sustainable practice. Consistency matters a lot too. It’s not strictly speaking a requirement that each engineer make a quality fix each week. But if someone misses a week, I’ve been known to joke, “That’s OK, just bring two next week.” The point is that attention to quality only works when it’s a habit, and as with any habit, it’s easy to lose momentum if you miss a rep.</p><h3><strong>Catching mistakes before they happen</strong></h3><p>Over the last two years we’ve completed more than 1,000 small acts of polish as part of Quality Wednesdays; we track them inside Linear with a “quality” label.</p><p>Most of these fixes are small on their own, but together they completely change how the product feels. They allow us to push Linear’s extremely high quality bar even higher.</p><p>These 1,000+ improvements are also just one part of the impact Quality Wednesdays has had on our team and on the product. The bigger change is in how we build new things in the first place. This is how one engineer on the team put it recently: “Since you train this muscle over time, you start noticing patterns and common pitfalls while building stuff, so fewer of these papercuts ship.”</p><p>On that point, I think about that screen recording I showed the team more than two years ago, of the mouse hovering over three buttons. The problem with it—the one that the team couldn’t see at the time—was that the animations were inconsistent: one of the buttons darkened instantly when the mouse moved away, rather than fading out over 150 milliseconds as it should have.</p><p>I think everyone on the team would catch that now. But more importantly, because of Quality Wednesdays, it’s also far less likely to arise.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Our approach to building the Agent Interaction SDK ]]></title>
            <link>https://linear.app/now/our-approach-to-building-the-agent-interaction-sdk</link>
            <guid>https://linear.app/now/our-approach-to-building-the-agent-interaction-sdk</guid>
            <pubDate>Fri, 01 Aug 2025 15:12:19 GMT</pubDate>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/9025b9a0e5823f517ee413a0a3ec06cc2618cbe9-3904x2400.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/5acee5cffc2589faa2080d77eb3dff87069538f6-3904x1366.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/e58773e46dd90c042a6edcce5465954e964c2ed7-3904x1610.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/d70fe4088d15bd324eaeec76d1531652edea106c-3904x1908.png?q=95&amp;auto=format&amp;dpr=2"/><p>By late last year it was clear that agents were improving rapidly. People were tweeting about them, prototyping with them, and sharing demos of newly derived, end-to-end agentic workflows. It seemed obvious that they were going to fundamentally change the way products are built. Instead of spending most of their time writing code, product teams were poised to reorient themselves around managing context and reviewing outputs.</p><p>We recognized that Linear was a good fit to become the orchestration layer where humans and agents interacted. Many teams did most of their product work in Linear already; agents just needed to meet them where they were. And, as a platform, Linear already had a strong foundation for third-party interaction: OAuth apps, scoped permissions, user roles, a rich API. The building blocks were there.</p><p>The work was figuring out how to bring agents into the system in a way that felt natural, adding only what was necessary. At the same time, we wanted to stay flexible. Developers were just starting to explore what agents could be, and we didn’t want to box them in.</p><p>We started thinking in terms of flexible guardrails—clear platform primitives and opt-in constraints that could guide behavior without limiting what agents were capable of now and in the future. Later we codified this thinking into our <a href="https://linear.app/developers/aig">Agent Interaction Guidelines</a>. Here’s how we got there.</p><h3>Agents as first-class users</h3><p>Before agents could participate in work, they needed to exist in the workspace. We already had a model for third-party apps—they could authenticate via OAuth and use the API to create issues, leave comments, and sync data—but these apps weren’t proper users. You couldn’t assign them work, mention them in a thread, or see what they were doing.</p><p>To enable that, we added a new actor mode to the OAuth flow: <code>actor=app</code>. When this actor mode is used, the app installation process creates a dedicated user to represent the agent inside the workspace. This dedicated user has their own OAuth token that is tied to specific scopes and teams that the agent can access. The scopes are requested by the agent’s developer, but the team access is determined by the user installing the agent into their workspace. The agent now has its own identity, token, and permissions within the workspace, all of which can be managed by workspace admins. Treating agents as first-class users follows a principle in our Agent Interaction Guidelines: <a href="https://linear.app/developers/aig#an-agent-should-inhabit-the-platform-natively">an agent should inhabit the platform natively</a>. </p><figure><img src="https://webassets.linear.app/images/ornj730p/production/9025b9a0e5823f517ee413a0a3ec06cc2618cbe9-3904x2400.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="2400" alt="A screenshot of the command menu in Linear"/></figure><p>Once installed, they can show up in the assignee dropdown. They can be tagged in comments. You can click on their name and see what they’re working on. And because they’re clearly marked as agents—not people—the human-agent distinction is always visible. This aligns with another principle in our Agent Interaction Guidelines: <a href="https://linear.app/developers/aig#an-agent-should-always-disclose-that-it&#x27;s-an-agent">agents should always disclose that they are agents</a>.</p><h3>Scoping agents’ work</h3><p>Once we had a clean way to create agent identities, the next question was: What should they be able to do?</p><p>We wanted developers to be in control of whether their agent should appear in the assignment menu, or if their agent should be invokable through mentions. So we added two new scopes to the OAuth model: <code>app:assignable</code> and <code>app:mentionable</code>.</p><p>These scopes are opt-in. If you’re building an agent that should take on work—like getting assigned issues or tasks—you include <code>app:assignable</code>. If your agent needs to respond when mentioned in a comment or a document, you add app:mentionable. If you don’t include them, your agent won’t show up in those places. That made it easy to keep existing apps unchanged, and gave developers a clear way to opt into more interactive behaviors.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/5acee5cffc2589faa2080d77eb3dff87069538f6-3904x1366.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1366" alt="A screenshot of a comment field in Linear with the user @mentioning an agent"/></figure><p>The nice thing about this model is that it sets you up to iterate. You might start with a low-touch app—one that listens for events or operates in the background—and later decide to make it more interactive. With these scopes, you don’t have to rebuild your app from scratch or worry about breaking anything for existing users. You just opt into the ones you need.</p><h3>How agents listen</h3><p>Once agents had identities and scopes, the next step was figuring out how they should listen. What should happen when an agent is assigned to an issue or mentioned in a thread? How does an agent know that it needs to do something?</p><p>Our first approach was straightforward. We already had a webhook delivery system and an inbox notification system, so we combined them. Since agents were now users in Linear, we mirrored a regular user’s inbox, just delivered via webhooks rather than inbox notifications or emails. If an agent was assignable or mentionable, we’d send a webhook any time it was tagged or assigned.</p><p>But that model pushed a lot of complexity onto the developer. You’d receive a notification webhook and have to figure out all the context around it: what the comment was about, whether the comment was in a thread, what issue it belonged to, and how to format your reply correctly. There were no patterns and no good defaults—some apps responded with an emoji, others with a new comment, and some didn’t respond at all. Even just replying to a comment took more code than it should have.</p><p>This lack of structure was intentional. We wanted to see what agents actually needed in the wild before codifying any abstractions. And now we have with “agent sessions.” </p><p>An agent session is an abstraction that represents the interaction between an agent and the Linear workspace, whether that’s an assignment, a mention, or some other trigger. When an agent session is created, we send a webhook with structured context: what happened, where it happened, who triggered it. Then the agent responds to the session directly, and we route that response to the right place in the product.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/e58773e46dd90c042a6edcce5465954e964c2ed7-3904x1610.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1610" alt="A screenshot of an agent session in a Linear issue"/></figure><p>Agent sessions also track state. An agent can be waiting for input, actively working, completed, or errored. This gives us a way to manage the lifecycle of the interaction, and it gives users more visibility into what the agent is doing and why. We capture these ideas in two principles in our Agent Interaction Guidelines: <a href="https://linear.app/developers/aig#an-agent-should-provide-instant-feedback">an agent should provide instant feedback</a> and <a href="https://linear.app/developers/aig#an-agent-should-be-clear-and-transparent-about-its-internal-state">an agent should be clear and transparent about its internal state</a>.</p><p>The agent session model is part of how we’ve tried to strike a balance between structure and flexibility. We don’t tell you what kind of agent to build, or how it should respond, but we do give you a consistent surface for handling core interactions.</p><h3>Delegating responsibility</h3><p>One of the early questions we wrestled with was how to divide responsibility between agents and humans. You might assign an issue to an agent to see how far it can get. But unlike when you assign an issue to a human teammate, the responsibility doesn’t transfer. You’ll review the output, tweak it, maybe go back and forth with the agent, but you’re still the one accountable for the result.</p><p>We considered using sub-issues to model that relationship, but it didn’t quite fit. Sub-issues are intentionally independent, each with its own status and owner. We wanted tighter control over this human-agent responsibility loop.</p><p>That’s where the idea of “delegation” came in. Instead of assigning issues to agents as you would to human teammates, you delegate to them. This changes the shape of the assignment: the issue still has a human assignee—someone accountable for the result—but it also has a delegated agent responsible for taking action. It creates a clean taxonomy: issues can only be assigned to humans, and only delegated to agents. That reflects a core tenet of our Agent Interaction Guidelines: <a href="https://linear.app/developers/aig#an-agent-cannot-be-held-accountable">an agent cannot be held accountable</a>.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/d70fe4088d15bd324eaeec76d1531652edea106c-3904x1908.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1908" alt="A screenshot of the agent delegation flow in Linear"/></figure><p>The feature also helps with visibility. Before delegation, you’d sometimes see an agent with dozens of issues assigned, but no clear sense of who was behind them. If you disagreed with what the agent was doing, it wasn’t obvious who to talk to. Now, any issue involving an agent has both a human assignee and an agent it’s been delegated to.</p><h3>The future of agents in Linear</h3><p>The current version of the Agent Interaction SDK provides a solid foundation but there’s still more to do, especially around helping agents share more of their thinking. Right now, most agents respond with a single comment or update. But as they take on more complex tasks, we want them to be able to explain what they’re doing and why. We’re already adding structured activity types—tool calls, thoughts, elicitations—that let agents surface their reasoning and make their behavior easier to follow.</p><p>We’ll keep evolving the platform, but with the same core ideas in mind. First, give developers the right set of primitives and guardrails to build agents that feel at home inside Linear. And second, stay flexible enough that our Agent Interaction SDK will work not just for the agents people are building today, but also for the ones no one has thought to build just yet.</p><p><a href="https://linear.app/agents">Learn more</a> about Linear for Agents.</p><p></p><p></p><p><br/></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Inside Mercury’s six-month journey building with AI agents]]></title>
            <link>https://linear.app/now/mercury-linear-ai-agents</link>
            <guid>https://linear.app/now/mercury-linear-ai-agents</guid>
            <pubDate>Wed, 16 Jul 2025 13:19:00 GMT</pubDate>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/9145ccda3243375772e877962ec3fbdfc2240f17-3904x1760.png?q=95&amp;auto=format&amp;dpr=2"/><p>This past March, <a href="https://mercury.com/">Mercury</a> held an internal hackathon and Matt Russell knew exactly what he wanted to work on.</p><p>Russell, a staff engineer at the seven-year-old financial technology company, was aware that coding agents were advancing rapidly and he wanted to see what they could do for Mercury. He and his hackathon team created a tool that allowed them to assign issues in Linear to third-party agents, which would return a pull request for engineers to review like any other PR. Almost immediately they saw the potential. The project showed how agents could reliably tackle simple, well-scoped tasks—like straightforward refactors or UI changes—under close human guidance.</p><p>Around the same time as the hackathon, Mercury joined the beta of <a href="https://linear.app/agents">Linear for Agents</a>, which gave Matt and his team a foundation for building more complex agentic workflows. In the months since, they’ve refined their ability to have agents one-shot routine tasks while learning how to guide agents step-by-step to accomplish more sophisticated projects. While many engineers at Mercury today use AI for code suggestions and, recently, in-editor agentic chat, a smaller group has started experimenting with other agentic workflows.</p><p>In the following conversation with Kevin Hartnett on the Linear team, Matt shares how Mercury is using agents today to move faster, reduce tech debt, and give internal teams more autonomy. He also talks through the company’s approach to shipping high-quality AI features, his strategy for keeping current on AI developments, and how he thinks engineering roles will change over the next five years.</p><p>This interview has been edited for clarity.</p><hr/><h4>What kinds of tasks have turned out to be a good fit for agents?</h4><p><strong>Matt Russell:</strong> It comes back to how much you’re in the loop—nudging the agent along—and how far you go. If you’re really trying to one-shot, it’s hard to add much complexity. The task needs to be repeatable or follow some common pattern. It’s just too easy for the agent to go the wrong way.</p><p>We’ve found that getting agents to create a plan, start with step one, and then move to step two works great, especially in-editor for larger tasks. Not trying to do too big of a project in one go is key. Otherwise, they lose context and go off the rails.</p><h4>So you stay involved and review each step?</h4><p><strong>Matt:</strong> Yeah, we’ve found a lot of success saying, “I’m trying to work on X feature, I’m gonna go back and forth with you for a while until we agree on the plan. Then, let’s execute step one,” which might be writing test cases first. That helps center the AI and keep it on track. That’s worked quite well.</p><h4>Tell us about one of your early experiments around providing agentic support for your ops team.</h4><p><strong>Matt:</strong> One of the best use cases we saw, and one we still use today, was with some configuration UIs that our operators use to review activities in Mercury.</p><h4>Where does the workflow originate?</h4><p><strong>Matt:</strong> We created a Linear Asks template around it. It would start from Slack where someone fills out five required fields, and it generates a ticket. The top part describes the task, and then there’s a “notes for AI” section at the bottom, with stuff like “Copy this approach” or “Refer to this PR as an example.” It was super repeatable and worked with almost no errors.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/9145ccda3243375772e877962ec3fbdfc2240f17-3904x1760.png?q=95&amp;auto=format&amp;dpr=2" width="3904" height="1760" alt="A flow chart outlining Mercury&#x27;s workflow: From Slack to Linear Asks to Linear Ticket to AI agent assigned to PR up to AI review to Human review to Merged"/></figure><h4>So you were able to empower your ops team to resolve technical issues almost completely on their own, without engineering support?</h4><p><strong>Matt:</strong> Yeah, we were able to make it so that some of these UIs could be built in a more self-serve way. An ops person could submit a ticket, it would get automatically assigned to an agent using a Linear template, and the agent would just pick it up, start working, and put up a PR. Then an engineer could review it—same as any other PR.</p><h4>Are these agent experiments usually initiated by individual engineers?</h4><p><strong>Matt:</strong> There’s broad support from the top for using AI, but a lot of the experimentation definitely comes from ICs. People will try something out, see that it works well for their use case, and then that bubbles up.</p><p>We also have a lot of venues for sharing—engineering all-hands, team showcase events—where people show off things that are working. So there’s been a steady stream of demos and examples lately. There are just so many interesting ways to weave these tools into workflows.</p><h4>How do agent reviews coexist with human reviews? Where do you see that balance going?</h4><p><strong>Matt:</strong> The way we work today is: engineers put up PRs, and you own whatever code you push. Yes, AI may be a part of the process, but it’s still your code. You’re expected to have understood it, and you do a self-review first.</p><p>We’re piloting CodeRabbit for AI-generated reviews. Those usually come faster than human ones, and I’ve seen some great feedback. It catches logic errors and other issues. But we still need human approval. I don’t think that’ll change soon. We’ll keep evaluating, but I expect a human-in-the-loop signoff for a long time.</p><h4>We’ve talked about internal workflows so far. How are you thinking about incorporating AI into the user experience at Mercury?</h4><p><strong>Matt</strong>: We’re trying to use AI in ways that enable not just our operations team, but also make the experience smoother for users. We started beta testing new search capabilities—kind of like what Linear has—where you can go from natural language into actual filters. So instead of figuring out how to select the necessary filter combinations a user can just say, “Show me how much I spent at Chipotle in the last two years,” and it’ll generate the right filter.</p><h4>When building AI features—where the underlying technology is so new—how do you make sure you’re hitting your quality bar?</h4><p><strong>Matt:</strong> We hold ourselves to a very high bar in terms of quality. That’s one of our core principles, and something we think differentiates us from more traditional banking software.</p><p>So it is a challenge. We want to be really comfortable with anything we put out there—especially because of the non-deterministic nature of LLMs. Whether that means using a reinforcement system on the backend to make sure it’s doing the right thing, or falling back to an alternative if it doesn’t seem quite right.</p><p>Or it could just mean putting it through really good testing or doing a slower rollout. We’re still figuring out exactly how this changes our approach. But we’re definitely conscious that we don’t want to sacrifice quality just to ship an AI feature. We want to make sure it’s actually improving things for our customers.</p><h4>You’ve mentioned agents helping you get to more of the backlog. How do you think that changes the product?</h4><p><strong>Matt:</strong> I think it’s great. There are enablements all across teams. Things that didn’t meet the threshold before can now get done: file a ticket, assign it to an agent, review the PR, and move on.</p><p>That lets us polish the product more and meet our standards. It also helps with tech debt—things that affect performance or help prevent bugs. I think that’s been really nice. One other thing I find interesting is how good agents are at larger refactors.</p><h4>How does that change the way your team works?</h4><p><strong>Matt: </strong>Upgrading to a new platform version or switching testing frameworks used to take months. Now you can say, “Switch from this library to that one—here’s an example,” and it can churn through it. That’s really freeing and you get productivity wins just by being on better systems.</p><h4>What do you think engineering work at Mercury will look like in the future?</h4><p><strong>Matt:</strong> It’s still early and things are evolving quickly, but maybe there’s a world in a few years where senior engineers act more like project leads over a bunch of agents. You’d scope the project, align with product, and then delegate the plan. From there, you’d check in and give feedback. It starts to feel more like a lead engineer working with junior engineers.</p><p>Once we can trust agents to run overnight, the pace of building is going to skyrocket. You’ll wake up, check in, and most of the feature will be done. That’s really exciting.</p><h4>If someone in a role like yours were just starting out with agents, say six months behind where you are now, what advice would you give them?</h4><p><strong>Matt:</strong> I mean, it’s a little cliché, but I think it’s really: experiment, experiment, experiment. Take the time to try different things, try new techniques, see what’s going to work for you. I would also highly recommend looking at AI code review. One of my favorite features is being able to teach these systems about patterns or styles at Mercury and automatically get those learnings applied across all reviews at scale.</p><p>One of the hardest things I find is keeping up with it. If I stop experimenting with the newest thing for a week or two, suddenly I feel like I’ve fallen quite far behind. So setting some kind of time budget—like maybe an hour a week, maybe more—to play with some new tools you’ve seen come out in the last week or so, I think is really key.</p><p></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building our way: Announcing our Series C ]]></title>
            <link>https://linear.app/now/building-our-way</link>
            <guid>https://linear.app/now/building-our-way</guid>
            <pubDate>Tue, 10 Jun 2025 12:40:00 GMT</pubDate>
            <content:encoded><![CDATA[<h3><strong>Six years, our way</strong></h3><p>I do want to take this opportunity to say that I’m proud of how far Linear has come. And how we’ve gotten here. For the last six years we’ve been able to build our way, with quality and purpose. We haven’t sacrificed what we care about.</p><p>I believe that building companies is a kind of craft. You’re creating something one of a kind. It’s shaped by a very specific group of people, in a very specific moment in time. You can never really replicate that or manufacture it again. And for most founders, it will be the only company you’ll ever build. That makes <em>how</em> you build just as important as <em>what</em> you build. Therefore, the way you craft should be important to you, and not just a means to an end.</p><p>Across the industry, there’s a tendency to pattern-match successful companies and rely on templates, playbooks and benchmarks. While it’s not completely wrong, trying to fit a mold often means missing out on truly unique opportunities.</p><p>I’m glad we’ve been able to resist fitting the mold. I’m glad we’ve resisted “best practices.”</p><p>We’ve built Linear without running a single A/B test and without chasing metrics or looking to data for answers. We didn’t do SEO and growth hacks. We’ve grown the team slowly and intentionally. Linear operates profitably and remotely. We built strong technical foundations before finding product-market fit. </p><p>We did this because our goal was to create quality experiences and the best product — not follow conventional practices. As a founder, your craft is to figure out how to make the most of your team, your strengths, the vision you have and the ways to get there. That doesn’t mean being stubborn. In the six years of building Linear, I’ve learned a lot and my thinking evolves constantly.</p><p>I’ve come to appreciate over time that saying no and setting constraints can help bring clarity. Whether in product, hiring or company operations, the constraints often reveal what’s really needed and bring out the right arguments and feedback. When you ask leaders to make a case for their hires, or when you ask deeper questions about why a customer needs a feature, you end up with something sharper.</p><p>And I’ve seen the response from teams using Linear every day and switching to it from other tools. Over 15,000 companies — including OpenAI, CashApp, Ramp, Scale AI, and Boom — choose Linear over legacy tools to move faster.</p><p>With this round, we’re marking our position as a company that is high growth, profitable and a standard for modern companies. But more importantly, we’re making a promise to our employees and every current and future customer:<strong> </strong></p><p>We’re not going anywhere.</p><p>We’re going to keep building, and keep fighting for the way we believe software should be built.</p><h3><strong>The next shift</strong></h3><p>So why raise this round now? I want to take a moment to talk about a generational change that is happening in how software is made. It’s a change in how teams work, how code gets written, how products get built.</p><p>Linear was built to be a generational company. It’s exciting to see this shift taking place. AI is changing the industry. We want to be the company that supplies the industry with the best possible workflows and tools for the new era.</p><p>It‘s hard to imagine a future where AI doesn’t play a major role, but like me, you are probably already tired of hearing about AI and its potential. The message is as widespread as it is thin.</p><p>Many AI launches today are announcing very broad tools that aim to address a large range of problems and use cases. While that shows the potential impact of AI, many teams still don’t know where to start or how to apply these tools to their workflows. There’s a gap between what these tools promise, and how teams actually use them. My gauge for what is hype and what is real is often measured by how close the person is to actually using the technology productively and realizing its value.</p><p>I’ve started to see a shift toward real AI productivity from our customers. They have been building AI features and agents that work with Linear. When you start to see this from your customer base, it means that people are truly motivated and adoption is happening. It’s no longer just a marketing message, actual use cases are taking shape.</p><hr/><p>Over the past few years, we’ve expanded Linear to support end-to-end workflows for building products, from customer discovery to planning to execution. Linear is unique because it actually manages all these workflows in a structured way and in a single product, bringing teams together.</p><p>We see this end-to-end workflow as the natural place to integrate AI and agents as purpose-built capabilities that serve teams, not just individuals. We’re focused on solving real, contextual problems within the workflow.</p><p>So this is all to say that AI is coming to Linear, but we are approaching it from the ground up, starting with real problems first. We are roughly aiming to do two things:</p><h4>Linear for Agents</h4><p>We’re making Linear the place where agents can be deployed and managed to act across product workflows. Whether it’s a third-party agent, an internal agent you’ve built, or something we’ve made ourselves, the goal is for agents to live and work inside the same system as your team. </p><p>As teams start to run more agents across more workflows, coordination becomes important. It shouldn’t matter which agent you’re working with. Interacting with an agent should feel purpose-built, efficient, and integrated.</p><p>This will allow teams and individuals to utilize agents day to day and in parallel with their own work. Agents can solve annoying problems or maintenance tasks, low priority items or even hard broad problems, asynchronously. As Linear is a place to coordinate work across many builders, it will also be the place to coordinate work for agents.</p><h4>Linear AI</h4><p>Because Linear already covers a wide range of product-building workflows, we are designing AI features that make those workflows more effective or automated. Helping teams create issues smarter, triage, categorize and route issues automatically, or summarize feedback and surface patterns that might have gone unseen.</p><p>These are not separate AI features. They’re built into the workflows themselves. Just like every other feature in Linear, they’re crafted with care, made to integrate seamlessly and designed to make you faster.</p><hr/><p>We’re continuing our mission to inspire and accelerate builders.</p><p>Thanks to all our employees, customers and investors.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why is quality so rare?]]></title>
            <link>https://linear.app/now/why-is-quality-so-rare</link>
            <guid>https://linear.app/now/why-is-quality-so-rare</guid>
            <pubDate>Tue, 27 May 2025 17:45:53 GMT</pubDate>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/a2dec1735f908ec98952ba28205a94d1bdf2e1ad-1952x1024.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/6ddc7d284793779c2a71f17c048054b8a8fdd00e-1952x1024.png?q=95&amp;auto=format&amp;dpr=2"/><p>The modern world has made huge advances in knowledge, technology, and skill. We can build faster than ever. We know more than ever. Yet quality still feels so rare. So many things feel unfinished, broken, or forgettable – why?</p><p>That’s the question I’ve been trying to answer, almost my whole life. I remember as a kid, seeing bikes at the store, some of them just felt wrong. I couldn’t understand why someone would go through the effort of making something and not make it beautiful.</p><p>Later in my life, I realized it’s because many don’t care, many opt for cost, and many just do what’s easy. What I was noticing, even as a child, was the presence or absence of craft.</p><h4><strong>Craft happens in cycles</strong></h4><p>Before machines, everything was made by hand. A tool, a chair, a door. They reflected the skill and care that was put into them. Some things were rough. But when someone puts their full attention into the work, the result could be truly great.</p><p>This is what craft is about — the deliberate attention put into making something excellent, not because someone is checking, but because it matters to the maker.</p><p>Then came the industrial revolution and mass production. We started losing the connection to craft. We began to optimize for costs, speed, and quantity.</p><p>We’ve been living our own version of this in the software industry. In the beginning, small teams crafted software with care. They took pride in what they built.</p><p>But over time, the teams grew and the process started to look more like a manufacturing line. As we learned to ship to the cloud multiple times a day, we started to change how we work and think.</p><p>“Just ship it.”</p><p>“Move fast and break things.”</p><p>We replaced purpose with metrics. If it didn’t move a metric, it didn’t matter. Even we, as designers, stopped asking; “Does this feel right?.” Instead, we started asking: “Does it convert?”</p><p>Experiments and A/B testing replaced judgment. Optimizing for a <em>process </em>replaced craft.</p><p>The interesting thing is that this cycle keeps happening in the same way with each technological advancement, it’s nothing new. In 1927, Earnest Elmo Calkins wrote in The Atlantic:</p><p>“The directing minds, absorbed in the new wonder of so many things made so easily [...] aggravated that fact by producing the bad design in incredible quantities.”</p><p>“We passed from the hand to the machine, we enjoyed our era of the triumph of the machine [...] and then we began to miss something in our cheap but ugly products.”</p><p>You see this common cycle play out. Craft exists naturally at the beginning. Then technology comes along and makes it easier or quicker to create things, and so we’re pulled away from craftsmanship. But then we start to miss it (in our work and the products we buy) and in response we seek quality, which causes a revival of craft.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/a2dec1735f908ec98952ba28205a94d1bdf2e1ad-1952x1024.png?q=95&amp;auto=format&amp;dpr=2" width="1952" height="1024" alt="The cycle of craft: Craft leads to new technology which enables us to build faster which leads to a phase where we forget the craft followed by a phase where we start longing for craft again."/></figure><h4><strong>AI is making craft more rare</strong></h4><p>Today, we’re at a familiar moment in the craft cycle. Maybe even bigger than before.</p><p>AI feels more like a change in substrate, rather than just another tool. Like electricity, the internet, or the mobile phone, it changes the material conditions of how we make things by putting near-instant creation in everyone’s hands.</p><p>While mass production separated the maker’s hand from the object, AI attempts to separate the maker’s judgment and taste from creation itself.</p><p>With each prompt, we’re trying to outsource not just labor, but the craft itself — the thinking, the intuition, the care. Yet craft, by its nature, can never be fully outsourced. The qualities that make something truly excellent come from being deeply involved in the entire process.</p><p><strong>Technology makes it faster to build, but harder to care.</strong></p><h4><strong>Craft is the pursuit of quality</strong></h4><p>The craft we’ve been discussing is essentially the input that creates quality. When something is crafted with care and attention, it possesses a certain feeling — a quality that’s difficult to define but impossible to miss.</p><p>Christopher Alexander called it “quality without a name.” He wrote: “There is a central quality which is the root criterion of life and spirit… It is objective and precise, but it cannot be named.”</p><p>It’s when something feels alive. When something feels right, even if you can’t exactly describe why. You know when it’s there. And you know when it’s not. Like a door opening and closing perfectly, it’s satisfying.</p><p>At Linear, we recently did an<a href="https://linear.app/quality"> interview series on quality</a>. My takeaway from those interviews with different makers was that everyone approaches it differently. There isn’t a single right way to operate or create quality.</p><p>But one thing was common with everyone: The belief and need to seek that quality. Seeking the feeling of <em>rightness</em>, even when it was hard.</p><h3><strong>Quality <em>is</em> a business strategy</strong></h3><p>While some seek quality, it’s still not that common. Time after time, working in companies and teams, I heard: “Quality doesn’t matter, we have other priorities.”</p><p>The conventional wisdom in tech is that quality doesn’t scale. That pursuing craft is too slow, too expensive, too precious for business realities. That at a certain point, you have to choose between growth and craft.</p><p>This belief is so pervasive that it’s rarely questioned. Companies optimize for immediate metrics and quick wins, assuming quality will somehow take care of itself (it never does).</p><p>While I understood the reasons, I never fully believed in them. In the back of my mind, I always believed that if you actually try to do it, it can work. So when I started Linear, quality became a central part of the business. Not just because it was important to me personally, but also because I saw it as a way to win.</p><p>In a crowded market of issue tracking tools, Linear stood out through quality. Quality creates gravity — it pulls people in rather than requiring us to push. One team would experience Linear, tell others, and adoption would spread organically throughout organizations. This natural flywheel of experience to advocacy to adoption to loyalty has powered our growth far more effectively than traditional tactics ever could.</p><p>Linear became profitable by year two. And by year four, we had more than 10,000 paying customers with effectively zero marketing spend. Turns out when you build something that feels just <em>right</em>, your customers will do your marketing for you.</p><h4><strong>Quality at Linear</strong></h4><p>When I talk about quality, I don’t just mean product quality. I mean the whole customer experience. So, how do we build for quality at Linear?</p><ul><li><strong>Quality as the north star</strong> <strong>for every team<br/></strong>We evaluate decisions by asking “does this improve quality?” not just “will this ship faster?”</li><li><strong>Intuition &amp; customers over data<br/></strong>We trust our sense of what feels right and listen closely to users, not just metrics</li><li><strong>Hire only people who show craft and care<br/></strong>We look for evidence of taste and attention to detail in our <a href="https://linear.app/blog/why-and-how-we-do-work-trials-at-linear">work trials</a></li><li><strong>Small teams using their judgment</strong><br/>We believe 3-5 people with good taste make better decisions than large committees</li><li><strong>No handoffs, whole team iterates towards “right”<br/></strong>Rather than assembly-line development, we keep teams engaged from concept to completion</li><li><strong>MVPs for internal use only<br/></strong>We don’t ship half-baked experiences; we test incomplete products internally first</li><li><strong>Zero bugs policy<br/></strong>Issues are fixed within 7 days </li></ul><p>I’ve learned that building quality requires three elements working together: The belief that quality matters fundamentally, the skill and taste to recognize it, and the willingness to care deeply about the user’s experience.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/6ddc7d284793779c2a71f17c048054b8a8fdd00e-1952x1024.png?q=95&amp;auto=format&amp;dpr=2" width="1952" height="1024" alt="A venn diagram with three circles: Belief, care, and craft. Quality happens at the intersection of these three circles."/></figure><h4><strong>Quality is a choice</strong></h4><p>The cycles of technology always drive us toward prioritizing speed and cheapness. We forget the craft. We stop paying attention to quality. And while we can’t stop these shifts, we also don’t have to surrender to them.</p><p>Quality is a choice we can make every day.</p><p>We can choose to care and put it in our work.</p><p>We can seek that feeling of <em>rightness</em>.</p><p>It starts with an individual. It can scale through teams and companies, but it always starts with an individual — <strong>you. </strong>Individuals who seek the quality without a name. Even when it’s not measurable or when the world tells them no.</p><p>I genuinely believe it’s the right thing to do, and I know it’s good for business. So If there is one trend I’d like to start, it’s this one. Regardless of what the world around us might tell us, let’s make this choice – <strong>let</strong>’<strong>s keep making things we’re proud to put our names on.</strong></p><p></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Design for the AI age]]></title>
            <link>https://linear.app/now/design-for-the-ai-age</link>
            <guid>https://linear.app/now/design-for-the-ai-age</guid>
            <pubDate>Mon, 07 Apr 2025 17:41:37 GMT</pubDate>
            <description><![CDATA[For decades, interfaces have guided users along predefined roads. Think files and folders, buttons and menus, screens and flows. These familiar structures organize information and provide the comfort of knowing where you are and what's possible.]]></description>
            <content:encoded><![CDATA[<p><em>“Where we’re going, we don’t need roads”</em><br/>— Doc Brown, Back to the Future</p><hr/><p>For decades, interfaces have guided users along predefined roads. Think files and folders, buttons and menus, screens and flows. These familiar structures organize information and provide the comfort of knowing where you are and what’s possible.</p><p>This understanding of interfaces has shaped my perspective on design throughout my career, leading me to see design as largely deterministic. I could visualize how interactions would work. The sequence when a user clicks a button, how information appears, how it adapts to different screens. It’s dynamic, but predictable. I could visualize the user’s journey and think about how to improve it.</p><p>That changes with AI and LLMs.</p><p>After ChatGPT’s release, the chat interface quickly became the “AI native” standard. This makes sense on the surface – LLMs output text, and chat interfaces are familiar. Language itself is a powerful interface that removes traditional UI barriers. You simply have a conversation. But although useful for some tasks, they aren’t optimal for specific use cases.</p><p>Prompting is essentially like writing a spec, sometimes it’s hard to articulate exactly what you want and ultimately control the outcome. Two people looking for the same thing might get wildly different results just based on how they asked for it, which creates an unprecedented level of dynamism within the product.</p><p>This shift from deterministic traditional UI to something more unbridled raises a challenge for designers: with no predictable journeys to optimize, how do you create consistent, high-quality experiences?</p><h3>Form follows function</h3><p>The role of design is to bring form around the function. Form acts as a way to set the context – like the way an axe looks and feels in your hand, you get an immediate sense of its purpose.</p><p>The design itself establishes this context for both the user and the system. By managing inputs and outputs along structured forms, you minimize the cognitive load required to successfully engage with the product, and minimize the variance in outcomes from that usage.</p><p>Without form, function gets lost. Unbounded AI, much like a river without banks, becomes powerful but directionless. Designers need to build the banks and bring shape to the direction of AI’s potential. But we face a fundamental tension in that AI sort of breaks our usual way of designing things, working back from function, and shaping the form.</p><p>Because we don’t yet fully understand what AI can do, trying to shape the form with unknown function feels a bit like trying to build a bridge over a foggy chasm, without a clear view of the other side. We’re likely going to have to reinvent our design processes – working forward to understand capabilities, rather than backwards from user needs.</p><h3>Our attempts so far</h3><p>A chat interface is a very weak and generic form. It’s a simple container for conversations back and forth, which is a start, but it isn’t precise, and it doesn’t effectively integrate with the rest of the tools and systems a team is using.</p><p>Some try to solve this by relying on ‘artifacts’, which are structured outputs from the AI (such as CSV files, JSON documents, or model binaries) which can be ported back into core workflows. These feel a bit like a band-aid. I believe a better option is to build a functional application with a more traditional UI and then complement it with AI functions.</p><h3>Bringing function to form</h3><p>One way I visualize this relationship between the form of traditional UI and the function of AI is through the metaphor of a ‘workbench’. Just as a carpenter’s workbench is familiar and purpose-built, providing an organized environment for tools and materials, a well-designed interface can create productive context for AI interactions. Rather than being a singular tool, the workbench serves as an environment that enhances the utility of other tools – including the ‘magic’ AI tools.</p><p>Software like Linear serves as this workbench. It provides structure, context, and a specialized environment for specific workflows. AI doesn’t replace the workbench, it’s a powerful new tool to place on top of it.</p><p>As we move forward to more agentic workflows, the workbench becomes even more important. It will be the place where AI agents live and operate. The place where agents are deployed and managed. Where agents operate with clear guidelines and output is reviewed and approved. Humans stay in the loop, and design still has a massive role to visualize how to make this new world more approachable and understandable.</p><p>We need to move beyond the generic chat format and reconsider what users truly require for their specific workflows. Without a workbench, we risk wielding powerful tools in empty space.<br/><br/></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building what customers need, not just what they ask for]]></title>
            <link>https://linear.app/now/building-what-customers-need</link>
            <guid>https://linear.app/now/building-what-customers-need</guid>
            <pubDate>Tue, 04 Mar 2025 12:14:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><em></em></p><p>Steve Jobs famously said customers don’t know what they want until you show it to them. Henry Ford quipped that people would have asked for faster horses, not automobiles. Yet at Linear, we just built a feature specifically designed to collect customer requests. Seems contradictory, right?</p><p>It’s not. Here’s why.</p><h4>The feedback paradox</h4><p>Product teams face a fundamental tension. Build only what customers ask for and risk mediocrity. Ignore feedback entirely and risk irrelevance. Every product decision exists within this practical challenge.</p><p>The most innovative products emerged without explicit customer requests. Nobody asked for the first iPhone, Airbnb, or Figma. These products came from vision and intuition.</p><p>Meanwhile, the graveyard of failed startups contains countless visionary products nobody wanted.</p><h4>Feedback sharpens intuition</h4><p>At Linear, we believe the best products come from strong opinions informed by customer reality. Customer feedback serves as the whetstone that sharpens intuition, rather than the source of product vision.</p><p>Users rarely articulate their core problems directly. They describe symptoms, request features they’ve seen elsewhere, or suggest solutions that address their specific need but wouldn’t serve the broader user base effectively.</p><p>When a user asks for “custom fields,” they’re expressing a deeper need that requires interpretation. Just as a doctor doesn’t make accurate diagnoses by collecting more patient self-diagnoses, product teams don’t create successful products by simply amassing feature requests.</p><p>The magic happens in the interpretation. The most valuable skill in product development lies in understanding what remains unsaid, beyond the explicit feedback.</p><h3>Why we built Customer Requests</h3><p>So, why build <a href="https://linear.app/customer-requests">Customer Requests</a> if raw feedback alone misses the mark?</p><p>Customer feedback, when collected thoughtfully, organized intelligently, and interpreted skillfully, becomes a powerful intuition amplifier.</p><h4>Feedback becomes fragmented at scale</h4><p>We observed a consistent pattern across growing companies. When teams are small, customer understanding happens naturally. Engineers chat directly with users, support teams recognize repeat requests, and everyone develops an intuitive feel for customer priorities through proximity.</p><p>But scale changes everything. Customer conversations multiply and fragment across email threads, support tickets, Slack messages, app store reviews, and research calls. What was once a clear signal becomes buried in noise. The small-company systems that worked at the start begin to fail under this volume.</p><p>Capturing feedback isn’t the problem. Sales teams use Gong, support uses Intercom, and product teams maintain separate research repositories. The challenge appears when product teams need to use this feedback. They spend hours navigating multiple systems, many of which they lack access to, trying to piece together fragmented context.</p><blockquote><p>I love seeing customer feedback — it brings our work to life. While we get great insights from UX interviews and our customer-facing teams, sometimes valuable feedback gets stuck in tools I can’t access.</p><cite>Maja Waite<!-- -->, <!-- -->Engineering Manager, Multiverse</cite></blockquote><p>When product teams lack deep customer understanding, they explore paths that don’t address core customer problems. For larger companies especially, this creates significant waste — engineering resources go toward features that customers don’t need while crucial problems remain unsolved.</p><h4>Reading between our <em>own</em> lines</h4><p>We experienced this pattern firsthand. When users requested “custom fields,” we dug deeper to understand the underlying need rather than implementing the feature at face value. Conversations with users revealed that approximately 40% wanted these fields specifically to track customer needs. Adding a simple custom field felt like a bandaid to a bigger problem — instead, we created something purpose-built that solves this specific problem exceptionally well — a dedicated workflow connecting customer context directly to product decisions.</p><p>We created a dedicated space in Linear, displaying customer context alongside engineering work. Customer needs weren’t just abstract requests anymore, and they didn’t get buried. These were real companies with real people, positioned alongside actionable engineering work.</p><blockquote><p>Support tools often have the highest density of customer feedback. When product and support teams get closer together, and the systems between them are smooth, magical things happen.</p><cite>Marty Kausas<!-- -->, <!-- -->Co-founder, Pylon</cite></blockquote><p>Our Customer Requests feature brings feedback from support tickets, Slack messages, and calls directly into Linear – where product and engineering teams can spot patterns, interpret needs, and build context that informs decisions.</p><p>We designed it to move beyond tallying votes for features — providing teams with concrete data to recognize patterns and build products users actually need.</p><p>Customer Requests enables teams to:</p><ul><li>Bring the voice of customer directly into product development</li><li>Prioritize high-impact needs by filtering customers by revenue, tier, and other business metrics</li><li>Replace scattered tracking methods and eliminate manual syncing between tools</li></ul><h4>Where we’re heading</h4><p>When we started building Customer Requests, we set out to solve a clear problem — help growing companies stay as close to their customers as they were when small.</p><p>We’re working on integrating with Salesforce and HubSpot so teams can capture customer context where they already work. We’ll use AI to help teams find the signal through the noise and make sense of all this feedback.</p><p>The best products emerge when strong vision meets deep customer understanding. Pure customer-led development and isolated visionary thinking both fall short of consistently producing breakthrough products. Develop your product intuition by immersing yourself in customer feedback while trusting your ability to see patterns and needs they cannot articulate. Treat customer requests as input, not instructions.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The profitable startup]]></title>
            <link>https://linear.app/now/the-profitable-startup</link>
            <guid>https://linear.app/now/the-profitable-startup</guid>
            <pubDate>Fri, 21 Feb 2025 16:46:55 GMT</pubDate>
            <content:encoded><![CDATA[<p>For years, startups have been taught to prioritize growth over everything else. Profitability was seen as unambitious or even wrong – something to worry about when you hit scale. Why focus on profits when money and valuations were easy to come by?</p><p>But that thinking was always flawed.</p><p>Profitability isn’t unambitious; it’s controlling your own destiny. It means you don’t have to rely on investors for survival. It means you can focus on your unaltered vision and mission. And it means you as a founder decide the pace of growth. And once you experience it, it’s hard to imagine doing things any other way.</p><p><a href="https://paulgraham.com/ramenprofitable.html">Paul Graham famously wrote about “ramen profitability”</a> – the point where a founding team could survive without external funding. He argued this made startups more attractive to investors, showing they could get customers to pay, were serious about building valuable products, and were disciplined with expenses.</p><p>Graham wrote his essay in 2009. I’d argue that we now live in a world where it’s not just easier to get ramen profitable, but traditionally profitable – while also growing fast.</p><p>At Linear we didn’t set out to be profitable but kind of stumbled into it. We believed that to win this market we really needed to build a superior tool. The best way we knew how to do that was to keep the team small and focused. And when we launched after a year in private beta, almost all of our 100 beta users converted to paid customers. To our surprise, we realized it wouldn’t take that long to become profitable if we kept the costs in check. Twelve months after launch, we hit profitability, and we’ve stayed profitable ever since.</p><p>I don’t know why hiring massive teams ever became the norm. In my own experience, small teams always delivered better quality, and faster. Maybe it’s fear of missing out if you don’t grow the team fast. Maybe it’s investors whispering that your team is “understaffed compared to benchmarks.” Being understaffed compared to benchmarks almost always should be a source of pride, not a problem. People should be surprised how small your team is, not how big it is.</p><p>What holds you back is rarely team size – it’s the clarity of your focus, skill and ability to execute. Larger teams mean slower progress, more management overhead, more meetings, more opinions, and usually dilution of vision and standards. Yet growing the team has somehow become a symbol of success.</p><p>At Linear, we hired our first employee after six months and roughly doubled the team each year. With each hire, we make sure they truly elevate the team. We don’t set out to hire ten engineers – we hire the next <em>great</em> engineer. This intentional approach has allowed us to maintain both quality and culture.</p><p>The most underrated thing about profitability is how much peace of mind it gives you. Once you’re profitable, you stop worrying about survival and focus on what really matters: building something great. Building the way you want. Instead of optimizing for the next fundraising round, you optimize for value creation.</p><p>While profitability might not come quickly for every startup, I believe it’s achievable sooner than most think. If you’re creating a new market, or truly require massive scale like a social network, or significant upfront investment like a hardware company, it might take longer. But if you’re in a category where there isn’t hard upfront investment, and you get some level of product-market fit with customers willing to pay, you can probably be profitable. You can decide to become profitable. And usually, it’s a decision about how much and how fast you hire.</p><p><strong>Measure What Matters</strong></p><p>Revenue per employee is one of the clearest ways to see you’re hiring appropriately. While some of the best public companies benchmark at $1-2M per employee, for startups it’s not unreasonable to target the range of $500k-$1M per employee.</p><p><strong>Understand Your Risk Profile</strong></p><p>Are you building something highly speculative where you’re not sure if there’s a market for it, or are you building something that already has a market but with a different take on it? In the former case profitability takes longer, but in the latter it could happen right away. Most software today, especially in the B2B space, is about building a modern version of something existing.</p><p><strong>Hire Intentionally and Slower</strong></p><p>For most software startups, ten people before product-market fit should be your ceiling, not your target. After PMF, every hire should address a specific, pressing need – not just fill out an org chart. At Linear, our deliberately slow headcount growth forced us to be selective, which meant making better hires. It also protected our culture, since rapid hiring often dilutes the very things that made your startup special in the first place. When you hire less, you naturally hire better.</p><p><strong>Raise on Your Own Terms </strong></p><p>Being profitable doesn’t mean you have to be anti-investors. It means you have that choice, and investors are quite interested in profitable companies that also grow fast. You can raise more, less, or nothing. You can wait for the right timing, the right partner, or fund. For most ambitious startups, it can still be a good idea to raise something even if you could get by bootstrapping. Investors can still be helpful, and the additional cash balance can help you to make larger investments, or acquisitions.</p><p>The point is that you can be and are allowed to be profitable as a startup. It’s not a bad thing, it’s not an oxymoron or as hard as people make it out to be. The secret is that a lot of successful companies actually were quite profitable early on, they just didn’t talk about it. When you’re profitable, you make decisions based on what’s best for your customers and your product, not what’s best for impressing investors.</p><p>I didn’t set out to build a profitable startup. But once I got there, I realized I wouldn’t want to build a company any other way.</p><p><br/></p><p><br/></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why and how Scale migrated to Linear]]></title>
            <link>https://linear.app/now/why-and-how-scale-migrated-to-linear</link>
            <guid>https://linear.app/now/why-and-how-scale-migrated-to-linear</guid>
            <pubDate>Fri, 15 Nov 2024 17:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Scale AI is laying the foundation for AI innovation, serving as the hub for building, deploying, and evaluating AI.<em> </em>As the company grew, it needed a project management tool to grow with it. Product and engineering leaders banded together to propose Linear and launch it across the organization, seeing an immediate impact.</p><p>In the rapidly changing space of AI, Scale has evolved and grown to lead the space. As the company expanded, adding hundreds of new employees, their existing project management tools were unable to keep up with their needs.</p><p>The need for new tooling became apparent and leaders across different teams independently sought better solutions. A grassroots movement within the company, guided by leaders from different teams, converged on the same solution: Linear.<br/></p><h2>What drove Scale to Linear</h2><p>Before migrating employees to Linear, Scale was using a combination of other tooling across their teams. Pitching and coordinating a tooling switch of this scale can be difficult, but Sam Sipe, Head of Engineering for Public Sector at Scale, knew he wanted to switch to Linear.</p><p>Before, they had difficulty reassigning issues, sharing context, and seeing progress. To get clarity, members of each team bookmarked different views and periodically audited other teams’ boards for issues that weren’t appropriately tagged to their team.</p><blockquote><p>Theoretically, we were agile, but it was difficult to find tickets. We had a backlog that wasn’t in service of our products or the engineers working on them. Things got lost if end users didn’t use workflows properly.</p><cite>Sam Sipe<!-- -->, <!-- -->Head of Engineering, Public Sector</cite></blockquote><p>Having used Linear at a previous company, Sam was confident it was the right tool to organize and engage his teams.</p><blockquote><p>Having used Linear previously, I realized how much better it would be to have purpose-built tools that do the right thing. Linear’s easy-to-follow workflows would be incredibly useful to our engineers.</p><cite>Sam Sipe<!-- -->, <!-- -->Head of Engineering, Public Sector</cite></blockquote><p>Over the past year, Scale’s business product offerings expanded rapidly, and so did its team. The expanding team looked to Linear to support its growth.</p><blockquote><p>Engineers hate issue tracking in general, so you need to make the barrier as low as possible and set incentives for them to use it. One way to do that is to have a tool that people enjoy using.</p><cite>Clemens Viernickel<!-- -->, <!-- -->Staff Product Manager</cite></blockquote><p>Over time, engineers did what they could to avoid logging tickets, like resolving issues outside of the tracking tools already in place. The broken issue tracking process caused complications downstream.</p><p>Though Clemens Viernickel, a Staff Product Manager at Scale, had never used Linear before, he knew of it from peers and made an independent decision to pilot it on his team. Conversations outside their previous tool unearthed new tickets that needed to be created. They needed a bridge for a disconnected workflow. There was no initiative to roll Linear out to Joshua’s team. But when he caught wind of it, he thought his team should convert, too.</p><p>When other teams caught wind of a potential shift to Linear, they also wanted licenses.</p><blockquote><p>We planned for 50 seats initially, but suddenly, 200 more people signed up. It was a classic grassroots story – other teams heard we were using Linear and wanted to use it, too. Now, we’ve switched all teams over.</p><cite>Clemens Viernickel<!-- -->, <!-- -->Staff Product Manager</cite></blockquote><blockquote><p>My advice for anyone curious about Linear is to do a pilot. The product sells itself. My team instantly thought Linear was great. There were no grumblings. The only conversations we had were about getting enough seats to give people access.</p><cite>Joshua Hall<!-- -->, <!-- -->Head of Customer Engineering</cite></blockquote><h2>Deploying Linear</h2><p>The first team that used Linear chose their optimal workspace and team settings. That foundation made it easy to onboard remaining teams. Eager to get moving in Linear, the group decided to leave their old tool behind and go into the transition with a clean slate.</p><p>Joshua’s smaller team imported all of their issues to Linear, archived the ones they weren’t working on, and adjusted Linear settings to their way of working. By the time Linear was approved across the org, they were fully up to speed.</p><p>The larger teams took a similar approach but extended rollout to ensure smooth change management. They established a cutover date where all issues would be imported to Linear, and all work would take place in Linear moving forward.</p><p></p><h2>Moving at high velocity</h2><p>Quick adoption of Linear led to impressive outcomes for Scale. Scale improved bug resolution time by <strong>52%</strong>, resolving problems for customers and building data products faster than ever before.</p><p>In Linear, Scale found the infrastructure it needed to continue fueling the most exciting advancements in AI.</p><blockquote><p>I often get asked, ‘Why Linear?’ While I could talk about all of its incredible features, the switch to Linear was really fueled by one thing: velocity.</p><cite>Clemens Viernickel<!-- -->, <!-- -->Staff Product Manager</cite></blockquote>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Simplifying support at scale: How Pleo uses Linear Asks]]></title>
            <link>https://linear.app/now/simplifying-support-at-scale-how-pleo-uses-linear-asks</link>
            <guid>https://linear.app/now/simplifying-support-at-scale-how-pleo-uses-linear-asks</guid>
            <pubDate>Mon, 11 Nov 2024 14:24:36 GMT</pubDate>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/6f2d77e7bc1268ad4e438c2dfd3ad16ed9c0fa5d-1176x1048.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/1992c37c2e53bc71c5d856e3876db770b2f37874-1176x936.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/c44b1c34c75d994cf361ba7faca42d5c02c58ed7-1176x1052.png?q=95&amp;auto=format&amp;dpr=2"/><h2>The switch to Linear Asks</h2><h4>Why did you switch to Linear Asks from your previous internal request tool?</h4><p>Zeo Csoltai</p><p>Our existing tool HALP was shutting down and we were looking for another tool to manage internal requests. HALP had worked well for us when we started using it; we had around 300 employees at the time. Unfortunately, HALP was acquired by Atlassian. We could tell almost immediately that their product was slowing down–there were no new features coming and we heard silence from their team. Eventually, we got an email saying that HALP’s product would be sunset and our only option would be to move to Jira Service Management’s ITSM tool. We decided to explore other options.</p><p>Stefan Christensen</p><p>We were hoping to move to something similar and not have to use a bloated or more complicated tool. We started looking for another solution around the same time that Linear reached out to us about joining the beta for <a href="https://linear.app/features/asks">Linear Asks</a>, so it was a perfect match.<br/>‎‎ ‎</p><h4>What mattered to you in making this decision?</h4><p>Zeo Csoltai</p><p>We wanted a tool that would be effortless for anyone at our company to use. If people dislike your internal support tool, they won’t use it. They’ll be slow to report issues and work around the tool, messaging their manager or pinging the internal support team individually. This adds more time to each request and more work for internal teams.</p><p>We definitely didn’t want a tool that required users to login separately. Everyone at the company has access to Slack and is comfortable using it, so it was crucial to have a tool that integrated seamlessly with it.</p><p>Stefan Christensen</p><p>We also needed a tool that was flexible enough to support different workflows. Our internal teams all work very differently from each other. Some teams get a few requests a day while others get hundreds per week. Teams vary in size and the requests can differ a lot, from getting someone at Pleo access to an internal system, to debugging a development platform error, to investigating a billing discrepancy. We wanted each internal team to choose how they worked: how they set up staffing rotations, how requests would be sent to them, and what information would be included in each request.</p><p>While it wasn’t a specific requirement, we also didn’t want to spend much more than we were paying for our existing tool. In the end, we’ve actually saved close to $30,000 a year since moving to Linear Asks, since Asks is part of our existing plan and not a paid add-on like Jira Service Management.</p><h2>A natural fit with Pleo’s workflow</h2><p>Zeo Csoltai</p><p>Primarily, we liked Asks because it is so simple to use. My teammate can open Slack, post a question, and it instantly gets routed to the person and team who can help. They don’t have to think about filling out complicated forms, tagging specific people, or following a specific process. Getting help is as easy as posting a question in Slack.</p><p>It’s also a huge benefit that through Asks, these requests are linked bidirectionally with Linear. Requests are sent directly to a team’s Triage inbox, where they can be reviewed and processed just like any other Linear issue. Comments and status updates post across to the linked Slack message, too, so you are kept up to date no matter which tool you are in.</p><p>Many teams at Pleo were already using Linear for product and engineering work, and even creating issues from requests posted in Slack manually. Adding internal support requests to their Triage queue didn’t change the day-to-day workflow for most teams.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/6f2d77e7bc1268ad4e438c2dfd3ad16ed9c0fa5d-1176x1048.png?q=95&amp;auto=format&amp;dpr=2" width="1176" height="1048" alt="Showing a Slack thread where dimitris posted a question and his coworker Max turned the request into an Ask. It shows the green checkbox on the original posted question, indicating that the request was completed, and back and forth between max and dimitris."/></figure><h2>Building a best-in-class Technical Operations team</h2><h4>You have a strong opinion on how you run your Tech Operations team. Can you share more?</h4><p>Zeo Csoltai</p><p>Our vision for Tech Operations (TechOps) is rooted in modern DevOps principles. We want to be proactive, to anticipate problems and prevent them before teams even realize that an issue is brewing. If we can resolve issues earlier when they are small, we can prevent large bottlenecks that affect delivery or have other serious ramifications.</p><p>We’ve tried to avoid running TechOps like a traditional IT operation, where work is primarily reactive, going ticket by ticket, and solving problems only as they are reported.</p><p>We also use a more casual style in our interactions, getting to know our teammates as people and building relationships with them beyond just fixing the issue at hand. Most of us have had dreadful experiences with IT, where you fill out a billion forms on a website and have no clue if you’ll hear back in five days or five years. That’s an experience we don’t want our teammates to have when they need our help.<br/>‎</p><h4>What does this vision look like in practice?</h4><p>Zeo Csoltai</p><p>A lot of my job involves discovery: talking to my stakeholders on a regular basis, checking in and figuring out where we can make small improvements to their existing workflows without breaking things in the process.</p><p>Using Slack as the interface for ticketing helps us reinforce this human-focused approach to internal support and helps us be more approachable, so that when a problem or question does come up, people feel comfortable reaching out to us. It’s so easy to send a Slack message, it doesn’t feel like a chore. And it doesn’t feel as onerous as a form.<br/>‎</p><h4>How do you know if you’re succeeding at building that vision?</h4><p>Zeo Csoltai</p><p>There are a few things we look at. First, the whole company is my stakeholder and our ability to help them is directly tied to how comfortable they feel reaching out to us. We don’t track a metric for this, but we pay attention to how things feel and actively work to curate this sentiment in every interaction.</p><p>We also look at how many asks are coming into Triage. Are we seeing more or fewer requests than usual? The more issues we can discover proactively, the fewer asks we should see overtime. Honestly, I think if people don’t really know what I do or that I exist, that means they’re not having problems and I’m doing my job well.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/1992c37c2e53bc71c5d856e3876db770b2f37874-1176x936.png?q=95&amp;auto=format&amp;dpr=2" width="1176" height="936" alt="A view of a triage inbox for the tech operations team, showing various requests submitted through Linear Asks"/></figure><h4>How have you structured Asks in your TechOps team?</h4><p>Zeo Csoltai</p><p>We run a weekly rotation, where someone from our team is in charge of fielding requests that come into Triage. We’re a team of four and everyone does frontline support, even our team lead. It’s really important to us that everyone is close to the problems our teammates are having. We don’t want anyone to forget what it’s like to field questions or get boxed into a specific niche, where they become known as the person that only fixes certain types of issues.</p><p>It is easy to support a regular rotation in Linear. We just created a schedule in incident.io and linked it to our Linear Triage inbox. From incident.io or Linear, you can see who is on frontline and who is scheduled next. We also always have a backup person on call in case we get an influx of requests and the main person on frontline needs help.</p><p>We also built our own helpbot using Linear’s GraphQL API, so that whenever someone sends us a request through Asks, the helpbot comments on the Linear issue with contextual information that helps us process the request, e.g. the user’s location, device, device state, etc. This helps us process requests much faster and with less back and forth.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/c44b1c34c75d994cf361ba7faca42d5c02c58ed7-1176x1052.png?q=95&amp;auto=format&amp;dpr=2" width="1176" height="1052" alt="Issue activity showing an automated comment created by the TechOps Helper which has key details about the request submitted including the full name, email, and location of the employee making the request, the team and domain they are part of, their job title, and links to Intune and Kandji information including their last OS version and last checkin"/></figure><h2>Scaling internal support workflows</h2><h4>How did you manage the transition of moving 800 employees to send and manage requests with Linear Asks?</h4><p>Stefan Christensen</p><p>For people already using Linear there was very little change to their daily workflow. We moved our team (TechOps) as well as Developer Experience and Site Reliability Engineering to Asks first. Quickly, other teams followed suit.</p><p>The magic of Asks for us is in how flexible it is in how teams can use it. Every single team that has requests coming into them internally uses it but can configure it slightly differently. Once we onboard a team to use Asks, they go ahead and set up the templates and automations that their team wants to use. The Asks configuration lives in a single settings page, so they can see how other teams use it and just copy the settings.</p><p>For example, some teams configure a #help-team channel in Slack with auto-creation, so that any message posted in the channel creates an Ask automatically. Other teams prefer to review questions in a Slack channel first and create asks manually, only when significant follow up is required. You can also enable it so that reacting with a ticket emoji (🎫) turns a Slack message into an ask.</p><p>Zeo Csoltai</p><p>Across the company, we didn’t hear about many issues either, since everyone is familiar with Slack and people picked up on how to make requests without much hand-holding. When there were questions that I couldn’t answer, the Linear team would respond quickly, often within a few hours.</p><p>From a change management perspective, the transition was extremely smooth and dare I say enjoyable.The actual switch was simple: you just need to configure a few things in settings and then type <em>/invite @asks</em> into a Slack channel.<br/>‎</p><h4>How do you see Asks helping you as you scale your teams?</h4><p>Zeo Csoltai</p><p>It’s so helpful that we can keep everything in Linear. Every ask is recorded in Linear with a backlink to the Slack conversation and synced comment threads. We can more easily keep track of our work in Linear than in Slack, set reminders, and snooze issues to follow up on them in the future.</p><p>We now also have a history of issues in Linear that we can look at and use to improve how we work. We can track how often requests are coming in and how long they take to resolve, so we have concrete data to justify investing in better solutions for these types of issues. We can easily link issues together and just get a better sense of trends in requests. This will be even more important as we continue to grow and support more people.</p><p><em>Pleo’s experience centralizing internal requests transformed their organization’s workflows while keeping things human. Their TechOps team found that simple tools often work best: a single place to track work, seamless Slack integration, and the flexibility to let each team work their own way. </em> <a href="https://linear.app/features/asks"><em>Learn more</em></a> <em>and sign up for a free trial on the Business plan to try Asks.</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How we built multi-region support for Linear]]></title>
            <link>https://linear.app/now/how-we-built-multi-region-support-for-linear</link>
            <guid>https://linear.app/now/how-we-built-multi-region-support-for-linear</guid>
            <pubDate>Thu, 23 May 2024 14:14:06 GMT</pubDate>
            <description><![CDATA[Linear now supports hosting workspace data in Europe. In this post, we outline why we decided to support multiple regions and how we tackled the project.]]></description>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/27a57ea4614c6fc76c626eb12990731e357bc1c7-2352x2096.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/7cfb205f850812ae49aeaa650c6b51efce045758-2352x1204.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/4d2f1e274334d9edbd28feaca70fbba9fbca4508-2352x1880.png?q=95&amp;auto=format&amp;dpr=2"/><h2><strong>Why support multiple regions?</strong></h2><p>Initially, Linear’s infrastructure was concentrated in a single location - Google Cloud’s us-east1. While this configuration served most users well, it presented long-term challenges. We identified two primary reasons to diversify our data hosting locations.</p><p>First, having a separate region with a full instance of the Linear application makes future scaling simpler. If we can host some workspaces in a particular infrastructure deployment (application servers, databases, etc.), then we can add other regions behind the scenes in the future to avoid hitting scaling limits on, for instance, the size of our primary Postgres server.</p><p>From the early beginnings of Linear, we’ve sought to invest in our foundation preemptively, always having an eye on potential future bottlenecks we might encounter. This enables us to build out the best possible infrastructure and application framework, without being forced to urgently implement sub-par solutions to scaling issues when we’re hitting those bottlenecks. This is also why we decided to tackle multi-region infrastructure earlier than other companies would typically do.</p><p>Second, many larger European companies prefer to have their data hosted in Europe as it makes their compliance with GDPR easier. Specifically, some companies were worried about potentially entering their customer’s information into Linear and having that data be stored in the US.</p><p>Instead of sharding the database, we chose to replicate the entire Linear production deployment. This simplifies development as we can continue executing operations against a single database instance within one deployment, and any ancillary data stores are also regional by default with no additional logic needed. Further, we gain full segregation of regions we operate in. Problems in one region won’t affect others and we are able to improve the reliability and availability of the Linear app.</p><p></p><h2><strong>Multi-region architecture</strong></h2><p>From the start, the biggest requirement was that the region selection be invisible to users except when creating a workspace. In practice, this means we didn’t want to have a separate domain for our Europe region–you should be able to use our client (linear.app) and API (api.linear.app) via these primary domains, regardless of where your workspace is hosted. We also extended this requirement for integrations and internal tooling, to make the migration to multi-region seamless and require no code changes outside of our application. Every single feature in Linear should work, regardless of which region you are using.</p><p>We wanted to isolate all multi-region complexity to a few sub-systems and APIs. Engineers should never have to think about multi-region when developing functionality for the Linear backend or clients. They should be able to work in their local development environments and multi-region should simply work without any additions when their code is deployed into production.</p><p>We identified a simple architecture that would achieve this. Add a proxy in front of all traffic that would be able to authenticate requests, associate them with a user and their workspace, and route the request to the correct region:</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/27a57ea4614c6fc76c626eb12990731e357bc1c7-2352x2096.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="2096" alt="An architecture diagram of multi-region support in Linear"/></figure><p>We worked on this in three distinct phases: Terraforming our infrastructure, extracting authentication to a global service, and creating the proxy to route requests to the correct regions.</p><h3><strong>Terraforming our infrastructure</strong></h3><p>Before going multi-region, all of Linear’s infrastructure was manually managed in Google Cloud Platform. While we could have continued doing this, moving to infrastructure as code (in our case, Terraform) made spinning up a second region a lot easier.</p><p>We used Google Cloud’s <a href="https://cloud.google.com/docs/terraform/resource-management/export">Terraform export tooling</a> to create an initial set of Terraform resources for our existing infrastructure. We removed everything that we knew we didn’t need for our main application to be deployed through Terraform: this was typically either resources that we hadn’t created manually in the first place, or global resources that wouldn’t be affected by the move to multi-region Linear.</p><p>Once we had the exported resources in place, we refactored the Terraform code into <a href="https://developer.hashicorp.com/terraform/language/modules">modules</a> to support passing in the target region as a variable, as well as managing region-specific credentials and secrets that the application needs. We used this to build a staging environment too, which we used for testing infrastructure changes, as well as the proxy’s routing logic.</p><h3><strong>Extracting the authentication service</strong></h3><p>The proxy needed a way of routing network requests to the correct region based on the information contained within these requests. For this, we created a global authentication service, which would know about all user accounts, workspaces, and their associations. The auth service would be able to authenticate user accounts and work out the region of the workspace that the request was sent to.</p><p>To keep things as simple as possible, we chose to have a one-way data flow between the regional backend services and the authentication service. A regional service can call the authentication service directly, but if the authentication service wants a regional service to take an action, it schedules a background task using the <a href="https://cloud.google.com/pubsub/docs/pubsub-basics#choose_a_publish_and_subscribe_pattern">Google Pub/Sub one-to-many pattern</a> to run that task on all regions. This also means that the authentication service only responds to HTTP requests–it has no background task runner of its own–making deployment more straightforward. Even so, this was by far the largest step in the project, touching large parts of our codebase.</p><p>After prototyping a few different options for the internal API between the API service and the authentication service, we settled on GraphQL. It isn’t ideal for service to service communication, but we already had strong tooling for GraphQL in our codebase (<a href="https://developers.linear.app/docs">our public API</a> is GraphQL), and we used <a href="https://graphqleditor.com/docs/tools/zeus/">Zeus</a> to generate a type-safe client for the API service to call the authentication service.</p><p>As we wanted to extract this gradually, the authentication service shares a database with the main backend service in our US region - which was the only region while we were working on this. When the logic was fully extracted, we split the tables from the authentication service and the other backend services into their own schemas, and set database permissions to guarantee that the authentication service cannot read or write regional data in the database, and vice versa: they must go via the calling conventions described above.</p><p>Most existing tables had a single owner. For instance, documents are only on the regional databases, as they are not needed for authentication. Some, however, needed to be split between the two services as they contained both application information as well as authentication information. For example, most workspace information and configuration is in the regional service, but some workspace settings relate to authentication, so the authentication service needs to store its own copy of that data. This means that we have pairs of tables in the authentication service and the regional services that have a 1:1 relationship: their data should always be in sync for shared fields, and we should never have a case where one system has a record but the other doesn’t.</p><p>To handle the data sync between the two systems, we settled on a mix of patterns that fit neatly into our existing codebase and conventions. There were three cases we needed to cover: creating, deleting, and updating records.</p><ul><li>When creating a shared record, we always create it in the authentication service first, and use the returned ID to create a corresponding record in the regional database. This is to ensure that any uniqueness constraints (such as on a workspace’s URL key) are applied globally first.</li><li>Deleting works in the same way as creating records, with an additional fallback using Postgres triggers to create an audit log of deleted records, which accounts for records that are deleted due to a foreign key cascade from another table.</li><li>For updating records, we already have a lot of logic around creating efficient updates for clients using our sync engine. We were able to reuse this to also schedule an asynchronous update to the authentication service with the new data, so that updates are easiest for developers: they just update the record in the regional service as normal.</li></ul><p>To extract this in a gradual way, we first created the new tables with database triggers to copy over the columns we needed on create and update. This worked because we had a single region at the time, so we could allow the database users for each service to see each other’s tables, while using linting rules to ensure that our application code did not reach across service boundaries. Once we confirmed the syncing logic was working, we deleted the triggers and relied solely on the methods described above, even while still running in a single region.</p><p>Finally, we created a set of background tasks that would periodically walk through all tables that are synced with the authentication service. These tasks fetch a batch of records in the regional service, and use an internal API call to check that the authentication service has the corresponding batch of records, with no missing records on either side or differences in column values.</p><h3><strong>Routing requests and putting it all together</strong></h3><p>Since we already use Cloudflare Workers extensively, it was an easy decision to also use Cloudflare Workers for the proxy that routes requests. The worker extracts the relevant authentication information from a request, calls the authentication service to obtain a signed JWT and the target region, and then forwards the request to that region with the pre-signed header.</p><p>The Cloudflare Worker securely caches authentication signatures so that frequent requests from the same client don’t need to spend time on the round-trip between the Cloudflare worker and the authentication service, and instead the request can be directly routed to the correct region.</p><p>That is, our request flow went from users connecting directly to our API servers…</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/7cfb205f850812ae49aeaa650c6b51efce045758-2352x1204.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1204" alt="A flowchart visualizing the request flow from users connecting directly to Linear&#x27;s API servers"/></figure><p><br/>…to having this proxy in between:<br/></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/4d2f1e274334d9edbd28feaca70fbba9fbca4508-2352x1880.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1880" alt="A flow chart of the new request flow"/></figure><p><br/>Using Cloudflare Workers as a proxy like this is effective, even for long-running requests, because Cloudflare Workers that return a <code>fetch</code> request without modifying the response <a href="https://blog.cloudflare.com/workers-optimization-reduces-your-bill">hand off to a more efficient code path</a>. Linear uses WebSockets for our <a href="https://linear.app/docs/offline-mode">realtime sync</a>, and so this is an important factor for us.</p><p>While we were building the authentication service, we were still using a single region, so we kept fallback code in our API service to authenticate the request directly if it was not pre-signed by the authentication service. Once we had the initial proxy in place, the rest of the work here was largely straightforward: logging and fixing requests that used this fallback, working through our existing <a href="https://linear.app/integrations">library of integrations</a> and adding code to handle each one in the API router, and ensuring internal tools could read from or write to both regions as necessary.</p><p>We rolled out a region selector that lets you choose what region to host new workspaces in, gated by a feature flag. This flag was initially available only to Linear engineers. Once we confirmed that the new region functioned without any problems, we gradually allowed everyone to create workspaces in the new region.</p><p></p><h2><strong>Wrapping up</strong></h2><p>This was a lot of work behind the scenes, and it touched authentication logic, which is always a sensitive part of any codebase. We built it in such a way that while there were of course bugs along the way, most of those were invisible to our users because we left the hard cut-overs as late as possible, making sure we had a fallback in place until we were confident that we had covered every corner case.</p><p>Linear now supports creating new workspaces in our European region. We set the default region in the workspace creation form based on your system timezone, to give the best experience for most people, while still allowing you to choose the region yourself. Workspaces in Europe have access to all Linear features, and always will.</p><p>We intend on adding support for existing workspaces that want to move to a different region later this year.</p><p>–</p><p>If you like how we build, <a href="https://linear.app/careers">apply to join our team</a>. We’re hiring for backend and fullstack engineering roles.</p><p><br/></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How we redesigned the Linear UI (part Ⅱ)]]></title>
            <link>https://linear.app/now/how-we-redesigned-the-linear-ui</link>
            <guid>https://linear.app/now/how-we-redesigned-the-linear-ui</guid>
            <pubDate>Thu, 28 Mar 2024 19:18:53 GMT</pubDate>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/fbe1a0ae325c93e6ae1c9ec94a63607940408e05-2352x1344.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/6910ef17f5a9ace0abf9399172e785e358f54db5-2352x1380.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/7f5178a3de744d905655ebe8cf43dea6b879ed85-2352x1298.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/23839a6bacba4a7617728dada3d37a40dc3584aa-2352x1380.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/ea3d9f931653fa9de5bd71269e5abf471a0f7eb5-2352x1672.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/2ef6f0599f502940b18eae2c37a1fbd9ee09be25-2352x1380.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/988d7a80fea7432e77f1fb3429bda68e9ef8057a-2352x2352.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/11d896d9d6ec5b3e1e2ae8ad6601a6765aac742f-2352x2808.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/674c8e9db724ad23e44dcec70a0188aaca174fdc-2352x1616.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/5082e6f59a13b030196e7de596aa26e82163dd74-2352x2488.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/4440f7f7cd02950e5e71be841b9cdbf20ec7a9c5-2352x1656.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/6f49fe3e5f0efea0a4c496abd1ed7000a0a19184-2352x1710.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/51ed21ce89beabbef50d4236edf31d7c9fa29c3c-2352x1728.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/075052324554b12d5a335417d622548f7cc41dce-2352x544.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/02808883a5ca24f73732ee66a51bc3386902996a-2352x3348.png?q=95&amp;auto=format&amp;dpr=2"/><h2>Introducing a more cohesive, timeless UI</h2><p>Karri Saarinen</p><p>Our environment plays an important role in the success of our projects. Among all the variables that compose our environment, the tooling we choose has a profound impact on the work we do, and, in the best case scenario, becomes a standard for how we build products. This is why we put so much care into even the tiniest details in Linear.</p><p>Today, we are revealing the result of many weeks of work redesigning Linear’s interface. We’ve adjusted the sidebar, tabs, headers, and panels to reduce visual noise, maintain visual alignment, and increase the hierarchy and density of navigation elements. These changes make space for Linear to evolve from a simple issue tracker into a purpose-built system for product development.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/fbe1a0ae325c93e6ae1c9ec94a63607940408e05-2352x1344.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1344" alt="Introducing the new Linear UI"/></figure><p>Read on to learn how we went from concept to redesign in a few weeks.</p><h2>Concept exploration</h2><p>Karri Saarinen</p><p>As I outlined in <a href="https://linear.app/blog/a-design-reset">part one</a>, there is never a good time to do a redesign. Normally these projects require a team of 5-7 people, but when I started seeing the need, our product and design team were busy with ongoing projects. We only had three product designers for the web and desktop platforms at the time, and even pulling just one of them into this project would have stalled several other workstreams. That wasn’t something I wanted to do.</p><p>An opportunity presented itself when I returned from my parental leave last summer. The company was functioning mostly without my direct involvement. This created a window of time where I could get started on the concept design myself. So, I opened Figma and began to explore.</p><p>The most pressing problems seemed to be:</p><ol><li>Accommodating the product evolution</li><li>Enhancing the clarity of the application chrome and views</li><li>Improving the navigation</li></ol><p>While I initially delved into all three areas, I eventually set aside navigation as it became clear the problems were complex and no longer solely a design issue. Any updates would require significant engineering work and change how users interacted with the product. This felt like an unnecessary risk and would expand the scope, so I made the call to focus purely on a redesign.</p><p>Even when doing concept work, you often need to focus your efforts. The design concept should feel like an exciting evolution of the product. A redesign should not completely disassemble the product to its atomic parts. While you might have ambitious goals, you also have to be realistic and manage risks.</p><p>I started to focus on this inverted L-shape. It’s the global chrome of the application that controls the content in the main view.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/6910ef17f5a9ace0abf9399172e785e358f54db5-2352x1380.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1380" alt="Inverted L navigation highlighted"/></figure><p>I didn’t adhere to a specific method during the exploration phase, but typically, each day I designed a complete set of screens and flows. One day might be dedicated to designing the Inbox view, while the next day I could focus on the roadmap and projects. Other days, I explored upcoming product features. During this process, I experimented with different iterations of the sidebar, visual styles, and colors, and then linked the screens together as a prototype to assess their functionality.</p><p>Through this process, I generated hundreds of screens and was able to narrow down a few major directions that resonated most. Around this time, I began sharing the screens with other designers and people within the company to gather feedback and additional insights.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/7f5178a3de744d905655ebe8cf43dea6b879ed85-2352x1298.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1298" alt="Karri&#x27;s explorations in Figma"/><figcaption>Karri&#x27;s explorations in Figma</figcaption></figure><p>Ultimately, we settled on the main design direction, and I created a few views to showcase it.</p><p>The concept had taken shape. Now, it was time to bring it to life.</p><h2>From a concept to prototype</h2><p>Yann-Edern Gillet</p><p>We started with the concept design Karri had originally imagined, but it wasn’t fully figured out and needed some additional design work. We didn’t know how we would bridge the previous UI design with the new style or if the new design could support all of our application states and options. We were able to make some changes off the bat, such as updating the color system, while other changes had to be punted to later on, such as the different headers you come across while navigating the app.</p><p>To help spark conversation and speed up decisions, we had two people tackle two different design parts of the project simultaneously. While I was building out the prototypes, I referenced example screens that showed the new visual language so I stayed true to the north star. I kept asking myself, “How real could this concept car be?” and then pushed during the tests to get as close to it as possible.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/23839a6bacba4a7617728dada3d37a40dc3584aa-2352x1380.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1380" alt="Before"/><figcaption>Before</figcaption></figure><figure><img src="https://webassets.linear.app/images/ornj730p/production/ea3d9f931653fa9de5bd71269e5abf471a0f7eb5-2352x1672.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1672" alt="Concept"/><figcaption>Concept</figcaption></figure><figure><img src="https://webassets.linear.app/images/ornj730p/production/2ef6f0599f502940b18eae2c37a1fbd9ee09be25-2352x1380.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1380" alt="After"/><figcaption>After</figcaption></figure><h2>What tests did we run before getting into implementation?</h2><p>Yann-Edern Gillet</p><p>It’s easy for the scope of UI redesign projects to blow up. Before we got too far down any one path, we needed to get some confidence on the right option to keep everyone focused. So we ran some stress tests (or crash tests if you want to be dramatic) before going into implementation and iterating with engineers. We tested three main focus areas: the environment, the appearance, and the hierarchy.</p><h3>1. Environment</h3><p>Yann-Edern Gillet</p><p>Our app runs on Electron, so our navigation needed to work not just on macOS and Windows as a native app but also in any browser. That meant that previous/next navigation buttons, history, and tabs needed to be easily removable to work with browsers. We tested a lot of options, from very condensed to more spacious configurations. I often relied on Apple standards, which also helped get close to the feeling of a native app.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/988d7a80fea7432e77f1fb3429bda68e9ef8057a-2352x2352.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="2352" alt="Linear on macOS, Windows, and in a browser"/><figcaption>Linear on macOS, Windows, and in a browser</figcaption></figure><p>I also spent time aligning labels, icons, and buttons, both vertically and horizontally in the sidebar and tabs. It was definitely a challenge given the amount of UI elements we have on this tiny surface. This part of the redesign isn’t something you’ll immediately see but rather something that you’ll feel after a few minutes of using the app.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/11d896d9d6ec5b3e1e2ae8ad6601a6765aac742f-2352x2808.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="2808" alt="Linear&#x27;s sidebar alignments"/><figcaption>Sidebar alignments</figcaption></figure><h3>2. Appearance</h3><p>Yann-Edern Gillet</p><p>Linear is compatible with both light and dark modes, and we also provide a custom theme generator for users who want a unique look for their tools.</p><p>Karri mostly worked with opacities of black and white during his explorations, which really helped him get results quickly and helped me understand the relationship he had in mind between the elements and their respective elevation and hierarchy. As our system relied on a set of variables, I worked with Andreas on our software engineering team to polish and iterate on both the core variables and the operations we apply to them to generate our aliases for surfaces, texts, icons, and controls.</p><p>Andreas Eldh</p><p>A while back, we rebuilt the system for generating custom themes in Linear, using the <a href="https://en.wikipedia.org/wiki/HCL_color_space">LCH color space</a> instead of HSL. LCH has the benefit that it’s perpetually uniform, meaning a red and a yellow color with lightness 50 will appear roughly equally light to the human eye. This makes it possible to generate more consistently good-looking themes, regardless of which base colors are used.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/674c8e9db724ad23e44dcec70a0188aaca174fdc-2352x1616.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1616" alt="LCH vs. HSL"/><figcaption>LCH vs. HSL</figcaption></figure><p>We never fully rolled out this system, though. Custom themes in Linear kept using an HSL-based system to generate theme colors and the new system was only used for surfaces like elevated and translucent parts of Linear.</p><p>With this UI refresh, we started using the new theme generation system not only for custom themes but also for the main light and dark themes. So, instead of having to define 98 specific variables for each theme, we defined three: base color, accent color, and contrast.</p><p>Yes, the theme generation system also supports a contrast variable which defines how contrasty a theme should be. This allows us to automatically include super high-contrast themes for users who need it for accessibility reasons.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/5082e6f59a13b030196e7de596aa26e82163dd74-2352x2488.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="2488" alt="Comparison between contrast set to 30 and 100 in Linear"/><figcaption>Comparison between contrast set to 30 and 100 in Linear</figcaption></figure><p>We kept using LCH for our theme generation, as it is one of the closest color spaces to the human eye and allowed us to deal with different elevations for our surfaces (e.g. background, foreground, panels, dialogs, and modals).</p><p>We migrated the light and dark themes to adopt the same theme generation, so it was easier for Yann and me to share the same language and iterate.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/4440f7f7cd02950e5e71be841b9cdbf20ec7a9c5-2352x1656.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1656" alt="Our new light and dark themes"/><figcaption>Our new light and dark themes</figcaption></figure><h3>3. Hierarchy</h3><p>Yann-Edern Gillet</p><p>Linear relies on a set of structured layouts that support the navigation elements and content. It integrates additional headers to store filters and display options, side panels to display meta properties, as well as the actual display: list, board, timeline, split, and fullscreen.</p><p>When I joined the project, Karri had already gathered most of the app’s views and their respective states, so I was able to run all of my tests quite effectively. I mostly worked by type of view (list, board, split, etc.) as I found it easier to focus and ensure that every decision worked in all cases.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/6f49fe3e5f0efea0a4c496abd1ed7000a0a19184-2352x1710.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1710" alt="Some of the views being tested with the new UI"/><figcaption>Some of the views being tested with the new UI</figcaption></figure><h2>What milestones did we use?</h2><p>Yann-Edern Gillet</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/51ed21ce89beabbef50d4236edf31d7c9fa29c3c-2352x1728.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1728" alt="Milestones and progress chart of the New UI project"/><figcaption>Milestones and progress chart of the New UI project</figcaption></figure><p>We divided the project into five milestones:</p><ol><li><strong>Stress tests</strong>: Following the series of explorations made in November 2023, we tested if the direction felt right in the main views of Linear: Inbox, Triage, My Issues, Issues List, Project, Cycles, Roadmap, Search.</li><li><strong>Behavior definitions</strong>: As the direction was refined, we documented and defined the behaviors of the main components of the app: sidebar, tabs, app headers, and view headers.</li><li><strong>Sidebar and chrome refresh</strong>: We implemented the first bits of the refresh on the sidebar, tabs, and view headers. We also improved the appearance and contrast of our theme for light and dark modes. We used a feature flag to allow for internal testing at this stage.</li><li><strong>Private beta</strong>: We started rolling out the new design in Private beta to get initial feedback. Once we felt comfortable, we began rolling out the changes to a percentage of workspaces each day.</li><li><strong>GA: </strong>We released the new UI to all workspaces.</li></ol><p>We also have to give a shoutout to all the friends of Linear for their feedback throughout the entire process.</p><h2>How did we prioritize the refresh work with other projects?</h2><p>Karri Saarinen</p><p>It’s always better to do a redesign quickly. Otherwise, you will block almost every project and create design debt as newly added features and screens need to be redesigned very soon after they are created. Once we had the initial direction in place, we focused a small team on the redesign: Romain and Yann led the efforts with contributions from Andreas, Adrien, and the full Linear design team.</p><p>Romain Cascino</p><p>We knew that in order to move quickly and ship our work successfully, we needed to dedicate time and team resources to it. We couldn’t treat it as a side project. All in all, the redesign project took about six weeks to complete.</p><p>We kicked off the project at an offsite in Athens earlier this year, where we tackled a big chunk of the initial work, most notably on the sidebar, tabs, and different levels of headers.</p><p>Each afternoon, we divided the coding portions into groups of two engineers while designers iterated on other parts of the project, building a pipeline for us to work from. This daily back-and-forth between designers and engineers helped us get the first working version of the new UI by the end of the week. The result of that week’s work was added to a feature flag that allowed everyone else at Linear to start testing the new UI.</p><p>Yann-Edern Gillet</p><p>Next, we worked on the Inbox. We redesigned notifications to be more centered around the notification type and emphasized the faces of your teammates. We simplified headers and filters to improve the overall navigation. We also reviewed comments alignments and harmonized the look of our buttons with the new themes.</p><p>We continued polishing the new color theme with Andreas to increase the overall contrast and return to a more neutral and timeless appearance. The latter was achieved by limiting how much chrome (blue in our case) was used in the calculations applied to our color system. The contrast of the content has also been improved by making our text and neutral icons darker in light mode and lighter in dark mode.</p><p>We started using Inter Display to add more expression to our headings while maintaining their readability and kept using regular Inter for the rest of the text elements.</p><h2>How did the wider Linear team help test the new UI?</h2><p>Romain Cascino</p><p>We dogfood all our new features before releasing them publicly to ensure everything works and feels as it should. After refining the design for about a week after the offsite, we turned on the feature internally and invited anyone at the company to try it out and give us feedback.</p><p>It was crucial to get the maximum amount of feedback from the different teams (Product, Customer Success, Sales, Brand, etc.) as they’re more inclined to use specific parts of the app to get their job done. For example, Product and Sales teams are often looking at a roadmap view, project leads frequently use documents, while the Customer Experience team is often filing issues to Triage and working out of issue views in select teams.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/075052324554b12d5a335417d622548f7cc41dce-2352x544.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="544" alt="Our internal toolbar with the New UI toggle"/><figcaption>Our internal toolbar with the New UI toggle</figcaption></figure><p>We also added a toggle to our internal developer toolbar, as a shortcut to quickly switch the new UI feature flag on or off, which helped the team to compare different parts of the app more easily.</p><h2>How did we manage feedback and questions across the company during final testing?</h2><p>Yann-Edern Gillet</p><p>We wanted to make sure all the updates could easily be found in one place as we moved along, so we created a dedicated Slack channel linked to the project in Linear. Discussions and questions on our weekly project updates in Slack automatically synced to Linear, so we didn’t lose any context between the tools or teams.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/02808883a5ca24f73732ee66a51bc3386902996a-2352x3348.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="3348" alt="A project update sent after reaching the Private beta milestone"/><figcaption>A project update sent after reaching the Private beta milestone</figcaption></figure><h2>Welcome to the new Linear</h2><p>You can explore the new UI in your Linear workspace today. Let us know what you think on <a href="https://twitter.com/linear">Twitter</a>, <a href="https://www.linkedin.com/company/linearapp/">LinkedIn</a>, or in our <a href="https://linear.app/join-slack">Slack</a> community.</p><p>If you like how we build, <a href="https://linear.app/careers">apply to join our team</a>. We’re hiring for product, design, and brand roles.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A design reset (part I) ]]></title>
            <link>https://linear.app/now/a-design-reset</link>
            <guid>https://linear.app/now/a-design-reset</guid>
            <pubDate>Wed, 27 Mar 2024 15:28:00 GMT</pubDate>
            <description><![CDATA[No software design is truly timeless. We often hesitate to do product redesigns, even when we probably need one. I've been part of these projects several times in my career as a designer and it’s never been something easy to pull off.]]></description>
            <content:encoded><![CDATA[<p>No software design is truly timeless. We often hesitate to do product redesigns, even when we probably need one. I’ve been part of these projects several times in my career as a designer and it has never been something easy to pull off.</p><p>The challenges start from the fact that it’s never a good time to do a redesign. It’s hard to make it a priority. It’s difficult to calculate the ROI on it. And if you run your product with A/B testing, every global redesign will tank the metrics in the short term. Teams get furious and try to push back as they don’t want to see their product surfaces changed outside of their control.</p><p>However painful it might be, there is a real need for redesigns, and your product experience suffers if you never do it.</p><h2><br/>Design debt is real</h2><p>The real need for redesigns often comes when you have created a successful product and it has evolved with the market and users over time. This is also the case with Linear.</p><p>We ship small changes daily, and something major almost every week. Every year, it’s almost like a new product. This incremental way of building the product is hugely beneficial, and often necessary — though it unbalances the overall design, and leads to design debt. Each new capability adds stress on the product’s existing surfaces for which it was initially designed. Functionality no longer fits in a coherent way. It needs to be rebalanced and rethought.</p><p>I believe this debt has to be paid if you aim to keep your product experience excellent. If your product evolves fast, you should be paying this debt every 2-3 years. The longer you wait and the more successful your product becomes, the more you will have to untangle.</p><p>Slowly the user sentiment and perception might start turning negative and you might start looking like a dinosaur incumbent. This leaves an opportunity for some nimbler player to come along and compete in your market. Companies often try to address this with brand refreshes, but if you don’t refresh the product, nothing truly changes about the experience.</p><p>While the design debt often happens in small increments, it’s best to be paid in larger sweeps. This goes against the common wisdom in engineering where complete code rewrites are avoided. The difference is that on the engineering side, a modular or incremental way of working can work as the technical implementation is not really visible. Whereas the product experience is holistic and visual. You cannot predict which path the user takes. If you update just one module or view at a time, the overall experience becomes more disjointed. Secondly, if your goal is to reset and rebalance the whole product UI and experience, you have to consider all the needs simultaneously. An incremental approach doesn’t let you do that.</p><p>There needs to be a major reset on which you can leap forward.</p><h2><br/>CEOs &amp; leadership need to be behind the change</h2><p>A real redesign can only happen when there is a reset on the design across the whole product. That’s why I’ve never seen redesigns successfully executed without the CEO behind it. While design might have a seat at the table generally, they are usually not able to convince everyone around that table. Only the CEO can push through all the excuses and give the latitude to a project touching all of the surfaces the product needs.</p><p>The CEO’s interest is not only critical because it gives the project the air cover it needs, it also gets them and many other execs involved and makes sure they take it seriously. While leadership might not have direct input on the design itself, they have a perspective on where the company is headed, so you can proverbially skate to where the puck is going.</p><p>The way to get the CEO involved is to tie a design reset into a larger company shift or directional change. For example, if a company is looking at a new product, or major new feature, a redesign project can be a way to imagine how it might look or feel. This can be the justification for why you need to spin up the team (and at the same time, you can make a case for updating the rest of the product experience).</p><p>For the leadership team, this design project can be the initial momentum they need to galvanize the company and steer it into a new direction. Organizations are often quite stuck in their views and ways of doing things, making them less enthusiastic about something new. When I was at Airbnb, the mobile redesign project was a way to shift the company to become mobile-first. It set the tone and got the message across to the whole company that mobile was happening and that it was happening now. While it looks like an obvious change in hindsight, there were many arguments against it at the time and it took a lot of convincing. Switching to think about mobile meant the design and features had to be rethought to work in that platform.</p><p>While Linear is a smaller and younger company, we’re also undergoing a shift. The product vision has widened from a simple issue tracker to a purpose-built system for product development. We are now moving into planning workflows that naturally come before the building or execution phase of building products. This product evolution creates new future needs from the product design, and we have to make space for it.</p><h2><br/>From concept to yes</h2><p>When you realize that a design reset is needed for your product, how do you actually get started with the project? You start with a standalone team to explore the new concept design and create something the company can rally around.</p><p>The auto industry has a practice of building “concept cars”, where they explore the next version of the car freely and boldly without considering practicality. A concept car sets the direction, but usually is not expected to land in production because it’s too impractical or costly to manufacture.</p><p>Calling it a concept is important, especially at the start. A secret I’ve learned is that when you tell people a design is a “concept” or “conceptual” it makes it less likely that the idea is attacked from whatever perspective they hold or problems they see with it. The concept is not perceived as real, but something that can be entertained. By bringing leaders or even teams along with the concept iterations, it starts to solidify the new direction in their mind, eventually becoming more and more familiar. That’s the power of visual design.</p><p>It becomes something easier and easier to say yes to, not something to say no to.<br/></p><p><strong>But eventually the concept has to become real in some way. How did we do this for Linear? We cover that in <a href="https://linear.app/blog/how-we-redesigned-the-linear-ui">Part II</a>.</strong></p><p><br/></p><p></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Rethinking the startup MVP: Building a competitive product]]></title>
            <link>https://linear.app/now/rethinking-the-startup-mvp-building-a-competitive-product</link>
            <guid>https://linear.app/now/rethinking-the-startup-mvp-building-a-competitive-product</guid>
            <pubDate>Wed, 28 Feb 2024 20:26:00 GMT</pubDate>
            <description><![CDATA[Today's startup MVP is about iterating early to build the highest quality competitor to an existing idea, not validating a novel one. This journey involves refining early ideas to compete in an existing market, narrowing the target audience, strategically using a waitlist for feedback, and recognizing indicators of early product-market fit.]]></description>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/1a42246358b48be02b82a3f5da53991780ca2017-2352x716.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/48b28f1e0789209ceb7edc327d4eb04f41eb3f1b-2352x2132.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/ec6a5bc2387ef6d44e0b0e0e050e5d3a610b4596-2352x1500.png?q=95&amp;auto=format&amp;dpr=2"/><p>The minimum viable product, as many founders know it, doesn’t reflect the reality of how products get built today.</p><p>Building something valuable is no longer about validating a novel idea as fast as possible. Instead, the modern MVP exercise is about building <em>a version </em>of an idea that is different from and better than what exists today. Most of us aren’t building for a net-new market. Rather, we’re finding opportunities to improve existing categories. We need an MVP concept that helps founders and product leaders iterate on their early ideas to compete in an existing market.</p><p>When we started to build our MVP for Linear, we spent a lot of time talking to users, narrowed our audience, and tested what we were building. And it taught us some important lessons about our product (and building great products in general).</p><p>Below, I’ll discuss why building in today’s market requires an updated concept of the MVP, the importance of narrowing who you’re building for, the power of strategically using your waitlist, and some indicators you’ll see when you’ve found early product market fit.</p><h2>The MVP is a journey, not one moment in time</h2><p>The MVP as a practice of building a hacky product as quickly and cheaply as possible to validate the product does no longer work. Many product categories are already saturated with a variety of alternatives, and to truly test the viability of any new idea you need to build something that is substantially better.</p><h3>The MVP as we knew it before</h3><p>In 2011, Eric Reis described the MVP in his book <a href="https://www.amazon.com/Lean-Startup-Entrepreneurs-Continuous-Innovation/dp/0307887898"><em>The Lean Startup</em></a> as “the minimum viable product is that version of a new product which allows a team to collect the maximum amount of validated learning about customers with the least effort.”</p><p>He conveyed that if you have an idea and you don’t know if it will succeed at market, you need to quickly build something to validate it. This validation could take many forms, such as a prototype, pamphlets describing your idea, or a commitment form. This worked years ago when you needed quick validation for a novel idea or service concept and there weren’t as many existing variations of that idea.</p><p>For example, Airbnb wanted to build a service that relied on people being comfortable spending the night at a stranger’s house. When they started in 2009, it wasn’t obvious if people were ready for this. Today, it’s obvious that it works, so they wouldn’t need to validate the idea. A similar analogy works for Lyft when they started exploring ridesharing as a concept.</p><h3>The MVP as it exists today</h3><figure><img src="https://webassets.linear.app/images/ornj730p/production/1a42246358b48be02b82a3f5da53991780ca2017-2352x716.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="716" alt="Infographic showing the the difference of the MVP concept before (direct line) vs today (wavy line)"/><figcaption>The MVP as we knew it vs how it is today</figcaption></figure><p>Today, the MVP is no longer about validating a novel idea as quickly as possible. Rather, its aim is to create a compelling product that draws in the early users in order to gather feedback that you then use to sharpen the product into the best version of many.</p><p>If you look at successful companies that have IPO’d in the recent years–Zoom, Slack, TikTok, Snowflake, Robinhood–you see examples not of novel ideas, but of these highly-refined ideas.</p><p>Since many of us are building in a crowded market, the bar for a competitive, public-ready MVP is much higher than the MVP for a novel idea, since users have options. To get to this high bar, we have to spend more time refining the initial version.</p><div>The original MVP idea can still work if you’re in the fortunate position of creating a wholly new category of product or work with new technology platforms, but that becomes rarer and rarer as time goes on.</div><p>Founders and product leaders must refine their visions and audiences and relentlessly iterate based on user feedback to build great products. The MVP process then becomes a journey to figure out if there’s something in an existing category the market wants improved.</p><p>Let’s jump over the regular startup journey that you might take today when building a new product:</p><ul><li>You <strong>start with the idea</strong> on how you want to improve on existing products in a category.</li><li>You <strong>build</strong> your first prototype.</li><li>You<strong> iterate</strong> with your vision and based on feedback from early users.</li><li>You get an inkling of <strong>product market fit</strong> and traction.</li><li><em>Optional:</em> You start<strong> fundraising</strong> (with demonstrable traction).</li><li><em>Optional:</em> You <strong>scale</strong> your team,<strong> improve</strong> the product, and <strong>go to market</strong>.</li></ul><figure><img src="https://webassets.linear.app/images/ornj730p/production/48b28f1e0789209ceb7edc327d4eb04f41eb3f1b-2352x2132.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="2132" alt="Roadmap style graphic showing the journey from idea to product market, with stops along the way. "/><figcaption>The winding journey from idea to product market fit</figcaption></figure><p>The role of the MVP journey is to demonstrate your idea has potential in the market, and – if you’re not bootstrapping the journey yourself – get your startup ready to raise funds. And you have to do this with limited resources.</p><h2>The importance of narrowing your users</h2><p><strong>The first key lesson we learned during our MVP process was to scope down who we were building for as much as possible.</strong></p><p>In today’s landscape, you’re likely competing against many other products. To win, you have to build a product that provides more value to your users than your competition does.</p><p>To be able to do this with limited resources, you must scope down your audience (and thus your ambitions) as much as possible to make competing easier, and aim to <a href="https://linear.app/blog/building-at-the-early-stage#solve-the-problem-not-the-feature">solve the problems</a> of specific people.</p><p>When we started Linear, our vision was to become the standard of how software is built. This is not really something you can expect to do during your early startup journey, let alone in an MVP. But you should demonstrate you have the ability to achieve your bigger vision via your early bets. We chose to do this by focusing on IC’s at small startups. We started with the smallest atomic unit of work they actually needed help with: issue tracking.</p><p>Something that helped immensely was that we were our own ideal customer profile. We could build a product for ourselves. We knew we wanted our product to demonstrate three values:</p><ol><li>It should be as<strong> fast</strong> as possible (local data storage, no page reloads, available offline).</li><li>It should be <strong>modern</strong> (keyboard shortcuts, command menu, contextual menus).</li><li>It should be <strong>multiplayer </strong>(real-time sync and teammates presence).</li></ol><p>Once we had built something for ourselves that we thought was valuable, we needed real user feedback. This is an extremely important step of the MVP journey—don’t underestimate it. Engage with users, have conversations with real people, gather their insights and evolve from it.</p><div>Don’t just ask your friends though. When we first started, I did this and my friend came back and said his current solution was fast enough, he didn’t need shortcuts, and he didn’t care about multiplayer.</div><h2>The power of the waitlist</h2><p>After the prototyping stage and getting some small group feedback from early users, you need to build awareness around your product to get a bigger pool of people interested in your product and ready to try it out. One way to achieve this is to build a waitlist of target users, invite them in small groups, learn from what they do with the product, interview them, and get feedback and insight into shortcomings.</p><p><strong>The second lesson we learned: The waitlist is a great tool to maintain the narrow focus and bring in the right kind of early adopters.</strong></p><h3>How to build your waitlist</h3><p>To build your pool of beta users to learn from, you need some mechanism for amassing a waitlist with a large variety of users or a smaller, targeted list with just the right people.</p><p>There are a few ways to go about this, but the quickest (if you’re able) is to leverage your social following. If you don’t already have a social platform to build from, partnering with leaders in your personal network, investors, and community influencers can help you reach the right people. The goal is to create a list of people who are interested in what you’re building, and who you can pressure test your product against to refine it into something great.</p><p>Remember, you’re likely not building a revolutionary or novel product. You’re unlikely to go viral with your announcement, so you need a network of people who understand the “why” behind your product to help spread the word to drive people to sign up. Any product category has many people who are frustrated with the existing tools or ways of working. Ideally you find and are able to reach out to those people.</p><h3>How to use your waitlist to build a high-impact product</h3><figure><img src="https://webassets.linear.app/images/ornj730p/production/ec6a5bc2387ef6d44e0b0e0e050e5d3a610b4596-2352x1500.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1500" alt="Graph showing the decrease in the number of people on your waitlist as you near public launch. "/><figcaption>Draw from your waitlist over time to continuously refine your product before launch.</figcaption></figure><p>Once you have a bunch of people on your waitlist, you need to invite the <em>right </em>users at each stage of your iteration. You want to invite people who are likely to be happy with the limited set of features you’ve built so far. Otherwise, they’ll churn straight away and you’ll learn nothing.</p><p>To do this, we asked people a few basic questions when they signed up onto our waitlist:</p><ul><li>What’s the size of your company?</li><li>What’s your role?</li><li>What project management solution are you currently using?</li><li>What version control system are you using?</li><li>Why do you want to try Linear?</li><li>What’s your pet peeve with current solutions?</li></ul><p>We only had a GitHub integration to start, so we filtered the responses to make sure we were only inviting people who could actually use the product. We then handpicked founders of small companies with pet peeves we were already addressing. Founders are usually happy to chat and are also more forgiving if functionality is missing (if they believe in the direction of the product). This gave us a good initial user set that didn’t churn, and that we could have frequent conversations with to understand the shortcomings of our prototype.</p><p>Then, you start addressing the feedback of your early users and prioritize functionality accordingly. When your users stop asking for new features, this is a good indication it’s time to pull in more people from the waitlist and expand your target segment a bit as well.</p><p>From here, you repeat the cycle, inviting more users from new target audiences, learning from how they use the product, and incorporating their feedback. You effectively turn your waitlist into a more refined product that caters to an ever growing audience.</p><h2>Indicators you’re ready for public launch</h2><p>Knowing you’re ready to launch your product publicly comes down to testing user sentiment and trusting your gut.</p><p>Here are three ways to go about testing user sentiment:</p><ol><li><strong>Meet with users </strong>via Slack, Zoom, or in person and figure out how happy they are</li><li><strong>Use a product-market fit questionnaire</strong> (and ask how they would feel if they suddenly couldn’t use your product tomorrow)</li><li><strong>Ask users to pay</strong> (the ultimate test)</li></ol><p>To test willingness to pay, we started with a pay-if-you-want model. Users didn’t have to pay to use Linear during beta, but if they went into their settings, they found a “Friends of Linear” plan offering nothing more than our gratitude.</p><p>After using these methods for a year, we gained the confidence we needed to launch publicly (and then asked users to subscribe to a real paid plan).</p><h2>Public launch and beyond</h2><p>Once you’ve demonstrated value to and incorporated the feedback from your early users, you’re probably ready to open up access and launch publicly. You can continue to use this MVP journey model as your product grows to test new features and offering out with existing customers or new user segments.</p><p>To recap:</p><ul><li><strong>Narrow down your initial audience and build for them: </strong>Figure out who you’re building the product for and make the target audience as small as possible before expanding.</li><li><strong>Build and leverage your waitlist: </strong>The waitlist is the grinding stone with which you can sharpen your idea into something truly valuable that will succeed at market, so use it effectively.</li><li><strong>Trust your gut and validate demand with your users: </strong>Talk, talk, talk to your users and find out how invested in the product they are (and if they’d be willing to pay)</li></ul><p>And, of course, I’m available on X <a href="https://twitter.com/artman">@artman</a> for questions and thoughts.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Descript’s internal guide for using Linear as your work operating system]]></title>
            <link>https://linear.app/now/descript-internal-guide-for-using-linear</link>
            <guid>https://linear.app/now/descript-internal-guide-for-using-linear</guid>
            <pubDate>Wed, 31 Jan 2024 22:04:03 GMT</pubDate>
            <description><![CDATA[Linear is a critical internal tool for Descript’s EPD and business teams. The guide includes a breakdown of tips for mastering keyboard shortcuts, integrating Slack messages with Linear, using Raycast for quick issue capture, and customizing Linear for focused task management.]]></description>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/6cf43c5e841800f0dcbf90c40068b0df77533a63-1176x720.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/37666add300ad92939dadbaccc2202781a3b0bbf-1176x1008.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/af83ac2a62321176a976820fb8cc35016823f530-1522x970.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/1609398390411d017baa008d67ad7b018e269490-1176x434.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/6f73cd010c40c1fb52faa35a19b100dae9926789-1176x696.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/fe35433b6165d7ad0643d22979690e25e1e82f5d-1176x696.png?q=95&amp;auto=format&amp;dpr=2"/><p>Today, your tooling is the place most of your team’s collaboration and work happens. What tools you choose–and how well your team truly embraces the functionality and potential of them–determines how well your organization operates.</p><p>Thankfully, leaders like <a href="https://www.linkedin.com/in/andrewmason/">Andrew Mason</a>, CEO at Descript, are out there creating comprehensive resources for their teams, including a great breakdown of how to use Linear as your work operating system.</p><p>For the unfamiliar, Descript is an all-in-one video editing platform that’s been <a href="https://linear.app/customers/descript">building on Linear since December 2020</a>. Over the years, we’ve helped them uplevel their engineering workflows, and drive deeper collaboration between different functional teams.</p><p>As Andrew expands on in the re-printed guide below, the superpower of a great collaboration tool isn’t really about the tool at all. Rather, it’s about the ways you can free up your time to focus on more satisfying work (in turn making your team more successful and happier to work together).</p><p>Thanks again to Andrew for creating such a great resource for the teams at Descript, and for letting us republish it here for the wider Linear community.</p><hr/><h2>Descript’s Linear best practices</h2><p>At Descript, Linear is core to the way we work internally, and if you use it effectively, should be your central work operating system.</p><p>But, like all tooling changes, getting up to speed with it and helping our engineering, product, design, and business teams learn how to best leverage it has taken some time and standardization. This is less a comment on Linear and more just the reality of folks learning a new way to do project and task management.</p><p>It’s worth putting in the time to learn though, because, as a company, these are the benefits we get from using Linear effectively as a collaboration tool:</p><ul><li><strong>Less time looking for things</strong> (Did someone file a ticket for X already? Where is that bug?)</li><li><strong>Less fielding questions</strong> <strong>from a zillion people</strong> like ”What’s the status of X?” - just look it up in Linear</li><li><strong>Less interruptive use of Slack</strong> for things that should really be handled as tickets (distinction touched on below)</li><li><strong>A framework for you to prioritize your work</strong> and decide what you can/can’t commit to, so you don’t get overwhelmed. And you automatically communicate those prioritization decisions to everyone and automatically set expectations</li></ul><p>Below are the Linear best practices encouraged across all the teams at Descript.</p><h2>How to get more efficient with Linear</h2><p>Linear has a range of features that help you work faster and smarter across all your workflows, including keyboard shortcuts, quick screen capture with Raycast, and their <a href="https://linear.app/integrations/slack">Slack integration</a>.</p><p>If you spend a few minutes at the beginning of your Linear journey understanding how to navigate these shortcuts, it’ll save you a ton of time down the road.</p><h3>Learn the keyboard shortcuts</h3><p>You’re going to spend a lot of time in Linear, but you’ll spend a lot less if you invest in learning the built-in keyboard shortcuts. Linear is probably the most tricked-out with keyboard shortcuts app I’ve ever used. Here are some of my favorites:</p><ul><li><kbd><strong>command + k</strong></kbd> to open a list of commands specific to the item you’re on (e.g. moving an issue to another project, changing the assignee or followers, changing status, etc.).</li><li><strong><kbd>g</kbd> and then <kbd>various keys</kbd></strong> to quickly navigate to My Issues, Projects, etc.</li><li><strong><kbd>o</kbd> and then <kbd>p</kbd></strong> to search projects, or <strong>t</strong> to switch teams, or <strong>d</strong> to open project documents</li><li><strong><kbd>j</kbd> and <kbd>k</kbd></strong> to navigate up and down list items</li></ul><p>There are also a bunch of single-key keyboard shortcuts (<kbd><strong>c</strong></kbd> to create issue, <kbd><strong>a</strong></kbd> to assign to user, <kbd><strong>l</strong></kbd> to add label, <kbd><strong>p</strong></kbd> to assign priority, and <kbd><strong>f</strong></kbd> to filter are particularly helpful). You can access them for whatever the active item is you have selected. If it takes some time to remember them all it’s ok (I’m still getting them into my muscle memory).</p><h3>Send saved Slack messages to Linear</h3><p>Managing two inboxes is hard. Here are two ways to use Zapier to stop flipping between multiple inboxes and merge your Slack and Linear to-dos into your Linear inbox.</p><h4>The quick improvement</h4><p>The end result of this flow is to have your saved messages in Slack automatically added to your Linear inbox with the original message context. This way, you can easily follow up on tasks and messages at a future date.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/6cf43c5e841800f0dcbf90c40068b0df77533a63-1176x720.png?q=95&amp;auto=format&amp;dpr=2" width="1176" height="720" alt="The flow for automatically creating issues in Linear based on your saved Slack messages."/><figcaption>The flow for automatically creating issues in Linear based on your saved Slack messages.</figcaption></figure><p>Here are the steps:</p><ul><li>Go to your Zapier account and create a new Zap</li><li>For trigger event, select Slack and set the event to “save message” (make sure you’ve connected your work Slack account)</li><li>For the action, find Linear and set the event to create an issue (sign into your Linear account before continuing)</li><li>Tell Zapier what team to create the issue in and what info you want to populate the issue title and description with<ul><li>For title, I use username:(the description text)</li><li>For description, I repeat the message text and include a markdown link to the original message for reference later</li></ul></li></ul><div>You can also turn messages into issues with the Linear Slack integration and manually edit issue details such as title, description, assignee et al. (without the Zapier workflow).</div><h4>The powered-up version</h4><figure><img src="https://webassets.linear.app/images/ornj730p/production/37666add300ad92939dadbaccc2202781a3b0bbf-1176x1008.png?q=95&amp;auto=format&amp;dpr=2" width="1176" height="1008" alt="The flow for having messages marked as scheduled in Slack automatically create issues in Linear for you with AI-summarized descriptions."/><figcaption>The flow for having messages marked as scheduled in Slack automatically create issues in Linear for you with AI-summarized descriptions.</figcaption></figure><p>If you want to take it to the next level, you can also have chatGPT summarize the description of the message. This is the workflow I use every day:</p><ul><li>Building on the zap above, add chatGPT to the flow before the Linear issue creation step</li><li>For the action, have chatGPT summarize the Slack message into 12 words or less</li><li>Now, in the Linear action step, populate your issue description with the summarized version. Include the markdown link back to Slack (I use the same title formatting as before).</li><li>Set the issue status as triaged to yourself</li></ul><h3>Use Raycast for quick capture</h3><figure><img src="https://webassets.linear.app/images/ornj730p/production/af83ac2a62321176a976820fb8cc35016823f530-1522x970.png?q=95&amp;auto=format&amp;dpr=2" width="1522" height="970" alt="Screenshot of the Raycast search modal featuring the &quot;create issue for myself&quot; command"/><figcaption>Customize Raycast shortcuts to create issues in Linear from anywhere</figcaption></figure><p>Another key requirement of any task management system is a way to quickly capture an emergent issue. That way, you’re never left trying to store this stuff in your brain.</p><p>Unlike many native task management apps, Linear doesn’t have a quick-entry global system hotkey type of thing. Instead, <a href="https://linear.app/integrations/raycast">you can use Raycast</a>, a free system-wide command bar “Spotlight on Steroids”.</p><p>Install the Linear extension, and then bind the create issue for myself action to the hotkey <kbd>command + space + shift</kbd>.</p><h2>How to customize Linear to your work and focus areas</h2><p>Linear doesn’t just offer features to help you customize your shortcuts. It also gives you ways to customize your inbox and views to stay focused on your highest-priority work.</p><h3>Configure My Issues to only contain what’s actionable</h3><p>A task management system should give you a view of all your issues. It should reduce the chaos to something orderly and actionable. <strong>My Issues</strong> (<kbd><strong>g</strong></kbd> and then <kbd><strong>m</strong></kbd>) is how Linear does this.</p><p>To make <strong>My Issues</strong> more manageable, I recommend adding a few filters (which Linear remembers until you change them):</p><ul><li>Don’t show <strong>Project Status</strong> = <strong>Done</strong> or <strong>Backlog</strong></li><li>Don’t show issues that are blocked.</li><li>Try to keep <strong>In progress</strong> issues to only 1-2 issues at a time*</li></ul><p><em>*I’m sure this will vary depending on your role, but the point is, it should only be the stuff that you’re actively working on, and everything else should be in Todo.</em></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/1609398390411d017baa008d67ad7b018e269490-1176x434.png?q=95&amp;auto=format&amp;dpr=2" width="1176" height="434" alt="Screenshot of Linear UI featuring Andrew&#x27;s My Issues view with done, backlog and blocked issues filtered out."/><figcaption>Keep your My Issues view orderly and actionable by using filters to remove the noise.</figcaption></figure><p><strong>My Issues</strong> in a more focused state w/ <strong>Status</strong> and blocking filters.</p><h3>Use a saved View to promote tasks from Backlog to Todo</h3><figure><img src="https://webassets.linear.app/images/ornj730p/production/6f73cd010c40c1fb52faa35a19b100dae9926789-1176x696.png?q=95&amp;auto=format&amp;dpr=2" width="1176" height="696" alt="Screenshot of the Linear UI featuring Andrew&#x27;s view My Backlog with sections for in progress, to do, backlog, and triage statuses. "/><figcaption>Separate out backlog issues from your My Issues view to make it easy to promote them to todo as needed.</figcaption></figure><p>The <strong>My Issues</strong> view is intended to be the spot where you’ll spend most of your time (think of it as your home view). Since you should have backlog issues filtered out of your <strong>My Issues</strong> view (and you want to avoid changing view filters back and forth), I recommend saving/favoriting a separate view for this to see all open issues sitting in your backlog so you can promote them to <strong>Todo</strong> as needed.</p><p>You can use the view I use, which is called Open by Project. This view groups issues by the project.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/fe35433b6165d7ad0643d22979690e25e1e82f5d-1176x696.png?q=95&amp;auto=format&amp;dpr=2" width="1176" height="696" alt="Screenshot of the Linear UI featuring Andrew&#x27;s Open by Project view which groups backlog tasks by project area. "/><figcaption>Group backlog issues by project to help you review and promote priority tasks each week. </figcaption></figure><p>At the beginning of the week, I’ll open this view and do a pass-through on every issue, deleting stuff that’s no longer relevant or needed.</p><h2>How to handle issues effectively</h2><p>As we do more and more work in Linear, the number of issues we create and interact with can become unwieldy. To avoid creating a bunch of noise for yourself and your teammates, there are a few hygiene best practices to keep on top of.</p><h3>Use the Todo/Backlog statuses to organize active work</h3><div>This best practice is for people who aren’t doing EPD-style sprint/cycle planning - those who are have their own process for this.</div><p>Marking an issue status as <strong>Todo</strong> means you plan to start it in the next week or so. Everything else should be in the <strong>Backlog</strong>.</p><p>The first thing you do each week should be to go through all the issues assigned to you in your backlog and promote a manageable number to <strong>Todo</strong>.</p><p>This will help you prioritize. It will also set expectations with your collaborators on when you plan to actively work on an issue. For example, the <strong>Backlog </strong>status communicates it’s not coming soon. Meanwhile, <strong>Todo</strong> shows it’s imminent.</p><h3>Use Issue Blocking and Reminders to focus My Issues</h3><p>Sometimes you’ll have a task that’s <strong>In Progress</strong> or you otherwise want to keep it in <strong>My Issues</strong>, but you can’t actually act on it. This is just creating cognitive noise. To narrow my focus, there are two things I do:</p><ol><li>If I’m blocked by another issue, I <strong>mark the issue as Is blocked by</strong> (<kbd>command K</kbd> → <strong>Blocked</strong>) and filter blocked issues from the list.</li><li>If I’m not yet ready to work on it, I<strong> move the issue to my Backlog with a reminder to follow up</strong> at a future time (<kbd>H</kbd> shortcut).</li></ol><h3>Set a Priority instead of a Due Date to rank issues</h3><p>Sometimes due dates are real (like when there’s an external dependency), but often we’re just using them to stack rank work. If this is the case, try using priorities instead.</p><p>When you’re going through your backlog, promote the highest-priority items — it’s that simple. This will save you from the common and demotivating state of having a zillion overdue tasks. Try to only use due dates when they’re real.</p><h2>How to collaborate in Linear</h2><p>The main goal of using Linear as our work operating system is to break down silos across teams and make it easier to do great work together. Here are a few of the best practices to follow to make it easier (and joyful) to build with your teammates.</p><h3>When you assign issues, put them in Triage</h3><p>When you assign new issues to someone, putting them directly into <strong>Todo</strong> is tantamount to declaring that they’ll be working on it this week. So use your judgment, but generally it’s better to mark issues as <strong>Triage</strong>, which is a status that tells the assignee that they need to process/assign a status.</p><h3>Use “Verify” when done with issues</h3><p>Oftentimes, we need to have someone review and sign off on work before it’s truly done. To reflect this review stage, we created a custom workflow status in Linear called verify before the <strong>Done</strong> status. Rather than marking a task as done, use verify to flag that it’s ready to review and then assign it to your teammate.</p><h3>Stay on top of your Inbox</h3><p>For this all to work, it’s paramount others can rely on you to read new comments and see new issues as they come in. Treat your Linear <strong>Inbox</strong> the way you treat Slack (and the way, once upon a time, we all treated email): Keep it open and process it at the same rate you would process things with those tools.</p><p>When people feel the need to ping you on Slack to get feedback on a comment left in Linear, it’s a pretty good signal that you’ve got work to do here!</p><p>To tame your Linear Inbox, use general <a href="https://www.wired.com/story/everything-you-thought-you-knew-about-inbox-zero-is-wrong/">Inbox Zero processing principles</a> (i.e. clear out your notifications as you’re reading them.) Use the <strong><kbd>E</kbd>  </strong>keyboard shortcut to quickly archive an Inbox notification, <kbd><strong>Shift + H</strong></kbd> to snooze an issue, and use <strong><kbd>J</kbd> </strong>and <kbd><strong>K</strong></kbd> to navigate up and down the list.</p><h3>Be intentional about when you start a Slack thread vs assign an issue in Linear</h3><p>As we streamline how we work and communicate as a team, we need to be more intentional about what kinds of communication goes in which channel.</p><ul><li>Use Linear if it’s a task that someone needs to complete (distinct outcome)</li><li>Use Slack if it’s a discussion without a “completion” state (fuzzy outcome) or if it involves a lot of context sharing between teams.</li></ul><div>If you’re having a long conversation with multiple stakeholders in Slack about a new, distinct issue or task, you can create an issue based on the thread. Linear will keep the Slack thread and Linear issue comments in sync via our Slack Integration.</div><h2>Take what works and leave the rest</h2><p>The principles throughout are good hygiene for any team using Linear that wants to improve their day-to-day workflows.</p><p>Learning a new way of working always takes some intentional effort, but Linear helps us spend less time answering tons of questions and searching our systems for information, and more time working on our actual product.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Post mortem on Linear incident from Jan 24th, 2024]]></title>
            <link>https://linear.app/now/linear-incident-on-jan-24th-2024</link>
            <guid>https://linear.app/now/linear-incident-on-jan-24th-2024</guid>
            <pubDate>Tue, 30 Jan 2024 15:15:09 GMT</pubDate>
            <description><![CDATA[Details on the cause of our January 24 temporary data loss incident and learnings to prevent future outages]]></description>
            <content:encoded><![CDATA[<p>On Wednesday January 24, Linear experienced a temporary <a href="https://linearstatus.com/incidents/01HMX98N26X50PZR72156MN1F4">data loss incident</a> from 04:47 to 09:56 UTC (about five hours) due to restoration from backup. This affected workspaces that made changes during this window or updated via automated processes (e.g. cycle automation), especially those in the EU due to the timing.</p><p>As part of the disaster recovery process, we took Linear offline for one hour, impacting all users. We restored over 99% of lost data within 36h of the start of the incident. But, in some cases we couldn’t restore data due to conflicts.</p><p>A database migration caused the incident, which accidentally deleted data from production servers. We put Linear into maintenance mode and reverted the database to a backup taken a few hours prior. We immediately began restoring missing data, which took two days to complete.</p><p>We’re deeply sorry for the inconvenience and frustration this incident caused for our customers. Reliability and security are top priorities for us at Linear and last week we fell short from our promise to our users and ourselves. In learning from this incident, we’ll improve our tools and processes to prevent such mistakes and recover more quickly.</p><p>Below is a timeline of the incident, and more details around its cause and the ultimate fix.</p><h2><strong>Incident timeline</strong></h2><p><em>All times are in Coordinated Universal Time (UTC)</em></p><h3><strong>January 24</strong></h3><ul><li><strong>04:47</strong>: Full database backup completed (pre-incident).</li><li><strong>07:01</strong>: Merge of migration that caused data loss.</li><li><strong>07:20</strong>: Migration completed.</li><li><strong>07:52</strong>: Strange notifications noticed in the app, engineering and support notified to check other reports.</li><li><strong>08:10</strong>: Critical incident initiated with Zoom call to investigate, additional engineers paged.</li><li><strong>08:36</strong>: Update posted to Linear status page and shared on X: “<a href="https://x.com/linear/status/1750074910456602761?s=20">Investigating data access issues</a>“</li><li><strong>09:20</strong>: Additional update posted on Linear <a href="https://linearstatus.com/">status site</a>.</li><li><strong>09:56</strong>: Linear put in maintenance mode to prevent further changes and recover from backup.</li><li><strong>10:48</strong>: Linear access restored with the database backup from 04:47.</li><li><strong>11:09</strong>: Status site updated to monitoring.</li><li><strong>11:30</strong>: Restoration started for all data entered between 04:47 and 09:56.</li><li><strong>13:50</strong>: Emails sent to customers who had created workspaces between 04:47 and 09:56 asking them to recreate their workspace as we could not rebuild it.</li><li><strong>15:35</strong>: Emails sent to affected users and workspace administrators with information about the incident and restoration process.</li></ul><h3><strong>January 25</strong></h3><ul><li><strong>14:00</strong>: Data recovery page published to application settings and shared with admins via email.</li><li><strong>14:25</strong>: Bug fixed with the data recovery page by forcing clients to refresh (which then overloaded our API and caused application loading issues).</li><li><strong>16:40</strong>: Dry-runs of the restoration process started.</li><li><strong>17:49</strong>: Workspace data restoration started.</li><li><strong>19:48</strong>: 98% of affected workspaces restored.</li><li><strong>23:20</strong>: 99% of affected workspaces restored. </li></ul><h3><strong>January 26</strong></h3><ul><li><strong>07:37</strong>: Restoration for all workspaces except one completed.</li><li><strong>08:39</strong>: Restoration of final workspace completed.</li></ul><h2><strong>What happened</strong></h2><p>Linear uses trunk-based development and changes land in production on an ongoing basis as part of new feature development. We gate execution using feature flags.</p><p>While developing new features, we created two new tables in the production database. We also filled these tables with data from existing tables in preparation for rolling out the new functionality. We considered the data faulty and planned a new migration to update it. We had to drop the existing data in the new tables as part of that migration.</p><p>A pull request was created, reviewed and accepted that added a database migration that first dropped data in the new tables. Then, it copied data from existing tables to the new ones. The new tables were only used by engineers developing the feature and not used by actual users yet, so we deemed deletion safe. We used the following SQL statement for data deletion:</p><p><code>TRUNCATE TABLE &lt;new_table&gt; CASCADE;</code></p><p>The intention here was to delete any data in the new table as well as any rows of test data with foreign keys pointing to the new table. However, <code>CASCADE</code> simply truncates the entire contents of any tables that have foreign keys to the table.</p><p>This caused the full deletion of production data for issue and document descriptions, comments, notifications, favorites, and reactions.</p><p>When pull requests include migration, we do include CI warnings for dangerous migrations, like large indexing operations. The pull request was tested locally and reviewed by multiple engineers but the cascade operation was missed by both author and peer reviewers.</p><h2><strong>Outage and investigation</strong></h2><p>With the data deleted, symptoms weren’t immediately visible to end-users, including our own team. Linear stores most workspace data in a local client cache, and there’s also a database cache which sits in front of the Postgres database. Our <a href="https://linear.app/blog/scaling-the-linear-sync-engine">sync engine</a> updates this database cache programmatically to add and remove “sync” packets describing database mutations.</p><p>As this is part of the application logic, deleting rows directly from the database won’t create sync packets and thus won’t update the cache or clients. This meant users would continue to see and receive data for the deleted tables in the Postgres database until they reloaded their local data and the backend cache was invalidated, which usually takes 24 hours. Data caching was also one of the primary reasons the problem was missed in local development.</p><p>The data loss went unnoticed for 30 minutes due to the multiple layers of cache involved. It was possible to reload the Linear client and not see any visible problems at all. Only mutations caused errors due to underlying database entities no longer existing.</p><p>The outage first became apparent with notifications, as it is one of our most frequently updated tables, with notifications created and deleted based on many events. There is always a small lag in synchronization state between the backend and its clients. We often see the client trying to update deleted entities and see these as a <em>synchronization lag </em>warning. As an expected part of the system these did not count towards error metrics or trigger alert monitors.</p><p>An engineer started an internal incident to investigate when they saw problems while using their own notification inbox. User reports confirmed the synchronization issues that the problems pointed to. This happened around 30 minutes after the migration. This caused a critical incident to start and personnel to be paged.</p><p>The cause wasn’t clear at first due to the caching. But, a spike in warnings from clients to the <em>notificationUpdate</em> GraphQL endpoint offered a clue about when the problem started. The faulty commit was quickly correlated. Our engineers verified that the commit did cause similar symptoms when run locally. Shortly thereafter, an engineer found all notifications had been deleted in their local database. At this point, production data was checked and we found multiple tables had been entirely deleted.</p><p>Linear was promptly taken into maintenance mode, which blocks any updates and presents a maintenance screen for all users. We created a new backup to capture all the sync packets created up until that point. Then the database was restored from the latest backup from before the faulty migration ran.</p><p>Linear takes daily full backups in addition to having point-in-time recovery. The last backup was taken at 04:47 UTC and the bad commit landed at 07:01 UTC. With point-in-time recovery engineering could have restored services to the state they were in at 07:01. However, the engineering team had never tested point-in-time recovery, nor had engineering developed tooling to quickly restore the database using point-in-time recovery, so that option wasn’t considered. Restoring from a full backup was a frequently tested procedure and thus executed to get the application up and running as quickly as possible, while initially losing more data than point-in-time recovery.</p><p>After backup restoration was completed, Linear was brought back online again with data as of the 04:47 UTC backup.</p><p>The service recovered somewhat quickly, with intermittent problems affecting synchronization. The sync service uses a cursor to get changes not yet sent to clients and caches this cursor in Redis. However, the code did not account for the ID moving backwards, as was the case with a full database restore. Resetting the cache and restarting the sync service resolved these issues.</p><h2><strong>Data restoration</strong></h2><p>After Linear was back online, our engineering team started restoring data that was affected by the rollback.</p><p>As mentioned earlier, Linear’s realtime sync engine keeps a log of every change that affects entities and properties in a form of sync packet (“action”) that is sent to clients. This includes the type of action taken (insert, update, archive, delete), a snapshot of the entire entity after the change, and a delta of properties changed in case of an update action. Each change also contains an actor, usually the user that made the change.</p><p>We used these actions to find all users affected by changes in the outage. We then contacted them to tell them about the problem and when data would be restored. We also sent an email to all administrators of the affected workspaces in the interest of transparency and awareness.</p><p>Part of our team implemented a new settings page to show administrators the progress of the restoration procedure.This page also listed any lost data and errors during restoration so they could then fix their data, if needed.</p><p>At the same time, we added a restoration script to run through the lost actions for each workspace. It reapplied the actions by users, integrations, API calls, and Linear automations. The script was first executed as a dry-run to expose and fix any edge cases in the replaying of these changes. When a workspace didn’t have any errors in the dry-run, recovery was run for it. We investigated workspaces that had errors to see if we could fix them.</p><p>Due to the large number of affected workspaces, this investigation took the majority of the recovery time. Some actions were unrecoverable because of unresolvable conflicts and were listed in the individual workspace’s recovery page. Most of the errors revolved around:</p><ul><li><strong>Document content already existed:</strong> This meant the description for an issue or document had been recently created. We did not want to override changes made by users.</li><li><strong>User created:</strong> Users created during the outage were not recovered as we had no way to tie them back to an authentication. Ultimately, all the actions involving a new user (e.g. being assigned to an issue) and issues created by these new users were skipped as well.</li><li><strong>Modifications to entities no longer existed:</strong> If an update for an entity was archived or deleted, those updates were skipped.</li></ul><p>We also excluded some objects from recovery entirely, such as integrations allowed to act in Linear on behalf of a workspace. We did not want to bring these back automatically after this delay. Instead, we chose to let users reconnect any missing integrations themselves. Similarly, we did not recover newly-created workspaces. Instead, we sent the workspace administrators an email telling them about the situation.</p><h2><strong>Impact</strong></h2><p>All users experienced one hour of platform downtime while the backup restored data.</p><p>In all, 12% of workspaces had data that was unavailable until the restoration finished. Another 7% had automated changes (like generated Cycles) that were also unavailable.</p><p>We restored over 99% of data within 36 hours. The remaining 4,136 sync packets for unresolvable conflicts represent an average of 0.44 per workspace.</p><h2><strong>Next steps and improvements</strong></h2><p>This incident was the largest in Linear’s five-year history. We strive to build the fastest and most reliable product for our users. This incident revealed many areas where we can do better to find, stop, and recover from similar outages. We learned important lessons from the outage, which we’ll be making actionable in the coming weeks and months. We’ve listed some of the changes we’ll implement below, with more to come as we continue assessing our response:</p><ul><li>No user on the production databases should have <code>TRUNCATE</code> privileges.</li><li>Improve how migrations are created and applied to the database. This includes better review practices from database admins—separate from code reviews—and linting of dangerous operations.</li><li>Make testing of database migrations in a staging environment easier and automated to reduce friction.</li><li>Create and test tooling to quickly re-create the database from point-in-time backups.</li><li>Various changes to internal tooling, addressing weaknesses or friction uncovered by the incident response.</li><li>Improved monitors for data integrity.</li><li>Implement the ability to turn on a read-only mode for Linear, so that clients have read access even when no changes are allowed to reduce the effects of downtime.</li></ul><p>Again, we’re extremely sorry that this outage happened and it has involved most of our engineering team over the past week to resolve. We’ll keep working to improve as a team and to commit to a high level of transparency around our incident response, both during and after.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why and how we do work trials at Linear]]></title>
            <link>https://linear.app/now/why-and-how-we-do-work-trials-at-linear</link>
            <guid>https://linear.app/now/why-and-how-we-do-work-trials-at-linear</guid>
            <pubDate>Wed, 13 Dec 2023 18:00:00 GMT</pubDate>
            <description><![CDATA[Learn why and how Linear uses paid work trials to evaluate candidates' skills, judgment, and fit within a startup environment.]]></description>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/5b5ddca9716bc50fa4de6528adbac6b3ac815eed-2352x1892.png?q=95&amp;auto=format&amp;dpr=2"/><h2>In order to build the best product, we need the best team</h2><p>We believe the only way to build a quality product and business is to hire people we can trust to make good judgments, across all functions and levels. Finding people who have the skills, taste, and understanding to shape the product and execute the work itself is how we keep a small and effective team.</p><p>At Linear, we expect all team members to take ownership of projects — shaping the direction, making decisions, talking to users when needed, and communicating progress. It’s very much a full-stack role, being part of the product-building, instead of one small cog in a larger machine.</p><p>The problem is that these types of people, unfortunately, are few and far between. The majority of companies don’t work in the way we do, which leads to fewer people with these kinds of skills. We found that standard interview processes didn’t work well for us. It’s challenging to assess in interviews if someone is truly a builder, has good taste and judgment, can take initiative, and approaches problems productively.</p><p>Additionally, one of the most common reasons people fail to succeed in startups is that they lack the ability to adjust to the ways startups need to operate. Startups need to move quickly while many things are in flux, and roles and problems are often less defined than in mature companies. A conventional interview process, often modeled by large companies, doesn’t account for this.</p><p>To evaluate if a person is a fit for Linear with the skills to be successful, we bring candidates in for a work trial as the final step in the interview process. A work trial is a paid 2-5 day period where a candidate works with our team on a real project that we plan to implement (or as close as possible to that) with access to relevant internal tools and resources.</p><p>Over the last four years, work trials have helped us scale to over 50 people with a 96% retention rate. Everyone — from engineers to C-level candidates — has gone through one. We think that this has been one the best ways to make sure both us and the candidate feel there is a great fit.</p><h2>Before the work trial</h2><p>As work trials are a large time commitment from the candidate and from us, candidates only move to a work trial when we really want to work with them. Work trials aren’t for weeding candidates out.</p><p>Before the work trial, we follow a fairly standard interview process:</p><ul><li><strong>Defining the role: </strong>With all roles, we start with the problem to be solved, not the title or levels. The recruiter, hiring managers, and the interview panel of 3–5 people align on what we’re looking for in a candidate. Along the way, there might be additional calibration.</li><li><strong>Interviews:</strong> The early stages of our hiring process contain standard elements — an intro call with a recruiter, a hiring manager interview, and role-relevant skills assessments with team members.</li><li><strong>Panel voting</strong>: The interview panelists provide strong no to strong yes scores and share their feedback. During a debrief, they also do a thumbs up/down vote. Ideally, we see a majority of “strong yes” before going forward.</li></ul><h2>The work trial</h2><p>Work trials are designed to help both sides make the right decision:</p><p><strong>For Linear:</strong> The work trial lets us observe how candidates work in our remote startup environment and make decisions in situations that might have more than one solution. We experience how they collaborate with our team day-to-day. While previous interview stages can surface how candidates have worked in the past, the work trial enables us to see firsthand how they think about problems, drive a project forward, and demonstrate their product sense.</p><p><strong>For the candidate:</strong> We believe candidates benefit equally from the trial. Taking a job at a company can be a risk and candidates usually don’t get much insight into the company they’re interviewing with. Companies don’t like to share information, and usually the process is focused around what they need. With the work trial, candidates have more access and time to evaluate the company and decide whether this is the right place for them.</p><p>The role and the availability of the candidate determine the length of the work trial. Senior roles typically take the full five days, while other positions can be shorter. We understand that candidates are juggling other work and personal commitments, and are flexible in scheduling trials. We sometimes use weekends to help candidates who need to minimize time off from work. And we encourage candidates to maintain a normal, balanced schedule during the week — block off time to spend with family, take appointments, etc.</p><p>All work trials are paid. We pay the candidate a daily rate during the work trial, and we communicate that to the candidate in advance.</p><h3>Preparing for the trial</h3><p>The goal with the work trial is to simulate a normal working environment as much as possible. To that purpose, we assemble a supporting project team. Members typically include the recruiter, hiring manager, and 3–5 teammates that would closely intersect with this role.</p><p>The team first defines what a successful output for the work trial would be based on current and upcoming team priorities, and then works backward to design the prompt. We want to limit the scope of the work trial while getting as close to a real project as possible. Work trial projects sometimes end up being the first project for the new hire when they get started.</p><p>Some examples of past prompts:</p><ul><li>For an <strong>engineer</strong>, <a href="https://linearapp.notion.site/Kenneth-Skovhus-Work-Trial-7ef0fb71e7ab408d87169c0982726f64">building a feature allowing teams to effectively triage incoming feature requests</a></li><li>For a <strong>content marketer</strong>, writing a blog post based on a feature release</li><li>For a <strong>designer</strong>, designing a way to resolve comments</li></ul><p>Our recruiter and people operations coordinator handle necessary logistics pre-trial — securing a non-disclosure agreement (NDA), granting temporary tool access, scheduling meetings, and prepping docs conveying context on goals and expectations. We use a <a href="https://linear.app/docs/issue-templates">templated issue list</a> in Linear to make sure we cover each step.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/5b5ddca9716bc50fa4de6528adbac6b3ac815eed-2352x1892.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1892" alt="List of issues in Linear for carrying out a work trial"/><figcaption>Our Linear template for work trial tasks</figcaption></figure><p>We give each candidate access to the tools they need to be successful — typically Slack, Notion, Linear, and Pitch but also GitHub and Figma.</p><p>As a last step before the trial, our recruiter covers the logistics of the work trial and the project prompt with the candidate.</p><h3>During the work trial</h3><p>The work trial itself has a few standard meetings:</p><ul><li><strong>Kick-off: </strong>Candidate<strong> </strong>meets with the team to go over prompt, get additional context, ask clarifying questions, and discuss an initial approach</li><li><strong>Check-in:</strong> Candidate leads status update to share progress, ask questions, and get feedback. Check-ins are candidate-led because we want to see their ownership and readiness to course-correct.</li><li><strong>Final presentation:</strong> Candidate presents final deliverable to the work trial team and answers questions. These presentations tend to be discussion-based.</li></ul><p>Apart from these meetings, the candidate focuses on carrying out the project, and can reach out to the team through a dedicated Slack channel or ad-hoc calls if they have questions or need information.</p><p>The recruiter also schedules 1:1 coffee chats with a couple other Linear employees for additional perspective, and invites the candidate to other team events happening that week, such as company all-hands or bake-offs. Some go-to-market candidates will shadow or even run an actual customer-facing call.</p><h3>Debriefing and deciding</h3><p>After the work trial, each member of the project team submits feedback separately — and without reviewing comments from other evaluators — before debriefing together live. In evaluations, anything other than a strong yes is a no. At Linear, all debriefs begin with a blind thumbs up/down vote and proceed with an open discussion on feedback anchored in specific examples and anecdotes. The hiring manager makes a final decision on whether to extend an offer to the candidate, though we strongly prefer unanimous decisions.</p><p>The recruiter documents highlights and key takeaways to later share back with the candidate, offering detailed transparency regardless of outcome as closing the feedback loop can provide significant value to the candidate.</p><p>When we decide not to move forward with a candidate, we stick to our transparent approach and let them know why, despite the hard situation.</p><h2>How we’re continuing to evolve</h2><p>We’re still improving the work trial process based on feedback from candidates and our team. We’ve clarified expectations for both the candidate and our work trial teams to make sure everyone actively participates and understands each person’s role.</p><p>Our company has grown, and we’ve removed the expectation that candidates participate in our regular product meetings or All Hands. Instead, we encourage them to shadow these meetings so they can see our culture and workflows without putting them on the spot to participate actively. We also narrowed the presentation audience to the work trial team, so that we can have deeper interaction in a more comfortable environment.</p><p>While we’ve modified parts of the work trial as the company has scaled to provide better experiences, we know that work trials may not scale with us forever. They require a significant commitment from candidates, and a great deal of time from our team. For now, they’re very much worth our efforts.</p><h2>Building work trials into your own team</h2><p>Work trials may not work at every company. We have a few suggestions if you’re considering implementing work trials at your own company:</p><ul><li><strong>Identify prompts that will surface the signals you’re looking for. </strong>Work closely with the hiring manager and project team to define projects that map to real work in your own environment.</li><li><strong>Evaluate candidates based on how they work with your team</strong> — while output matters, work trials reveal so much more around communication, self-direction, responsiveness to feedback, etc.<br/></li></ul><p>To help you get started, <!-- --> we use to create the work trial plan we share with each candidate. It’ll give you a sense of how we schedule meetings, but also how we communicate Linear’s work style and culture to candidates. Feel free to remix it, and adapt it to your own company.</p><p>If you have questions about how we do work trials at Linear, or what it takes to make them successful, <a href="https://linear.app/contact">please reach out</a>. We’re happy to help.</p><p>If you’re interested in a career at Linear, take a look at our <a href="https://linear.app/careers">open roles</a>. </p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Using AI to detect similar issues]]></title>
            <link>https://linear.app/now/using-ai-to-detect-similar-issues</link>
            <guid>https://linear.app/now/using-ai-to-detect-similar-issues</guid>
            <pubDate>Wed, 29 Nov 2023 15:10:00 GMT</pubDate>
            <description><![CDATA[Learn how our AI-powered Similar Issues feature can helps manage duplicate issues and backlog in large team workflows.]]></description>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/5dc9f8821f0b392e1a67917a977f2d35174ca4d0-1176x630.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/27bff18fa4d4c54690269e41da6443032df29e8e-1176x630.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/2621c02a7a925887cd722b8ceadba5cfaf529c28-2352x1260.png?q=95&amp;auto=format&amp;dpr=2"/><p>A few months ago, we rolled out our Similar Issues matching feature to all Linear workspaces. This feature was the latest to graduate from our internal AI “skunkworks” team, which we spun up over the summer to experiment with new machine learning technologies. Instead of flashy AI features, we focused on areas where automation can reduce repetitive work and organize your data.</p><h2><strong>Why we built it: Duplicate issues and backlog management</strong></h2><p>Anyone who has worked with a large team and a long issue backlog knows that dealing with duplicate issues is something of a forever-problem. Sometimes you have a <em>hunch</em> the issue you’re creating is already in the backlog somewhere, and other times you have no idea at all. In the best-case scenario, your issue backlog is a bit bigger than it needs to be; in the worst case scenario, you have multiple engineers fixing the same bug, completely unaware of the overlap.</p><p>We wanted to address this common problem by interjecting during the issue creation process and suggesting issues that could be related to or duplicates of the one you’re creating. It seemed as though this would be a great application of large language models (LLMs), which would offer a level of accuracy that wouldn’t be possible by simply computing similarity based on properties or keywords alone.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/5dc9f8821f0b392e1a67917a977f2d35174ca4d0-1176x630.png?q=95&amp;auto=format&amp;dpr=2" width="1176" height="630" alt="Linear issue composer showing possible duplicate issues"/></figure><p>As we worked on the design of the feature, we quickly realized it could extend to our <!-- --> functionality to help with issues from external sources. When working through the Triage inbox, we’d be able to show existing similar issues front and center and make it easy to mark them as duplicates.</p><p>While having the feature in Triage is useful, it could still be too late in the process since the issue is already created. So, we decided to push the detection even closer to the edge and ‌surface similar issues in <!-- --> as well, directly next to incoming customer emails.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/27bff18fa4d4c54690269e41da6443032df29e8e-1176x630.png?q=95&amp;auto=format&amp;dpr=2" width="1176" height="630" alt="Similar Issues surfaced within the Intercom support integration"/></figure><p>Now, when a customer emails in about a bug or problem, the support team can clearly see if a related issue already exists and what its status is. Without having to jump between different tools, they can respond accordingly.</p><h2><strong>How we chose our tooling: Vector embeddings and search</strong></h2><p>With a solid idea in place, the next task was deciding which technologies to use. As with any new technology, there are many startups vying to form the foundation of your stack, and so we evaluated multiple approaches and platforms. Fundamentally, we needed two things: a way to generate accurate embeddings and a place to store and search them.</p><h3><strong>Vector embeddings</strong></h3><p>At the core of our approach are vector embeddings. Embeddings encode the semantic meaning or concept of a piece of data as a matrix of floating point numbers so you can search and group items with similar meaning using simple mathematical operations. For example, “bug”, “problem”, “broken” are all different keywords but within the context of a Linear issue mean very similar things. Using cosine similarity queries, issues that are conceptually similar would have a score closer to 1, whereas opposing ideas would be closer to -1.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/2621c02a7a925887cd722b8ceadba5cfaf529c28-2352x1260.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1260" alt="Figure showing cosine similarity in a two-dimensional space"/></figure><p>While this method of calculating similarity is not particularly new (<a href="https://blog.research.google/2020/07/announcing-scann-efficient-vector.html">Google in particular</a> has been innovating in this area for years), it has seen a resurgence in popularity with the new LLMs that can generate more semantically accurate vector embeddings at a very low cost, and with a single API call.</p><h3><strong>Storing vectors</strong></h3><p>During the first proof of concept with our own data, we actually stored the vector embeddings as blobs in our primary data store. This let the team iterate quickly on ideas while we evaluated other long-term options for storage. It turned out to be a pretty good trade-off, but it’s important to ensure the giant blob column is not being selected in queries unnecessarily — vectors can be quite large compared to most other data we store.</p><p>We experimented with several vector-specific databases, but each came with drawbacks such as downtime to scale, high cost, or increased ops complexity.</p><p>After much consternation and after moving the development embeddings between providers on more than one occasion, we ended up choosing PostgreSQL with the <a href="https://github.com/pgvector/pgvector">pgvector</a> hosted on Google Cloud. Thankfully, GCP launched support for the extension just in time for us to take advantage of it. Postgres is a known quantity that our small engineering team can maintain with confidence, and it still provides very reasonable response times for cosine similarity queries.</p><h3><strong>Backfilling and indexing vectors</strong></h3><p>Next, we needed to generate embeddings for all issues in all workspaces, based on their textual content, and fill out the database with the vector embeddings and metadata such as status, workspace, and team identifiers. Thankfully, we have an existing internal framework for running data backfills using our task runners to process jobs in parallel on a kubernetes cluster, so this was a breeze and involved writing a small “task” to iterate through issues, concatenating the content, and converting the resulting text to a vector through a single API request.</p><p>Without indexing, searching across this database was (unsurprisingly) very slow and initial naive testing saw cosine similarity queries regularly timing out or taking multiple seconds to complete.</p><p>Because we’re adding this feature to an existing product, we have tens of millions of issues from the get-go. Generating indexes for embeddings at this scale took some iteration and failure, even with providing the database server with hundreds of GB of memory. We found success in partitioning the embeddings table by workspace ID across several hundred partitions and creating indexes on each partition separately. While we tested different parameters, such as list size, we largely followed pgvector’s recommendations to maintain sufficient search accuracy.</p><h2><strong>What’s next: Improving similar issue detection</strong></h2><p>Surfacing similar issues has already helped our customer experience team consolidate support issues in Intercom with less time spent manually aggregating messages. We’ve also received some early feedback from the community that the feature is helping folks better manage their backlogs across engineering and support teams.</p><p>We have a few improvements to explore already, focused on making it easier to identify similar and duplicate issues across sources and improving the quality of our vector search. Additionally, we would like to:</p><ul><li>Make the feature available in more integrations</li><li>Consider other properties, such as labels in the embedding</li><li>Ensure issues created with templates do not unduly influence the similarity score</li><li>Use this index as a signal for our main search functionality, which is currently powered by ElasticSearch.</li></ul><p>Similar Issues was one of the first fully-fledged features to come out of our AI experimentation, and we’re excited about its potential to make Linear even more powerful. We believe this feature can create those “magical” moments that make Linear feel special.</p><p></p><p>You can learn more about Similar Issues in our recent changelog <a href="https://linear.app/changelog/2023-08-03-similar-issues">here</a>.</p><p><br/></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Planning for unplanned work]]></title>
            <link>https://linear.app/now/planning-for-unplanned-work</link>
            <guid>https://linear.app/now/planning-for-unplanned-work</guid>
            <pubDate>Thu, 16 Nov 2023 16:34:49 GMT</pubDate>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/61b001793745357e00a448a6ce324407a1b73e55-2352x992.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/4f40daa7f5e952394dcf20512abcf708a93b34ab-2352x1392.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/4f8e60488ef0cbaa5e1be4556b89000b1c6573ca-2352x2464.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/ae562a8b66ffeed4f44b11759765b059bab167ff-2352x1313.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/599c044b343702bc3c335188681841e6df22db05-2352x1492.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/ce4678d1bd983c14b2876050083f3797500d44d9-2352x3344.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/30183e73c9ef009bb8cb14adbe97d9f34a5b9a69-2352x1632.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/96698e7c47b740f2e0378ae18ba19710383ec848-2352x2076.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/5f1a91b7d1265fdbfc27013f0ee9b645bca12988-2352x1496.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/28e311a6f4667ae7f85e73af8a8597aa7bf1e5c4-2352x876.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/00c4ec5dddc49d5165cd72cc2df5e7643779b37e-2352x832.png?q=95&amp;auto=format&amp;dpr=2"/><h3>Intro</h3><p>There are two types of work. <br/>Planned work and unplanned work.</p><p>Planned work are tasks and activities that have been organized and scheduled in advance. This type of work typically happens in projects that tie into roadmaps and larger company goals. Because the work has been planned before, you know what you’re trying to do, who’s going to work on it, and when they will get started.</p><p>Unplanned work, on the other hand, are issues and emergencies that appear suddenly and seemingly randomly in the form of a bug report, an important feature request, or an outage.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/61b001793745357e00a448a6ce324407a1b73e55-2352x992.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="992" alt="An infographic explaining the differences between planned and unplanned work."/></figure><p></p><p>Unplanned work happens unexpectedly, but it’s not unexpected. You <em>know</em> that there will be bug reports, you just don’t know when, where, and in what shape they will come up. The only thing that is certain is that they will appear.</p><p>There is no way to escape these ad hoc forces of the product building process. But there are strategies to plan for unplanned work and tools to systematically manage it. What these are and how they work is what we’ll cover in the next few chapters.</p><p>Let’s begin.</p><p> </p><h3>The challenges of unplanned work</h3><p>Before we jump into the specifics, we should take a step back and think about what makes unplanned work so difficult to manage in the first place.</p><p>Unplanned work has two broad phases: There’s an intake phase where unplanned work gets reported. And there’s an execution phase in which the reported problems are actually resolved. Both of these phases have their own unique challenges.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/4f40daa7f5e952394dcf20512abcf708a93b34ab-2352x1392.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1392" alt="Intake = reporting unplanned work. Execution = resolving reported issues."/></figure><p></p><p>Intake is challenging because unplanned work appears in so many different and disconnected places. Take bugs as an example. They will turn up across many different channels, both internally and externally: social media, email, Slack, a meeting, your customer support tool, and half a dozen other places you didn’t even think about. Is every recipient across these various touch points able to quickly file a bug report? Do they know where to file it, how to write it, and who to send it to?</p><p>Execution is challenging due to uncertain responsibilities and priorities. Because unplanned work is unplanned, it’s not always clear who should work on it. In fact, it might not even be clear if anyone should work on it at all. Some issues are emergencies, but others can be ignored. Some requests seem irrelevant, but what if they come from your most important customer? How do you ensure the most important work actually gets done quickly?</p><p>Let’s take a closer look at each of these phases, starting with intake.</p><p> </p><h3>Phase 1: Zero-friction intake</h3><p>The intake phase is all about turning reported bugs and other requests into explicit, actionable company knowledge by feeding them into your issue tracking system. Because every piece of friction increases the likelihood that something doesn’t get reported, it is critical that this process is as simple and smooth as possible.</p><p>Why is this point so important?</p><p>Think of your issue tracking system as a hive mind or a collective brain that contains important knowledge about the state of your product building process. It’s the source of truth upon which you and your company make decisions and coordinate work.</p><p>If the data in your hive mind is incomplete or incorrect, however, it stops being a source of truth. It becomes a source of half-truths. You can’t know what people are thinking if it’s too hard for them to communicate with you, and you can’t act on what they say if you don’t keep track of it.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/4f8e60488ef0cbaa5e1be4556b89000b1c6573ca-2352x2464.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="2464" alt="A venn diagram that shows the overlap between &quot;reality&quot; and &quot;the data in your issue tracker&quot;"/></figure><p></p><p>The focus of the intake process on the left side of the Venn diagram: We want to minimize the amount of unreported issues so that the knowledge in your issue tracking system accurately reflects the reality you are in.</p><p>So how do we get there?</p><p>The first step is to allow intake directly at the source where unplanned work first appears. It’s like instrumenting your organization to get full situational awareness of everything that’s happening. The complexity here is that there are many different sources and you want to cover as many of them as possible.</p><p>This is why at Linear we put such a strong emphasis on <!-- -->. From the start, we developed integrations for the most common sources of unplanned work. They include customer support tools like Intercom, performance monitoring platforms such as Sentry, and popular communication services like Slack.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/ae562a8b66ffeed4f44b11759765b059bab167ff-2352x1313.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1313" alt="An infographic that shows different data sources (Slack, Front, Intercom) that feed into Linear"/></figure><p>Slack plays a particularly important role in this stack because it’s the place where most unplanned work surfaces. It acts as a sort of catch-all for the long-tail of unplanned reports and requests. <a href="https://kwokchain.com/2019/08/16/the-arc-of-collaboration/">As others have described it</a>, Slack is like <em>“911 for whatever isn’t possible natively in a company’s productivity apps”</em>.</p><p>The 911 analogy is interesting but not entirely accurate. When you call 911, someone <em>will</em> respond and take action. When you post on Slack, someone <em>might</em> respond and take action. You don’t know if anyone has seen your call for help or if you have just been shouting into the void.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/599c044b343702bc3c335188681841e6df22db05-2352x1492.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1492" alt="Screenshots of Slack messages that qualify as unplanned work"/></figure><p>To improve this area of unplanned work, we recently introduced a new feature called <!-- -->. With Asks, anyone in a Slack workspace can quickly turn a conversation into a request that automatically gets routed to the relevant team in Linear.</p><p>The core idea behind Asks is to make unplanned work explicit and actionable — but in the most frictionless way possible (remember, we want to maximize the probability that intake actually happens):</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/ce4678d1bd983c14b2876050083f3797500d44d9-2352x3344.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="3344" alt="Screenshots of the Linear Asks workflow. From initial creation, to template selection, to actually submitting the final request."/></figure><p>Most importantly, the person making the request has complete peace of mind that their request will be seen and taken care of. While we don’t like the comparison too much, there are a lot of conceptual similarities between Asks and an emergency hotline. It’s the missing piece that actually turns Slack into 911 for unplanned work.</p><p>Now that we have the intake process covered, let’s move on to the execution phase.</p><p> </p><h3>Phase 2: Efficient execution with Triage</h3><p>Most issue tracking systems have frameworks for planned work, but no native conceptual containers for unplanned work. While planned work is neatly organized in projects and roadmaps, there is no clear, predefined path for what should happen with unplanned work. It either constantly disrupts the team’s existing work or ends up being dumped onto an endless backlog never to be looked at again (or both).</p><p>To manage unplanned work systematically rather than just locally, Linear has an important concept called <!-- -->.</p><p>Triage is a shared inbox for your team that centralizes all incoming unplanned work. All the bug reports, feature ideas, alerts, and other requests that get reported and filed in the various different channels we talked about in the previous chapter are added to this queue.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/30183e73c9ef009bb8cb14adbe97d9f34a5b9a69-2352x1632.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1632" alt="A screenshot of the Linear Triage inbox"/></figure><p>Triage provides a chance to review, update, and prioritize each issue before it gets assigned and added to the team’s workflow. This helps to filter out irrelevant requests and duplicates.</p><p>Let’s go back to our Venn diagram from earlier to understand why this is important.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/96698e7c47b740f2e0378ae18ba19710383ec848-2352x2076.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="2076" alt="The previous Venn diagram but with emphasis on the right side circle that contains inaccurate and outdated information."/></figure><p></p><p>While the intake process is designed to reduce the number of unreported issues on the left side of the Venn diagram, the first part of execution phase is there to verify that whatever we are feeding into the issue tracking system is actually accurate.</p><p>By reviewing all issues, we can filter out invalid requests, ask for more information if necessary, and merge duplicates that have been reported before. This way we ensures that the knowledge in your “company hive mind” is not just a complete but also an accurate reflection of reality.</p><p>The review process also helps to clarify what part of the unplanned workload is most important and who should work on it. This avoids scope creep and distractions that usually happen when unplanned work doesn’t get managed systematically.</p><p>The review process boils down to four primary actions:</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/5f1a91b7d1265fdbfc27013f0ee9b645bca12988-2352x1496.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="1496" alt="A screenshot of the 4 different controls in the Linear Triage inbox: Accept, Mark as duplicate, Decline, and Snooze"/></figure><p>This leaves us with the challenge of accountability (or the lack thereof). To plan for unplanned work we need to define roles and priorities, so that tasks are actually taken care of in a timely manner. We solve the accountability problem with Triage responsibilities. This is <!-- --> in the Triage queue. </p><p> who will get notified (or auto-assigned) for each new issue, or use an existing PagerDuty schedule to automate the process.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/28e311a6f4667ae7f85e73af8a8597aa7bf1e5c4-2352x876.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="876" alt="A screenshot of the Triage responsibility modal in Linear"/></figure><p>Lastly, we can use <!-- --> to communicate urgency and set guidance on completion deadlines. SLAs are applied automatically depending on pre-defined variables. For example, you can set specific timelines for urgent bugs or for requests from your most important customers.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/00c4ec5dddc49d5165cd72cc2df5e7643779b37e-2352x832.png?q=95&amp;auto=format&amp;dpr=2" width="2352" height="832" alt="A screenshot of SLAs in Linear"/></figure><p></p><p>SLAs help you to establish and maintain internal standards for how quickly unplanned work gets resolved. But they also give your team a framework for prioritization, so that the most important issues and requests get resolved first.</p><p> </p><h3>Outro</h3><p>Wrapping up, let’s summarize the most important points and provide you with some useful links so you can set up your own plan for unplanned work.</p><ul><li>Unplanned work are bugs, alerts, and other requests and emergencies that appear suddenly. You can’t escape this type of work, but you can manage it.</li><li>Unplanned work has two broad phases: An intake phase and an execution phase.</li><li>The intake phase is about turning reported bugs and requests into explicit, actionable issues. To make this process as frictionless as possible, you enable intake right where unplanned work first appears — with integrations to your most important tools. Linear has integrations with customer support platforms (<a href="https://linear.app/integrations/intercom">Intercom</a>, <a href="https://linear.app/integrations/zendesk">Zendesk</a>, <a href="https://linear.app/integrations/front">Front</a>, <a href="https://linear.app/integrations/plain">Plain</a>), engineering tools (<a href="https://linear.app/integrations/sentry">Sentry</a>, <a href="https://linear.app/integrations/incident-io">Incident.io</a>), and <a href="https://linear.app/integrations">many other products</a>.</li><li>Slack is a particularly important intake channel where a lot of unplanned work surfaces. <a href="https://linear.app/features/asks">We built a tool called Linear Asks</a> that allows your team to quickly turn these requests into actionable issues.</li><li>In the execution phase, we first centralize all incoming unplanned work in a shared team inbox called Triage, where each issue gets reviewed, prioritized, and assigned. <a href="https://linear.app/docs/triage">You can learn more about Triage and how to enable it for your team here</a>.</li><li>To get the most out of Triage, we recommend having a <a href="https://linear.app/docs/triage#triage-responsibility">clearly defined person who reviews incoming work</a>. For larger teams, <a href="https://linear.app/docs/sla">enabling SLAs</a> can help with the prioritization of time-sensitive requests.</li></ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How we run projects at Linear]]></title>
            <link>https://linear.app/now/how-we-run-projects-at-linear</link>
            <guid>https://linear.app/now/how-we-run-projects-at-linear</guid>
            <pubDate>Thu, 05 Oct 2023 15:06:22 GMT</pubDate>
            <description><![CDATA[We believe in extending our product philosophy across all aspects of our company — especially customer support. We interviewed our in-house CX team to share how Linear uses Linear.]]></description>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/171d01c815e529da613ef51f979b51b1e719556c-1176x1052.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/733c461e5bc6cb82fda1811c87e06dae7d980ce0-1176x712.png?q=95&amp;auto=format&amp;dpr=2"/><h2>Let’s start with the basics: What even is a project?</h2><p>Nan Yu</p><p>If I had to name a heuristic for what we would consider a project, it would be multiple people working on it. If multiple people work on it, and it takes over two weeks, that’s a project. If a single person works on something for two weeks, that’s probably not quite a project yet. We try to make it very obvious what the definition of being done with a project means because we believe that projects need to be completed at some point. There are exceptions, but the majority of projects should have end dates.</p><p>Sabin Roman</p><p>It’s difficult to give a single definition of a project — it really depends on context. During the planning phase, we define a high-level roadmap with themes that we want to address in the next six months or so. And we break those themes further into concrete features that we can build. Those features often become the projects themselves. The project descriptions are quite open-ended to start with. For example, about a year ago, we knew we wanted to build an <!-- --> for Linear. But then it was up to the project team to define what that actually meant. Which metrics do we want to surface? What’s the user experience? And so on. What might have looked like a single project at the beginning turned into four or five different projects in the end.</p><p></p><h2>How do you go from the exploratory phase to writing project specs?</h2><p>Nan Yu</p><p>In the beginning, we’ll collect everything we have heard about whatever we are about to work on in a doc or a tracking issue. That includes feedback, backlogs, user interviews, and random tickets. We synthesize the common themes and open questions. We involve everyone across engineering, design, and support.</p><p>With specs, we write about in what context this was a good idea. We help everyone understand the intent of why we’re undertaking a project, what are the problems we’re trying to solve, and what are the related problems or downstream issues. Giving people situational awareness is the main goal of project specs.</p><p>Sabin Roman</p><p>Most of our discussions and debates are around product decisions rather than technical implementation. Engineering discussions are very efficient as the team has a lot of trust, and folks are quite senior and have a good sense of the technical direction.</p><p>As we decide on the product and technical direction, we run multiple customer interviews, summarize the findings, and discuss them as a team. Once we have a rough direction, we document it, ask for a review, and iterate. We aim to write concise specs (1-2 pages) outlining our key product and technical decisions. Having crisp and focused specs makes for an easier read and better quality feedback.<br/></p><h2>Who leads projects at Linear?</h2><p>Raissa Largman</p><p>We’re still fairly small and only have one PM (Nan, our Head of Product), so we have always had engineers leading projects. Compared to my experiences in the past at bigger companies, where it was always the PMs leading everything, I really like it. There’s a lot of independence and autonomy; we get to influence the product roadmap quite a bit and run projects the way we want, which is more efficient than someone with less knowledge coming in micromanaging. Fewer dedicated PMs are required when you are still small, structure your teams properly, and have a fairly senior team.</p><p></p><h2>How do people get assigned as project leads, and what do the leads do?</h2><p>Sabin Roman</p><p>The project leads are rotational. Nobody is the de facto project lead. We make sure that everybody on the team will be a project lead at some point. The project lead drives the communication around the project, shares updates, and ensures things are running on time. This allows the other engineers to focus on coding. It also helps every engineer to understand what it takes to be a project lead, especially when the projects are more complicated. It allows every person to learn that skill set and build empathy within the team for others.</p><p>Raissa Largman</p><p>While project leads are rotational, we do consider relevant expertise from the past that would make an engineer more qualified to take on a particular project. It also depends on how much bandwidth people have. If you want to work on something, you can say I really want to work on that, and you probably will be able to work on that. There are things people don’t want to work on, and everybody has to take a turn and do what nobody wants.</p><p></p><h2>How do you keep others updated on the progress of your projects?</h2><p>Nan Yu</p><p>We use <!-- --> extensively. Each project lead writes a weekly update with a summary of the current state of the project and what’s top of mind.</p><p>The format of these updates varies from project to project: Some are short and more high-level, others are longer and more technical. We often write updates right after project meetings and include the most important take-aways.</p><p>Here’s an example of a typical project update (from the project that led to our recently released <!-- -->):</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/171d01c815e529da613ef51f979b51b1e719556c-1176x1052.png?q=95&amp;auto=format&amp;dpr=2" width="1176" height="1052" alt="A screenshot of a project update"/></figure><p>To ensure that projects get updated on a regular basis, <!-- -->we have reminders set up that notify the project lead to post an update<!-- -->.<br/></p><p>Raissa Largman</p><p>Everybody in our Linear workspace can read these updates and see where each project stands. To increase the visibility of project updates, <!-- -->.</p><p>We have a <strong>#product-updates</strong> channel which receives <em>all</em> Linear project updates, and individual channels for each Linear project (<strong>#p-[projectname]</strong>) where project-specific discussions happen.</p><p></p><h2>How do you use milestones?</h2><p>Nan Yu</p><p>Let’s take a step back and return to the idea of being done with something. Issues want to be done. Projects want to be done. But projects have a lot of issues. We designed <!-- --> to be able to let people define the concept of being done.</p><p>If any open issues remain in a milestone bucket, it still needs to be done. On a project level, it’s a little more difficult because you have everything from issues we are working on to ideas we might want to explore.</p><p>Milestones let people decide different definitions of being done for different stages of the project. For example, a project might be done for a closed beta release — but there is still a lot of work that has to be completed for it to be done for a public release.</p><p>Raissa Largman</p><p>We don’t have a set structure for how we use milestones in our projects, but it’s usually tied to different release stages of the project. This is a typical example:</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/733c461e5bc6cb82fda1811c87e06dae7d980ce0-1176x712.png?q=95&amp;auto=format&amp;dpr=2" width="1176" height="712" alt="A screenshot of the milestones we used for a recent project: Internal, Beta, GA, Post-launch, Nice to haves"/></figure><p></p><h2>How do you know when something is good enough to ship?</h2><p>Sabin Roman</p><p>There’s no strict process or a document with checkmarks to tell you when the project is ready for release. It comes down to the engineers working on the project feeling that the project is ready. And once they do, they share it with the team. Our weekly product meeting is focused on demos. We recently started experimenting with what we call “feature roasts”. If you are working on a feature and think it’s ready to be shipped, you can ask the team to try it out during the weekly meeting and provide instant feedback. So far, this has proved to be a productive and fun exercise. That’s how quality corrections happen at the team level. Once the team is ready, we submit it as a release candidate for company-wide feedback. For some projects, we release them to our private beta program (Origins) for feedback before we do the public release.</p><p>Raissa Largman</p><p>You have to be on the same page about what level of polish you are trying to achieve to put something in front of a customer. There’s some risk management work — some users are okay with trying out half-baked stuff, some are not. We have escalating release channels and segmented users to balance this out.</p><p>When we release features to our beta customers, it’s still not at the polish level we aim for. If you release something and iterate too much, it can be difficult for your customers because they might have to relearn what they just figured out. The judgment around when to release boils down to the level of polish we look for and the size of the changes we expect to happen for that feature in the future.</p><p></p><h2>What’s next?</h2><p>Nan Yu</p><p>We are actively working on a variety of projects to improve Linear’s planning and roadmapping functionalities. An upcoming change we think folks will get excited about is the ability to comment on project updates. We have more coming and would love your feedback: <a href="https://linear.app/join-slack">Join our Slack community</a> and tell us what we can do better for you when running your own projects on Linear.<br/></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Linear raises $35M Series B led by Accel]]></title>
            <link>https://linear.app/now/series-b</link>
            <guid>https://linear.app/now/series-b</guid>
            <pubDate>Thu, 14 Sep 2023 13:45:00 GMT</pubDate>
            <description><![CDATA[Linear has raised a $35M Series B, led by Accel, with participation from Sequoia Capital, 01Advisors, and some of the world’s most successful entrepreneurs including the founders of Slack, Vercel, and Supercell.]]></description>
            <content:encoded><![CDATA[<p>We’re excited to announce that Linear has raised a $35M Series B, led by Miles Clements (Accel), with participation from Stephanie Zhan (Sequoia) and Dick Costolo (01Advisors).</p><p>Some of the best product builders and operators are partnering with us and joining the round: Stewart Butterfield (CEO, Slack), Cal Henderson (CTO, Slack), Claire Hughes Johnson (Corporate Advisor and former COO, Stripe), Koen Bok &amp; Jorn van Dijk (Co-Founders, Framer), Christina Cacioppo (CEO, Vanta), Kyle Parrish (VP Sales, Figma), Praveen Neppalli Naga (VPE, Uber), and Ganesh Srinivasan (former CPO, Confluent).</p><p>Additionally, several of our current customers became our investors as well, including Guillermo Rauch (CEO, Vercel), Ilkka Paananen (CEO, Supercell), Josh Miller (CEO, Browser Company), Andrew Mason (CEO, Descript), and Immad Akhund (CEO, Mercury).</p><p>We’re extremely grateful to work with these industry leaders. Together, we’re excited to continue shaping Linear into the best-in-class project and issue tracking system that teams actually love to use.</p><h2>Our progress over the past three years</h2><p>We’ve had quite the momentum since launching and raising our <a href="https://linear.app/blog/linear-raises-usd13m-in-series-a-funding-from-sequoia-capital">Sequoia-led Series A in 2020</a>.</p><p>Linear has evolved to cover more product development workflows, helping companies <a href="https://linear.app/features/plan#roadmaps">drive their roadmaps</a>, <a href="https://linear.app/features/collaborate#project-updates">share project updates</a>, <a href="https://linear.app/features/collaborate#triage">triage incoming bug reports</a>, and get <a href="https://linear.app/features/insights">actionable insights</a> from our data tools.</p><p>The business has grown significantly and we’ve been able to do it profitably. Linear has been growing &amp; operating profitably since 2021, a year after launching the product. We also have a negative lifetime burn rate (we have more cash in the bank than we have raised from investors). This is a strong sign of long term sustainability.</p><p>It’s been amazing to see Linear becoming trusted and used by thousands of companies of all sizes – from public companies to early stage startups. It’s very likely that Linear is powering the companies behind products that you use and love today. Companies such as<strong> Cash App</strong>, <strong>Supercell</strong>, <strong>The Browser Company</strong>, <strong>Raycast</strong>, <strong>Retool</strong>, <strong>Vercel</strong>, <strong>Cohere</strong>, <strong>Substack</strong>, <strong>Mercury</strong>, <strong>Runway</strong>, <strong>Loom</strong> and <strong>Ramp</strong> all build with Linear.</p><p>Linear is the tool of choice for modern teams. While some find Linear and start using it from day one, more commonly we see companies switching over from legacy tools. <strong>Remote</strong>, <strong>Replit</strong>,<strong> Modern Treasury</strong>, and <strong>Verkada</strong> are just a few of the companies that have recently migrated their teams over. The reason these companies are choosing Linear isn’t just the speed, optimized design, or powerful features. It’s the collective result of all of these elements coming together into a better way to build products, where the team can focus on doing the work, not configuring the system.</p><blockquote><p>As we grew from a startup to a 1,000 person company, the tool we were using to manage our work just got more complicated. Every single project management tool we tried fell short—until we tried Linear. Everyone loves using it. It’s fast. It’s so much easier to communicate about issues and projects. We trust Linear as our single source of truth. Our team can focus on what’s actually important: building our product.</p><cite>Marcelo Lebre<!-- -->, <!-- -->Cofounder &amp; President, Remote</cite></blockquote><blockquote><p>Linear has been a lever. It gives our teams everything they need to improve coordination and inspires us to build better products.</p><cite>Anil Varanasi<!-- -->, <!-- -->Cofounder &amp; CEO, Meter</cite></blockquote><blockquote><p>With Linear, we finally get a sense for the state of our work and our velocity. The speed with which you can navigate, review and update work is huge. Linear actually helps us to ship on time.</p><cite>Matt Marcus<!-- -->, <!-- -->Cofounder &amp; CPO, Modern Treasury</cite></blockquote><h2>What’s next</h2><p>While this is an exciting milestone, there is still a long journey ahead of us. We are staying focused on our commitment to building magical, high quality software and helping our customers around the world do the same.</p><p>Today, we are a team of 50 people and we plan to continue expanding the team very intentionally. One of our core beliefs is that smaller and focused teams achieve better quality results if given the right environment. If you want to be part of the journey, <a href="https://linear.app/careers">we are hiring</a>.</p><p>Lastly, we are incredibly grateful for our customers and the community. We know that so much of where we are today is because of your support and trust. Thank you and we’re looking forward to continue building for you.</p><p><em>Thank you to our investors of this round: Kenneth Auchenberg, Koen Bok, Christina Cacioppo, Miles Clements, Dick Costolo, Jorn van Dijk, Claire Hughes Johnson, Akash Garg, Robert Gentz, Gavin Weigh, Cal Henderson, Immad Akhund, Marianne Vikkula, Krithika Muthukumar, Riku Mäkelä, Josh Miller, Andrew Mason, Henrietta Moon, Kristo Ovaska, Ilkka Paananen, Kyle Parrish, Praveen Neppalli Naga, Anssi Rusi, Guillermo Rauch, Oskari Saarenmaa, Rudi Skogman, Lee Robinson, Ganesh Srinivasan, and Stephanie Zhan.</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How we think about customer experience at Linear]]></title>
            <link>https://linear.app/now/how-we-think-about-customer-experience-at-linear</link>
            <guid>https://linear.app/now/how-we-think-about-customer-experience-at-linear</guid>
            <pubDate>Thu, 07 Sep 2023 07:29:00 GMT</pubDate>
            <description><![CDATA[We believe in extending our product philosophy across all aspects of our company — especially customer support. We interviewed our in-house CX team to share how Linear uses Linear.]]></description>
            <content:encoded><![CDATA[<div><p>Update (2025)</p>We’ve published an updated version of this article — read it here.</div><p></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Scaling the Linear Sync Engine]]></title>
            <link>https://linear.app/now/scaling-the-linear-sync-engine</link>
            <guid>https://linear.app/now/scaling-the-linear-sync-engine</guid>
            <pubDate>Thu, 29 Jun 2023 07:28:00 GMT</pubDate>
            <description><![CDATA[How does Linear's realtime sync engine work behind the scenes? In this talk, I cover the challenges we've had scaling the sync engine, how the API around it has formed because of those challenges, and how the sync engine works in the Linear application today.]]></description>
            <content:encoded><![CDATA[<p>A few years ago, I gave <a href="https://www.youtube.com/watch?v=WxK11RsLqp4&amp;t=2175s">a talk at React Helsinki</a> about how the Linear realtime sync engine works behind the scenes.</p><p>We have come a long way since then, so we recorded a sequel to that talk at our company offsite a few weeks ago. In this video we cover the challenges we’ve had scaling the sync engine, how the API around it has formed because of those challenges, and how the sync engine works in the Linear application today.</p><p><a href="https://www.youtube.com/watch?v=Wo2m3jaJixU" target="_blank" rel="noopener noreferrer">Watch video on YouTube</a></p><p>If you want to experience the sync engine in action, you can <a href="https://linear.app/signup">sign up for a Linear account</a> (it’s free!) and test it yourself.</p><p>Interested in helping us scale the sync engine (and Linear) to the next level? <a href="https://linear.app/careers">We are hiring for a variety of roles</a> across Europe and North America.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Welcoming Cristina Cordova to Linear]]></title>
            <link>https://linear.app/now/welcoming-cristina-cordova-to-linear</link>
            <guid>https://linear.app/now/welcoming-cristina-cordova-to-linear</guid>
            <pubDate>Tue, 23 May 2023 16:00:35 GMT</pubDate>
            <description><![CDATA[We are excited to share that Cristina Cordova has joined Linear as Chief Operating Officer to help us shape the company and lead our go-to-market efforts. ]]></description>
            <content:encoded><![CDATA[<p>I’m excited to share that <a href="https://twitter.com/cjc">Cristina Cordova</a> has joined Linear as Chief Operating Officer to help us shape the company and lead our go-to-market efforts.</p><p>Cristina joins us at a pivotal moment in our journey to create a new standard for building software. Beyond the thousands of startups using Linear, there is an increasingly large number of established companies that are pushing back against the stagnation of their tools and looking for a better way to build their products.</p><p>Remote, Watershed, and Cohere are just a few of the companies that have migrated their teams over to Linear since the start of this year.</p><p>To ensure that Linear provides the same level of performance, effectiveness and delight to teams of any size, our focus has been to make Linear even more scalable and reliable. This involves not only leveling up Linear the product, but also leveling up Linear the company. And this is where Cristina comes in.</p><p>Cristina brings a wealth of experience to Linear having previously scaled products and teams at Stripe and Notion. At Notion, Cristina served as the Head of Platform &amp; Partnerships managing the launch of the company’s API and building various business development and product growth teams. She previously spent more than seven years at Stripe, where she led a business unit and built the partnerships team from the ground up. She joined Stripe as one of the first employees and helped to grow the company to nearly 3000 people.</p><p>Most recently, Cristina was a Partner at First Round and an investor and advisor to companies such as Canva, AtoB and Meter (most of which are building with Linear).</p><p>Our approach to company building is similar to our approach to product building: We want to ship better, not just faster. We value craftsmanship and getting even the smallest details right. This means being considerate in who we bring on board to drive Linear forward. The reason I believe Cristina is such a great fit for Linear’s next phase of growth is not just her track record of scaling industry-defining companies, but the fact that she shares our values and <a href="https://linear.app/readme">our way of thinking</a>.</p><p>Cristina has worked on developer products for the majority of her career and cares deeply about customer experience. She shares our commitment to quality and will bring the same attention to detail to our go-to-market efforts. In short, Cristina will help us expand Linear’s magic and bring it to the entire customer journey.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How we built Project Updates]]></title>
            <link>https://linear.app/now/how-we-built-project-updates</link>
            <guid>https://linear.app/now/how-we-built-project-updates</guid>
            <pubDate>Wed, 10 Aug 2022 16:00:00 GMT</pubDate>
            <description><![CDATA[Last week we introduced a new concept to Linear called Project Updates. Project Updates are short status reports that keep everyone in your company informed about the progress and health of your projects.]]></description>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/3abf9b41749ee99a0b2d3b124e8ea07b77b68362-1600x388.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/c645b196477a136d7afcd997385bae180e4f5e82-1600x958.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/edda66b8684b996d9f34804d180e4983d929433d-1600x1287.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/4f0eeae46cd15267fb01953a9d4bd0a967df694e-1600x1295.png?q=95&amp;auto=format&amp;dpr=2"/><p>Last week we introduced a new concept to Linear called <a href="https://linear.app/changelog/2022-08-04-project-updates">Project Updates</a>. Project Updates are short status reports that keep everyone in your company informed about the progress and health of your projects.<br/><br/>“Projects” was one of the core themes of our 2022 roadmap planning session and we spent a lot of time discussing what features we should work on to meaningfully improve this part of the Linear experience. </p><p>Project Updates wasn’t part of our initial list of things to build. It slowly emerged as a problem space that we should tackle as we were building other things.</p><p>Here’s what happened.</p><hr/><p>As we started working on our 2022 initiatives, we realized that some of our coordination and reporting processes needed upgrading. Linear is still a fairly small company, but even with just 22 employees it felt like we needed a more formal process to keep everyone up-to-date on the progress of all the projects that people were working on.</p><p>Our first solution was a setup of different Slack channels:</p><ul><li>Each project received a dedicated Slack channel</li><li>Once a week, the project owner would write a short progress update and post it in the respective Slack channel</li><li>Every update would then be cross-posted to a global <strong>#project-updates</strong> channel so that everyone outside the project was also notified of the update</li></ul><p>It worked. But not well.<br/><br/>The writing process felt very manual and required a lot of back and forth. The reading process was even worse with updates getting lost in an endless stream of Slack messages. Most importantly, the updates were completely siloed from where the actual project work was happening.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/3abf9b41749ee99a0b2d3b124e8ea07b77b68362-1600x388.png?q=95&amp;auto=format&amp;dpr=2" width="1600" height="388" alt="Screenshot of a Slack message from Jori that says &quot;Doing project updates in Slack doesn&#x27;t feel great ... we should try something else&quot;"/></figure><p>So we asked other companies how they managed project updates.</p><hr/><p>Turns out that their solutions weren’t much better.<br/><br/>The exact process differs from company to company, but the first step typically involves a tool to collect updates. Sometimes that tool is a spreadsheet, sometimes it’s a slide deck, sometimes it’s a Notion doc. But in every case the process is manual and requires switching between several different applications.<br/><br/>In a second step, a dedicated person has to collect and format all the updates that have been submitted, and finally send them via email to all relevant stakeholders in the company.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/c645b196477a136d7afcd997385bae180e4f5e82-1600x958.png?q=95&amp;auto=format&amp;dpr=2" width="1600" height="958" alt="Screenshot of an email from a company that started doing project udpates verbally"/></figure><p>The process is tedious. People waste a lot of time. Everyone dreads doing it.</p><p>It felt like we could build something better.</p><hr/><p>On a high level, project updates solve a pretty basic problem. Every company wants to know how their projects are progressing. Is everything still on track? Or is the projected outcome at risk? Nobody wants to be surprised that the project that was supposed to be ready tomorrow is suddenly six months delayed.<br/><br/>A large part of the problem with “traditional” project updates is that the writing process is decoupled from where the rest of the work is happening. Productivity and collaboration are treated as two distinct activities. By moving the writing process into Linear, the whole activity becomes a more fluid experience. There is no need for context and application switching.<br/><br/>In some of our earliest explorations we tried to build data-based project updates by aggregating issues statistics and calculating velocity. But we quickly realized that project progress is not something that can be predicted based on quantitative data alone. It needs qualitative input from the project team.<br/><br/>The best way to answer “How is this project going?” always comes down to a short, plain text update. It is partly a quick summary of the past (“here’s what happened in the last 7 days”) and partly an educated guess about the future (“based on the knowledge I have today, I think this project will finish on time”).<br/><br/>A good project update should be brief and to the point. Almost like a tweet. And it should be easy to consume for a reader who might not be familiar with all of the project details. We felt that a visual representation of the current project status would complement the written update nicely.<br/><br/>Based on this approach, we built a project updates feature that consists of two simple components:<br/><br/>➀ A health indicator that provides a high-level signal of the current state of the project<br/>➁ A rich text description to provide more in-depth information</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/edda66b8684b996d9f34804d180e4983d929433d-1600x1287.png?q=95&amp;auto=format&amp;dpr=2" width="1600" height="1287" alt="Project update editor"/></figure><p>To get into the habit of posting regularly and on time, we built a reminder feature that notifies project leads when it’s time to write an update. (At Linear, we write project updates every week on Friday.)</p><hr/><p>While the writing and broadcasting experience is critical, it is just one side of the process. Making sure the right people actually read the updates is equally important.<br/><br/>Similar to the writing process, we felt that we could deliver a more focused and uncluttered reading experience by showing project updates directly in the spatial context that matters most. That’s why project updates in Linear can not only be read directly on each project page, but also as an aggregated update feed on the project roadmap ➂.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/4f0eeae46cd15267fb01953a9d4bd0a967df694e-1600x1295.png?q=95&amp;auto=format&amp;dpr=2" width="1600" height="1295" alt="Project Updates newsfeed"/></figure><p>For those in the organisation working outside of Linear, project updates can automatically be broadcasted to a select Slack channel. This way we can serve everyone in their native medium instead of forcing people to modify the way they work.</p><hr/><p>Linear is meant to be a tool that streamlines the entire product building process. Its role is to create focus and routine by removing unnecessary barriers. Project updates felt like one of those friction points that we could turn into a more fluid and enjoyable experience.<br/><br/>This release is just a very first version of our take on Project Updates. Think of this blog post as a very long and public project update on Project Updates. Everything is on track, but we have a lot more planned for the future.<br/><br/>Stay tuned.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Settings are not a design failure]]></title>
            <link>https://linear.app/now/settings-are-not-a-design-failure</link>
            <guid>https://linear.app/now/settings-are-not-a-design-failure</guid>
            <pubDate>Wed, 02 Feb 2022 16:46:29 GMT</pubDate>
            <description><![CDATA[The systematic thinking in our industry is that settings are the result of design failure. As designers, our goal is to create product experiences that don’t require any adjustment by the user. So offering customization options is often seen as a failure to make firm product decisions. I think there is a misunderstanding about what settings really are.]]></description>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/9b7878c96553d2f66d41d7f25862ddb305121023-4800x2860.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/9fa104f99dd6ccbad9a5f80f777c7a0930595124-4800x2860.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/0c3208408f576b97e0d85fa99283c193f19d8727-4800x2860.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/6677830d892c9e68200e635f8ff3c47c73afcf96-4800x2860.png?q=95&amp;auto=format&amp;dpr=2"/><p>I was on a flight from Lisbon to Paris recently.<br/><br/>Sitting on an airplane is one of those moments where I eventually get bored enough to start exploring my iPhone settings.<br/><br/>While I was reorganizing my phone, I had a sudden realization: Settings are typically seen as the result of design failure. The thinking goes that as designers, our goal is to create product experiences that <strong>don’t</strong> require any adjustments by the user. Consequently, offering customization options is interpreted as a failure to make firm product decisions.<br/><br/>I think there is a misunderstanding about what settings really are.</p><p><strong>Users love settings</strong><br/><br/>There certainly are moments where I find myself on the settings page of a product because it failed to deliver the experience I really wanted. But not all settings are created equal.<br/><br/>There’s a difference between product settings that a product <em>needs to</em> get right by default and preferences that designers deliberately <em>shouldn’t</em> have a strong opinion on.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/9b7878c96553d2f66d41d7f25862ddb305121023-4800x2860.png?q=95&amp;auto=format&amp;dpr=2" width="4800" height="2860" alt="macOS and iOS system preferences side by side"/></figure><p>First of all, remind yourself that users love settings.<br/><br/>Despite initially being born out of the absence of airplane WiFi, I actually enjoy discovering new settings on my iPhone that will make my life easier or improve my productivity.<br/><br/>Just look at your own user behaviour: <br/>What do you do when you set up your new computer?</p><p>You change your background image. <br/>You adjust your mouse speed. <br/>You set a default browser.<br/><br/>You make all of those rearrangements not because the operating system is badly designed. You make them to create a more comfortable environment. To feel more at home.<br/><br/>In the end, this is the feeling we all try to re-create as designers.</p><p><strong>Making settings sexy again</strong><br/><br/>As a designer at Linear, I recently spent a lot of time redesigning our settings view. We understand that our users will spend a lot of time with us and so we really want to make sure that they can feel that we care about them.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/9fa104f99dd6ccbad9a5f80f777c7a0930595124-4800x2860.png?q=95&amp;auto=format&amp;dpr=2" width="4800" height="2860" alt="A slack message from jori: &quot;Make settings sexy again&quot;"/></figure><p>During our team discussions, I realized that adding a customization layer to Linear had an additional benefit: It’s an excellent way to showcase our product and educate users about all its functionalities. <br/><br/>Some users immediately explore Linear’s settings to tailor their workspace to their unique team processes. So it made perfect sense for us to add tutorials and tips directly to our settings page. Once users have grown more experienced with Linear, they want to go deeper on the customization options of their workspace — and again, the settings page is the most natural way to learn what they can adjust.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/0c3208408f576b97e0d85fa99283c193f19d8727-4800x2860.png?q=95&amp;auto=format&amp;dpr=2" width="4800" height="2860" alt="Screenshot of the Linear workspace settings"/></figure><p>With these realizations in mind, we approached our settings redesign like an onboarding experience. We created a settings “homepage” to show users what they can do with Linear and experiment with different functionalities.<br/><br/>When our users come across a feature or integration that isn’t working the way they want, they typically send us screenshots of their settings page. So we decided to use this space to display tutorials and tooltips. This way, users can learn more about the product and its features by simply navigating the settings.</p><p><strong>Come for the vision, stay for the details</strong><br/><br/>In addition to workspace settings, we also provide user-level settings. You can add custom emojis or import the ones you already have in Slack. We also allow you to completely customize your theme colors and other aspects of the app.<br/><br/>From a business perspective, focusing on small design details like this can be seen as a distraction. But if your users don’t feel comfortable using your product, even if it’s due to small details, they quickly leave you for a more cozy place. A place that feels more like home.<br/><br/>Some details become annoying because they are so repetitive. Some details are simply a matter of taste - not just UX/UI. By talking to users you can spot those details and introduce small settings that improve users’ lives without changing or disrupting your product direction. As the name suggests, they are just preferences.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/6677830d892c9e68200e635f8ff3c47c73afcf96-4800x2860.png?q=95&amp;auto=format&amp;dpr=2" width="4800" height="2860" alt="Screenshot of the Linear display settings"/></figure><p>One of the small preferences we introduced in the Linear app is not displaying the mouse cursor pointer over links. We want to mimic the feeling you natively have on the desktop with our Mac app. Most of our users never notice it - but to some it feels really weird. So we gave them the option to make the switch if they don’t like it.<br/><br/>People have certain habits and preferences. <br/>Our job as a company is to create products that fit into people’s lives, not the other way around.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Linear – 2021 Wrapped]]></title>
            <link>https://linear.app/now/linear-2021-wrapped</link>
            <guid>https://linear.app/now/linear-2021-wrapped</guid>
            <pubDate>Fri, 17 Dec 2021 17:13:54 GMT</pubDate>
            <description><![CDATA[2021 has been an exciting and productive year for us here at Linear. We look back on a year of progress and momentum with dozens of new features, hundreds of fixes and improvements, and thousands of completed issues.]]></description>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/0f063a1965b2aed5d18ca9fc2e0742c70dbb89bc-4000x1736.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/322d97ae580d705e918cfc0a0897b5debd108bc3-2000x1100.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/d2aad1041d05ea8dd04963c77aefdbc327a48395-2000x1096.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/ea29dce4bbd60e441eeb7df53fbc92a14e47fddf-2000x685.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/f9a4ce866315430e27522e7ba90b463103aecfeb-2000x1076.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/77ea9857638959db5ff2484908629f5bc6e9ca8f-2000x1240.jpg?q=95&amp;auto=format&amp;dpr=2"/><p>Building software products is like going on a journey.<br/><br/>When you are on a journey, you typically look ahead. You look at the ambitious goals you set for yourself. The mountain peak you want to climb. The next milestone you want to reach.<br/><br/>Looking ahead keeps you on the right track. It gives you direction and serves as a reminder for why you went on your journey in the first place. But every once in a while it’s worth it to stop for a second and to take a look back.<br/><br/>Looking back helps you to see all the progress you have made on your journey so far. It gives you a sense of accomplishment. Sometimes it’s worth looking back just to enjoy the view.</p><hr/><p>At Linear, we are on a journey to bring back the magic to software. Our mountain peak is building tools for the next generation of high-impact companies - so that they can be more successful on their respective journeys.<br/><br/>But today, we are not here to talk about where we are going. We want to stop for a second and take a look back. We already <a href="https://linear.app/changelog">publish regular changelogs about new improvements and updates</a> (and we would <a href="https://linear.app/blog/startups-write-changelogs">encourage you to do the same</a>) - so today we’ll look back at our entire 2021 journey. The last 347 days to be exact.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/0f063a1965b2aed5d18ca9fc2e0742c70dbb89bc-4000x1736.png?q=95&amp;auto=format&amp;dpr=2" width="4000" height="1736" alt="39 changelog updates, 58 new features, 740 fixes and improvements"/></figure><p>2021 has been an exciting and productive year for us. A year full of progress and momentum. We shipped <strong>39 changelog updates</strong> featuring <strong>58 new features</strong> and <strong>740 fixes and improvements</strong> over the last twelve months. Highlights include our integrations for <a href="https://linear.app/changelog/2021-11-18-front-integration-and-universal-links">Front</a>, <a href="https://linear.app/changelog/2021-06-23-intercom-integration">Intercom</a> &amp; <a href="https://linear.app/changelog/2021-04-30-zendesk-integration">Zendesk</a>; <a href="https://linear.app/changelog/2021-05-27-linear-preview-roadmap-timeline">roadmap timeline</a>, <a href="https://linear.app/changelog/2021-12-02-workspace-templates">split inbox</a>, <a href="https://linear.app/changelog/2021-06-29-linear-release-and-issue-triage">issue triage</a>, <a href="https://linear.app/changelog/2021-11-08-linear-preview-new-filters">project documents and new filters</a>, <a href="https://linear.app/changelog/2021-10-21-soc-2">SOC 2 compliance</a>, and many, many other new features.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/322d97ae580d705e918cfc0a0897b5debd108bc3-2000x1100.png?q=95&amp;auto=format&amp;dpr=2" width="2000" height="1100" alt="chart showing team activity around launches like fast issue input, importers, search, issue triage, frontend filters, and linear guide"/></figure><p>We look back on <strong>56 projects this year</strong>. Each of them is like a small mountain peak we had to climb on our journey to get to where we are today. The graph above features the ten largest projects we worked on this year - our 2021 summits, so to speak. Their height is determined by their number of issues weighted by their respective estimates.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/d2aad1041d05ea8dd04963c77aefdbc327a48395-2000x1096.png?q=95&amp;auto=format&amp;dpr=2" width="2000" height="1096" alt="chart showing a comparison between number of issues created vs completed"/></figure><p>We created our first issue of the year on Sat, Jan 02 2021 at 10:59:31 GMT. Since then, the team created <strong>4,387 more issues</strong>. Luckily, we launched an <a href="https://linear.app/changelog/2021-03-10-new-issue-creation-ui">updated issue creation UI </a>earlier this year which made this process way faster.</p><p>We marked <strong>2,489 issues as complete</strong>. That’s an average of <strong>7.17291 completed issues per day</strong>. Nov 10, 2021 was our most productive day with 45 issues marked as completed.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/ea29dce4bbd60e441eeb7df53fbc92a14e47fddf-2000x685.png?q=95&amp;auto=format&amp;dpr=2" width="2000" height="685" alt="bar chart showing a graph of number of issues fixed"/></figure><p>Of the 2489 issues we completed this year, <strong>518 were bugs that we fixed.<br/><br/></strong>Our users sent us <strong>hundreds of feature requests</strong> - many of them via the Linear Slack community which has <strong>3,306 members</strong>.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/f9a4ce866315430e27522e7ba90b463103aecfeb-2000x1076.png?q=95&amp;auto=format&amp;dpr=2" width="2000" height="1076" alt="13 team members, 7 times zones, 11 cities"/></figure><p><strong>5 new team members</strong> joined us during our journey this year, bringing the Linear team to a total of <strong>13 people</strong>. We are a fully-remote company and currently work across <strong>11 cities</strong> across <strong>7 timezones</strong> within GMT +8 to -2.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/77ea9857638959db5ff2484908629f5bc6e9ca8f-2000x1240.jpg?q=95&amp;auto=format&amp;dpr=2" width="2000" height="1240" alt="5 team bake offs – wontons, enchiladas, lemon meringue pies, japenese roll cakes, tarte tain"/></figure><p>No great journey has ever been completed without sufficient energy supplies. That’s why we cook or bake together over Zoom at least once a quarter. In 2021, we organized <strong>5 team bake offs</strong> which included everything from Enchiladas to Japanese roll cakes.</p><hr/><p>Looking back at everything we worked on in 2021 gets us even more excited about what’s coming in 2022. We have an ambitious roadmap ahead of us with a lot of exciting mountain peaks to climb. And we are looking for pioneering and passionate people to join us on that journey.</p><p>If your 2022 goals include taking up a new professional challenge, you should <a href="https://linear.app/readme">consider joining us</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Fast growing startups are built on Linear]]></title>
            <link>https://linear.app/now/fast-growing-startups-are-built-on-linear</link>
            <guid>https://linear.app/now/fast-growing-startups-are-built-on-linear</guid>
            <pubDate>Tue, 29 Jun 2021 19:59:00 GMT</pubDate>
            <description><![CDATA[We launched Linear exactly one year ago to help high-performing teams who wanted a better way to build software. Linear is fast, effortless, and simple to use. It streamlines core aspects of product team workflows so that they can focus on the work that matters while our tool does the rest.]]></description>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/1d1491f49951c6eb83365dfcbe6d5e4c987dbb92-2400x1467.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/253f8b53aa812b0ea711ef45e318a8b6b0a91666-2400x1441.png?q=95&amp;auto=format&amp;dpr=2"/><h2>Fast growing startups are built on Linear</h2><p>We launched Linear exactly one year ago to help high-performing teams who wanted a better way to build software. Linear is fast, effortless, and simple to use. It streamlines core aspects of product team workflows so that they can focus on the work that matters while our tool does the rest.</p><p>We’ve grown a lot since then as a team, and so have the companies that use Linear. The challenges they and we have faced in scaling inspired many of the features that we built for <a href="https://linear.app/releases/2021-06"><strong>this release.</strong></a></p><h2>Scaling product development</h2><blockquote><em>“We were constantly fighting our existing issue tracking tool to support EPD. We felt there was a lot of “work about work” to keep tasks and projects organized. Linear is different. It has a better model and structure for engineering orgs. Sprints, points, priority, and status are all treated as first-class properties of tasks. Search and filtering are powerful and the timeline view is one of the best I’ve seen.”<br/></em><br/><a href="https://linear.app/customers/descript"><strong>Andrew Mason, CEO &amp; Founder, Descript</strong></a></blockquote><p>A big challenge startups face once they hit product-market fit is how to keep processes simple while their teams increase in size and their product grows more complex. Coordination is relatively easy at five, ten, and even fifteen people. Most employees are individual contributors who manage their own work and do so on small, autonomous teams. Project planning and issue prioritization is simple when you’re focused on a small feature set and handful of customers. But once a company hits that lucky spot where numbers start to go up and to the right, they go from dealing with product-market fit problems to scaling problems.</p><p>Scaling is hard. We know this ourselves, from our work on Linear and especially from our experience building products at high-growth companies like Coinbase, Uber, and Airbnb. We saw it done well and not so well.</p><p>Too often, the approach to scaling is to add layers of processes and more tooling. This ends up creating busy work and disrupting the dynamics and workflows that helped the earlier team succeed. What you actually want is a way to simplify processes, make workflows more efficient, and design ways to work together so that it doesn’t seem like you’ve added new layers even if you have.</p><h2>2021–06 Release</h2><p>The next generation of startups is being built on Linear. Some of the fastest-growing startups and industry-changing companies from around the world. We learn so much from how they use the product and their feedback on Linear.</p><p>This release brings new features that help them manage added complexity without losing the efficiency of small teams. At the core are two traditionally complex issues, triaging requests and roadmap planning.</p><h2>Triage &amp; customer support tooling</h2><figure><img src="https://webassets.linear.app/images/ornj730p/production/1d1491f49951c6eb83365dfcbe6d5e4c987dbb92-2400x1467.png?q=95&amp;auto=format&amp;dpr=2" width="2400" height="1467" alt="An illustration showing Zendesk, Intercom, Front, Twitter, and Slack feeding data into Linear triage."/></figure><p>We build in public at Linear and put care into talking to users and getting feedback. We talk to hundreds of customers each week through our 2k+ strong <a href="https://linear.app/join-slack">Slack community</a>, 14k <a href="https://twitter.com/linear">Twitter</a> followers, and to users who send in bug reports, requests, and questions through our in-app help modal which routes to a Front Inbox.</p><p>We like to link to customer conversations in Linear issues so that we can keep track of requests and get back to customers when issues resolve. As we grew, we found it harder to do that. We weren’t alone as we learned a lot of our customers faced this same problem: they had Linear issues filled with links to customer conversations. Some also had started building separate Triage “teams” where they would file all new issues, then clean up, prioritize, and move them to the appropriate team.</p><p>So we built this user experience into the product in our new Triage feature. All new issues from integrations or members outside of your team now go to a special team inbox called Triage. These issues have linked attachments back to the customer support tools where they were created.</p><p>The product team can choose how they triage issues but we’ve built in a simple workflow you can follow, too. Use keyboard shortcuts or the menu to accept an issue to the backlog, escalate it to the current cycle, merge, decline, or even snooze the issue for later. Declining an issue prompts you to leave a comment explaining why and you can keep an issue in the Triage inbox while you wait for more information.</p><h2>Customer support integrations</h2><p>We’ve been using Triage at Linear for the last couple of weeks and find it, along with the customer support integration with Front (in beta), incredibly useful for our team. With our new integrations, you can now create Linear issues from Zendesk, Intercom, and Front. If you’re tracking feature requests (we have a separate Linear team for this), you can attach multiple customer conversations to a single Linear issue and attach any URL such as tweets or Slack posts from your community Slack group.</p><p>This makes it incredibly easy to track requests and for product teams to get back to customers directly with follow up questions. We show issue details and status updates directly in the customer support tool and re-open customer conversations once issues have closed.</p><h2>Roadmap Timeline with live predictions</h2><figure><img src="https://webassets.linear.app/images/ornj730p/production/253f8b53aa812b0ea711ef45e318a8b6b0a91666-2400x1441.png?q=95&amp;auto=format&amp;dpr=2" width="2400" height="1441" alt="Screenshot of the Linear roadmap."/></figure><p>Roadmaps are critical guideposts for any organization but they have a tendency to be “set it and forget it” experiences in many tools. It’s easy, almost inevitable that plans change, especially at younger, fast-paced companies and so your initial estimations go stale.</p><p>Rather than fight entropy, we designed our roadmap around the uncertainties and practicalities of product development. We generate the timeline from your project data, so you don’t have to do any extra work to lay it out in that view and the data is always in sync. The timeline updates anytime you make a change anywhere in the app to a project or its related issues. We use actual issue data and historical trends to estimate project completion dates, so you don’t just see plans but get a preview of future work based on actual velocity. This makes it easier to spot projects that need help or rescoping and to adjust plans accordingly.</p><h3><strong>What we shipped first half of 2021:</strong></h3><p>At Linear we like to build in public. We publish a <a href="https://linear.app/changelog">weekly changelog</a> to celebrate our progress and share it with our customers. The theme for the first half of 2021 was to improve Linear for our growing customers.</p><h3><strong>Here is what we built:</strong></h3><ul><li>Timeline view for Roadmap with live predictions</li><li>Triage Inbox for teams that lets you create, prioritize, and assign new issues with quick actions including Snooze. Inbox now has snooze, too</li><li>Customer support integrations with Zendesk, Intercom, and Front</li><li>Private teams so you can control access to sensitive issues and projects</li><li>Fast issue input that lets you create multiple issues in a row, save drafts, and create issues in a modal so that you don’t lose context</li><li>Typescript SDK and new developer documentation at <a href="https://developers.linear.app/docs/">developers.linear.app</a></li><li>Issue Migration Assistant that lets you import issues in minutes from common issue tracking tools to Linear</li><li>Powerful backend search that can search the archive and also shows you recently opened issues</li><li>Auto-archive that retains statistics and automatically archives your issues, cycles, and projects at a regular cadence between 1–12 months</li><li>New integrations including Netifly, Incident.io, Codestream, and Slab</li><li>Startup performance improvements to make Linear even faster</li><li>Desktop clients for Apple M1 and Windows</li><li>Improvements to issue merging, issue view layout, issue grouping, GitHub notifications, and keyboard shortcuts help. A feature to delete issues.</li><li>Updates to the Zapier integration, new webhooks, and API improvements</li></ul><h4><a href="https://linear.app/releases/2021-06">Check out our newest release to learn more</a></h4><p>—</p><h3><strong>Growing Linear team</strong></h3><p>Another milestone for us is that we’ve grown in size and continents. We added three new team members since our last launch bringing the Linear team to 11 strong working remotely in US, Sweden, Finland, Portugal, France, and Argentina. We’re hiring for engineering, design, and operations across GMT+3 and GMT-7 time zones.</p><p><a href="https://jobs.lever.co/linear">https://jobs.lever.co/linear</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building at the early stage]]></title>
            <link>https://linear.app/now/building-at-the-early-stage</link>
            <guid>https://linear.app/now/building-at-the-early-stage</guid>
            <pubDate>Thu, 21 Jan 2021 17:53:00 GMT</pubDate>
            <description><![CDATA[We knew how to code, design and ship but we didn’t know how to prioritize effectively, set meaningful goals, or keep the momentum up week after week. While at the very beginning this is not that critical. It becomes more when you get to the stage of having a product and user to support. You need some structure to keep making meaningful progress and not going around in circles.]]></description>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/27aa92004cba06fde05f6117bdac78689b954f84-1396x1780.jpg?q=95&amp;auto=format&amp;dpr=2"/><p>Before we started <a href="https://linear.app/">Linear,</a> Jori and I built another company that was part of the Y Combinator’s Summer 2012 batch. There were a lot of lessons I learned from YC. However, one thing I wish I had understood better was what effective product development looks like.</p><p>Back then, we knew how to code, design and ship but we didn’t know how to prioritize effectively, set meaningful goals, or keep the momentum up week after week. While at the very beginning this is not that critical. It becomes more when you get to the stage of having a product and user to support. You need some structure to keep making meaningful progress and not going around in circles.</p><p>We learned some of this as we went through YC, and later over the years working in companies like Coinbase and Airbnb. I wish I had this understanding then and would have been able to focus more on the right things.</p><p>I often get questions from early-stage founders asking for tips and advice on how to run product development in the early stages. This is the basic model we use as well as some advice on how to think about product development in the early days.</p><p><em>—</em></p><p><em>P.S. We built</em> <a href="https://linear.app/"><em>Linear</em></a> <em>in part to make it easier for anyone to build products and give people a tool we wish we had when we were YC founders, one that was easy to use and encouraged good product development practices so we could spend more time shipping and talking to users, and less time figuring out how to manage our work.</em></p><p><strong><em>Active YC companies get a year free of Linear. Find details on our YC deal page.</em></strong></p><h2>Execution in the early stage</h2><p>As a new startup, you operate with a non-existing, or small user base, unfinished product, and limited understanding. In those early days, it’s better to aim to move fast as possible, try things out, learn and then fix and adjust. Momentum matters more than anything.</p><p>Moving fast doesn’t mean you shouldn’t have any structure or goals. The structure aims to keep up pace and momentum week after week, maintain the team’s health and avoid going in circles. You should keep these structures and tools lightweight as possible and make sure each of them has a purpose and it aligns on delivering value to the user.</p><h2>Build with users</h2><p>Much of the early startup process is about learning what your customers want. You should seek out users or potential users for feedback, iterate, and be flexible to meet the demands of your customers and the market.</p><h3><strong>Vision vs Feedback</strong></h3><p>However, your task as a founder is to find a balance between building toward your vision/intuition and building what the users want. Too vision-based products might miss user and market needs while too reactive products become Frankenstein creations without a clear purpose. You need to keep refining your product vision based on your user feedback.</p><h3><strong>Solve the problem not the feature</strong></h3><p>Understand that users will project their needs from the context or product they currently see, not the product that you’re trying to build. It’s common for users to ask for features you should add. Whenever they do, it’s important as a product builder that you ask them questions back. What is the use case? What is the problem they’re trying to solve with this feature or solution? How would their experience of the product be different if the problem was fixed?</p><p>By pivoting the conversation away from a feature request and toward explaining the problem they are trying to solve, you move the discussion towards the pain point. In this conversation, you’ll learn whether the problem is valuable to solve or nice to have. It also allows you to explore multiple solutions to the problem, and to choose the right one within the context of your broader vision.</p><h3><strong>Build for the right users</strong></h3><p>You may also talk to users who have a lot of feedback but who aren’t in your target demographic or aren’t it now. If you think you are building for things for early-stage startups, listening to an enterprise customer will likely set you on the wrong path and it’s unlikely that they will even become a customer.</p><p>Incorporate the feedback and let it refine your product, but don’t let user feedback alone dictate what you build. You can become too reactive to user feedback. This is why it’s good to have goals and roadmaps, that help you balance the needs of the users and the needs of the company.</p><h2>Set useful goals</h2><p>Startups move so fast that it’s normal not to know what you’re working on the next day let alone the next week. Goals are important to remind you what matters for the medium or long term success of the company. You might not feel like you have enough users or historical data to make decisions on what your goals should be. That’s normal and in those situations, create a goal that propels you forward in some measurable way.</p><p>In the early days, it can be hard to hit those goals when you start from zero. The way to think about it is to walk back from that goal, what is the path there. Path to 10 users starts with 1 user, which starts with having a product that someone can find and start using.</p><p>During YC your goal is to achieve meaningful traction by demo day. Your first meaningful goal getting there could be to find 10 users to use your product, then 100, then $1000 in MRR. Successful startups often start with something small, figure it out, and then scale. And remember, there is no limit to how fast you can grow.</p><h2>Use a roadmap set the path</h2><p>When you have some idea of which goals to tackle first, the next step is to figure out how. A product roadmap in a startup is a list of things you think you need to build to get where you need to be. Roadmaps are about setting direction and writing it down helps the team align on the direction. You should also realize you cannot do everything at once. The key is to think broadly but then only choose few things to do well and likely help with the goals.</p><p>In the first months of building Linear, we used monthly roadmaps. We’d brainstorm projects based on our goals and what we learned the month prior. We then selected 1–3 larger projects we saw most impactful towards our goals. This practice repeated over months helped ensure that we kept leveling up the product and didn’t get stuck only optimizing existing features. By only choosing a few larger projects, and not planning our time 100%, we left ourselves bandwidth to work on fixes and feature ideas from the user feedback.</p><p>We have a roadmap feature in Linear that you can use to build your roadmap but in the early stages, it can be as simple as one spreadsheet or document that lists the following.</p><ul><li><strong>Project title</strong></li><li><strong>Project description (at this stage you can have few paragraphs or bullet points to describe what do you think the project is for)</strong></li><li><strong>Why are you building this? (rationale why is it’s needed, how it’s supporting your goals etc)</strong></li><li><strong>The owner (who is responsible for building or driving this if there are multiple people)</strong></li></ul><p>Later, as the team grows or you feel that it’s necessary, you can expand these by writing brief 1-pagers to communicate the scope and details for the whole team.</p><h3><strong>Scope projects down</strong></h3><p>At the early stages, scope projects. Design projects so that they can be completed in 1–3 weeks with a team of 1–3 people. Smaller fixes or additions should take only hours or a day. Shorter projects force you to prioritize the most important feature set, create quick feedback loops with customers and get into the habit of shipping continuously. Smaller teams help you move faster and reduce the overhead. When you’re early in the product building stage, you don’t know enough to predict whether a project will be impactful or not so it’s better to avoid massive projects. If there is no way to scope down the project, then break it down into stages.</p><p><em>For example, we shipped the first versions of</em> <a href="https://linear.app/features/plan#cycles"><em>Cycles</em></a> <em>and</em> <a href="https://linear.app/features/plan#projects"><em>Projects</em></a> <em>in the first couple of months of starting Linear. The MVP version of both of these features took us about two weeks to design and build. We shipped the early versions to ourselves and private beta users in the first week and started collecting user feedback immediately and fixing them in the following weeks. We’ve made a lot of improvements to Cycles and Projects since and both of them are now the major features of the product.</em></p><h3>Ways to Prioritize</h3><p>It’s really important to learn to prioritize and have a rationale why you prioritize something. You don’t have unlimited resources or time.</p><p>First, it’s helpful to think of new features as additive <em>enablers</em> or removing <em>blockers.</em> Enablers enable new functionality that usually makes the product more valuable or interesting. Blockers are gaps or friction that prevents a user/customer to use your product. <em>(Note: You should try to understand if the problem is truly preventing someone from using the product or nice to have</em>). You need to work on enablers and blockers to grow.</p><p>Secondly, it’s important to consider how timely something is. In the early stages, there are a lot of things you need to build eventually, but you should prioritize things that help you move the needle this week or month. You want to ask yourself if this is important to be done now or can it be done later. If you are successful with the idea, does it help your goals?</p><p><strong><em>Example:</em></strong> <em>At Linear, we started only supporting Google Logins since that was the fastest way to build authentication and then move on to other features. We knew that eventually, we would have to support pure email and other login methods. This lets us move faster to learn about other features without spending our time building different authentication methods.</em></p><h3><strong>Weekly product development cycles</strong></h3><p>Whether you have a product roadmap or not, get your team together to discuss and decide what specific tasks the team will tackle this week.</p><p>Often with co-founders or with the team, there can be a constant stream of exciting ideas or debates. Use this one product meeting for brainstorming and discussion and then decide what is most important <em>this week</em> and commit to delivering on the tasks. Then get to work. Brainstorming or debating every day can be distracting and prevent the team from making progress. In the end, only shipped features matter, half-built features or winning debates don’t help your users and therefore your company.</p><p>We always assign tasks in a cycle to a specific person. This makes it clear who is responsible for delivering the task, ideally, the person is the right person to solve it and it also makes it easy to see who is overcommitted or who has more bandwidth.</p><p>As we started getting users, we would start to add bugs to our cycles to maintain product quality. Startups often forget bugs, which if left unchecked, can create enough friction that slows down your growth.</p><p>During our first months, we set our cycles in Linear to be 1-week (which we recommend for YC or generally early for the early stage):</p><ul><li><strong>On Mondays,</strong> discuss end decide what to do next. Assign responsibilities and get to work.</li><li>During the week as additional ideas or feedback came up, we would take notes personally, share them on Slack or add related tasks to the backlog but not start working or spend time debating them. This lets us capture learnings but remain focused on the work we decided to do earlier.</li><li><strong>On Fridays</strong>, we would review the work done, what we learned from our work, or talking to users, and then try to wrap up any open tasks if possible. The following Monday, we would start the process over again.</li></ul><h2>Don’t get paralyzed</h2><h3>Building with momentum</h3><p>You and your whole team should always try to take swift action and make progress each day. Instead of thinking or talking about doing something, you decide to do it or not to do it. Then you do it today instead of tomorrow and this week instead of next week.</p><p>There will be also weeks when you won’t necessarily know what is the most important thing to do or you are not sure what decision to make in the product. Don’t become paralyzed in those moments–find a way to act instead. Trust your intuition and do something that seems to make sense. Talk to more users. You’ll gain more clarity as more feedback rolls in. If you’ve designed your operations to move fast and learn, then you can correct or revert decisions.</p><p>Startups rarely die because they made too much progress or because of a single bad decision, but they do die when they move too slow or give up</p><h3>Build in public</h3><p>It might feel dangerous to show what you’re building but often it’s more useful. If anything, your competition might be discouraged by your speed and either forced to copy you or avoid copying you.</p><p>One way to build in public is to publish a changelog. It might seem silly to summarize your work in a changelog when you don’t have many users, but we think it’s helpful. For you and the team, it reminds you every week what happened and encourages you to ship constantly. For users, it shows the product is getting better. For investors, it shows progress. At times, when you feel things not moving as fast, you can look back at how much you achieved already.</p><p>There are other reasons why the changelog can be useful. Read more: <a href="https://medium.com/linear-app/startups-write-changelogs-c6a1d2ff4820">Startups Write Changelogs</a></p><h4><strong>Launch and keep launching</strong></h4><p>People often think there needs to be a singular moment for launch. This doesn’t have to be the case and a lot of times many startups launch multiple times. It usually works better than having one massive launch. The problem with massive launches is that it takes time to prepare and they are riskier. There is also an increased risk that the launch won’t work and all the work is wasted. By launching multiple times, you are building your story and brand over time and compounding the interested people have. Each launch builds more following, which then helps your future launches.</p><p>Secondly, in the first months or years, your product is likely not a fit for everyone. It’s better to launch early, start getting users and momentum, than trying to wait for that perfect moment.</p><p>Similar to changelogs, launching keeps reminding the market about the fact your company exists and you’re making progress.</p><p><em><strong>Example</strong>: With Linear, we launched by announced the company before we had the product built. We launched when we raised seed funding and evolved the product. We launched when we opened the product for everyone and added pricing. We launched when we did a Series A and evolved the product. Each of the launches had reached more people and generated more customers than the previous ones. Had we only launched once, it would have taken us 1.5 years to get to the state and we wouldn’t have learned as much and would have as many customers as we have today.</em></p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/27aa92004cba06fde05f6117bdac78689b954f84-1396x1780.jpg?q=95&amp;auto=format&amp;dpr=2" width="1396" height="1780" alt="Linear sidebar showing a project titled &quot;Launch Dec 2020&quot;"/></figure><h3>Try Linear</h3><p>While can use any tools or use no tool at all, we did create <a href="https://linear.app/">Linear</a> to help startup teams to build momentum. Many YC and other successful startups use Linear today to manage cycles, organize roadmaps, and have that lightweight structure you need: <a href="https://linear.app/"><strong>linear.app</strong></a></p><p>Active YC companies get the Linear Standard Plan free for a year. Visit the YC deals page to activate it.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Linear raises $13M in Series A funding from Sequoia Capital]]></title>
            <link>https://linear.app/now/linear-raises-usd13m-in-series-a-funding-from-sequoia-capital</link>
            <guid>https://linear.app/now/linear-raises-usd13m-in-series-a-funding-from-sequoia-capital</guid>
            <pubDate>Tue, 08 Dec 2020 21:16:00 GMT</pubDate>
            <description><![CDATA[Today, we’re announcing that we’ve raised $13M in Series A funding led by Sequoia Capital and a slew of new product updates aimed at re-envisioning the principles and practices of building and continue developing the best in class tool for teams to create software.]]></description>
            <content:encoded><![CDATA[<p>At <a href="https://linear.app/">Linear</a> our focus has been on empowering builders to focus on their work of creating software. In the past year, we have come a long way and we are excited to share the latest milestones in our journey.</p><p>Today, we’re announcing that we’ve raised $13M in Series A funding led by Sequoia Capital and a slew of new product updates aimed at re-envisioning the principles and practices of building and continue developing the best in class tool for teams to create software.</p><h4>Next Generation of Startups Are Being Built With Linear</h4><p>Hundreds of startups today–from early teams to growth stage companies–use Linear to develop software and build magical products and customer experiences. Linear’s tool and product development methodology is becoming the standard for high-performing teams and the 1,000 people strong Linear Slack community is a hub of builders. Startups especially mention how Linear helps keep up momentum and find product-market fit faster.</p><blockquote>“I think that one of the things that really high performing teams do is go from product feedback and into an execution plan of how we are going to get this delivered to that customer today, this week or this month. You err towards speed of execution because that’s how you find product market fit and that’s ultimately what “make something people want” means. <strong>Linear, in my opinion, is optimized for this and where it’s best in class</strong>.”</blockquote><blockquote>— Troy Goode, Founder &amp; CEO @ Courier</blockquote><p>Tools like Linear have become even more critical as companies operate remotely. The tools are the new office and the way of making decisions and communicating ideas:</p><blockquote>“<strong>Linear has been super helpful in transitioning to remote</strong>. Beforehand a lot of our conversations in person would ensure that nobody was doing the same work twice but now we need to have everything in Linear. Just to keep track of what’s going on. I can’t just roll my chair over and ask my coworker, “Hey, did you take a look at this.”</blockquote><blockquote>— Danielle Schugars, Software Engineer @ Render</blockquote><p>The Linear team itself is fully remote and distributed across North America and Europe (<a href="https://linear.app/readme">we’re hiring!</a>), and we think making a product that excels in a remote environment, means it will excel anywhere.</p><p>It’s our mission to help the next generation of startups build their companies and we’ve been especially honored to see the vast majority of our users become paying customers as we launched pricing plans this summer. This is fantastic validation of the product we have built and of course means a healthy and sustainable business for Linear.</p><h4><strong>Partnering with Sequoia Capital</strong></h4><p>Following this progress, to accelerate and to continue taking Linear to the next level we’ve partnered again with <strong>Sequoia Capital</strong> for our Series A. <strong>Stephanie Zhan</strong> who led our seed round last year will join our board. We admire and resonate with Sequoia’s and Stephanie’s long-term approach to company building and respect their exceptional track record of backing category-defining companies.</p><p>In addition, several industry leaders are participating in this round and bringing on their insights and networks: <strong>Dick Costolo</strong> (ex-CEO Twitter), <strong>Adam Bain</strong> (ex-COO Twitter), <strong>Patrick Collison</strong> (CEO, Stripe), <strong>Lenny Rachitsky</strong> (Lenny’s Newsletter, Airbnb), <strong>Harry Stebbings</strong> (20min VC) and <strong>Aston Motes</strong> (dev/color, Dropbox #1 engineer).</p><p>They will join our existing investors including <strong>Dylan Field</strong> (CEO, Figma), <strong>Emilie Choi</strong> (COO, Coinbase), <strong>Gustaf Alströmer</strong> (Partner, YC), <strong>Bobby Goodlatte</strong> (Form), <strong>Jude Gomila</strong> (CEO, Golden), <strong>Julia DeWahl</strong> (SpaceX).</p><p>The additional $13M in Series A funding brings our total funding to $17.2M. The funding and the support from our new and existing investors, give us the resources really acclerate and go after defining the new standard for software development.</p><h4><strong>Building a holistic tool for product building</strong></h4><p>Issue tracking lies at the heart of any software team’s workflow which is why we focused on solving this core pain point first. However, we know that building magical products and successful companies requires a lot more than fast and easy issue tracking. To build well, teams need a meaningful direction, clear communication and seamless coordination. Solving the human side of product management which includes implementing effective processes and then scaling them as their company grows in size as well as through different stages in the product development lifecycle.</p><p>As move to towards building product building, today we launch a few of our biggest features yet:</p><h4>1. Roadmaps</h4><p>One of the most important aspects when building any product or company is to set the direction. An effective roadmap shares a unified vision and aligns teams to build toward that. Without a clear direction, it’s hard for any company to make meaningful progress, especially startups who have finite product cycles available to test product-market fit before runway runs out.</p><p>Despite how critical roadmaps are to success, in many companies they’re not visible for everyone, up to date or connected to the execution of product and company deliverables. The Linear Roadmap solves this by generating a project-based roadmap–always up-to-date, accessible to all teammates and with clearly defined milestones–to encourage best practices in roadmap planning and execution.</p><p><strong>Enable roadmaps for your workspace in</strong> <a href="https://linear.app/settings/roadmap"><strong>settings</strong></a> <strong>and read more about our roadmaps in the</strong> <strong><a href="https://linear.app/method/roadmap">Linear Method</a>.</strong></p><h4><strong>2. Extensions and integrations with OAuth</strong></h4><p>When Linear opened for everyone six months ago, we quickly started seeing companies and developers building integrations and add-ons for Linear. We see Linear as a critical tool for company building and we don’t want to lock it down. Linear should be a platform that connects with more of your external and internal tools. With this launch, we’ve added OAuth in addition to our GraphQL API, to make it easier and more secure for developers to build and use integrations with Linear.</p><h4><strong>Linear Release — Dec 2020</strong></h4><p>At Linear we like to build in public. We publish a <a href="https://linear.app/changelog">weekly changelog</a> to celebrate our progress and share it with our customers.</p><p>To help give a holistic picture of what is new in Linear, we created a new <a href="https://linear.app/release-2020-12"><strong>Linear Release</strong></a> page which highlights new features as well as major improvements developed in the last six months. The theme for the second half of 2020 was to improve the core experience of Linear:</p><ul><li>Made the interface more tactile by allowing <strong>easy list selection</strong>, <strong>drag&amp;drop</strong>, supporting <strong>global undo with cmd+z</strong>, and having <strong>right click context menus</strong>.</li><li><strong>View option</strong>s that let you quickly change sorting, hide and show attributes, and switch between list and board views</li><li>Reworked our <strong>notification system</strong> to include granular controls</li><li><strong>Views</strong> which let you create and save custom filtered views for yourself or shared with the team or the whole company</li><li>Made <strong>creating su</strong>b-issues more flexible</li><li>Added <strong>SAML SSO</strong> option for more secure and controlled authentication</li><li>Enabled <strong>themes</strong> to allow everyone to customize how Linear looks</li></ul><p>See all the new features by heading to the <a href="https://linear.app/release-2020-12"><strong>Linear Release</strong></a> page.</p><h4><strong>Looking ahead</strong></h4><p>We started Linear 20 months ago with a simple insight: building software is becoming increasingly complicated. The current approach is to layer more processes and cumbersome tools. We want to see a world where we unwind all of this by providing the practices and tools fit to the builder workflow and letting the team focus on the act of building.</p><p>Here’s to the next 20 months. We are grateful for all the support we have received from our customers, partners and investors. Let’s make software as a craft feel magical again.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Invisible details - Building contextual menus]]></title>
            <link>https://linear.app/now/invisible-details</link>
            <guid>https://linear.app/now/invisible-details</guid>
            <pubDate>Thu, 17 Sep 2020 16:52:00 GMT</pubDate>
            <description><![CDATA[We recently added contextual menus to Linear. This makes the app faster and easier to use for people who prefer their mouse.  One small thing that you won’t see or think about but will hopefully feel is a detail we designed into how sub-menus work.]]></description>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/b7508c35c30c406ef0977157c9ca1c0d15bfbba9-2408x1760.jpg?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/4d018a2fc987299b1febd1d905d53bea9c97ea36-1400x996.png?q=95&amp;auto=format&amp;dpr=2"/><link rel="preload" as="image" href="https://webassets.linear.app/images/ornj730p/production/3737e80a99507838aa46f806d7eaa33970e593cf-1400x635.png?q=95&amp;auto=format&amp;dpr=2"/><p>We recently added contextual menus to Linear. This makes the app faster and easier to use for people who prefer their mouse.</p><p>One small thing that you won’t see or think about but will hopefully *feel* is a detail we designed into how sub-menus work.</p><h2>What are contextual menus?</h2><p>You may know contextual menus as “right click” or “pop up” menus. Right click with your mouse on this post (or <code>Ctrl</code>+ <em>Click</em> with your trackpad) and you’ll see a short contextual menu appear on your screen with options to reload or save the page. Contextual menus were first popularized by applications such as Microsoft Word which added them so users could more easily copy and paste. You’ll find them in most web and desktop-based applications.</p><p><a href="https://twitter.com/eldh/status/1300485830302203910?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1300485830302203910%7Ctwgr%5E%7Ctwcon%5Es1_&amp;ref_url=https%3A%2F%2Fpublish.twitter.com%2F%3Fquery%3Dhttps3A2F2Ftwitter.com2Feldh2Fstatus2F1300485830302203910widget%3DTweet">Link to tweet</a></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/b7508c35c30c406ef0977157c9ca1c0d15bfbba9-2408x1760.jpg?q=95&amp;auto=format&amp;dpr=2" width="2408" height="1760" alt="Tweet from Andreas Eldh about a safe area between the cursor and the menu when navigating contextual menus in Linear."/></figure><h2>Why are contextual menus useful?</h2><p>Contextual menus make applications faster and easier to use when navigating a page with your mouse. On Linear, we let you take almost any action on an issue from the contextual menu: set the issue status or priority, assign the issue to a different member of your team, change the estimate, mark it as blocking or a blocker to another issue, mark it as a duplicate, add the issue to a cycle or project, copy the git branch name and even archive the issue to remove it from your active issues list.</p><p></p><figure><img src="https://webassets.linear.app/images/ornj730p/production/4d018a2fc987299b1febd1d905d53bea9c97ea36-1400x996.png?q=95&amp;auto=format&amp;dpr=2" width="1400" height="996" alt="Nested contextual menu within Linear, open to the Issue Status submenu."/></figure><p>A contextual menu in Linear</p><p>We’re learning that contextual menus are also a great tool for onboarding and teaching people how to use our popular keyboard shortcuts. You can take almost every action in Linear without lifting your fingers off of the keyboard or using a mouse at all. For instance, instead of moving your cursor to the purple plus sign and clicking on it to create a Linear issue, you can just type <code>C</code>.</p><p>We find many Linear users prefer keyboard shortcuts for their speed but it can take some time to learn all of them. It’s also easy to forget the less-used keyboard shortcuts such as the one that lets you move an issue between teams (<code>Cmd</code> / <code>Ctrl</code> +<code>Shift</code> +<code>M</code>). Previously you had to open the command menu with (<code>Cmd</code> / <code>Ctrl</code> + <code>K</code>) and then type out a search query to find a keyboard shortcut you forgot or type <code>?</code> and then search our long list. Now you can simply right-click to take the action with the mouse or remind yourself of the keyboard shortcut.</p><h2>How we built the contextual menu in Linear</h2><p>In the first iteration of our menu, to access an item in a sub-menu you would have to move the cursor out in a straight line from the selected item onto the sub-menu, then move down from the top of the sub-menu to the item you wanted to click. You basically have to make an upside down L shape with your mouse.</p><p>The original design had a couple of problems:</p><p><strong>One, it’s not intuitive</strong>. It feels more natural to move the cursor in a diagonal line from the selected menu item to the sub-menu item you want to click. If you did that, though, the sub-menu would disappear before you could select the sub-menu item.</p><p><strong>Two, it takes longer.</strong> At Linear we care a lot about speed. It may only take a fraction to 1–2 seconds longer to move your mouse in an upside down L shape but the seconds add up when you’re taking the action multiple times. Some product and engineering managers take hundreds of interactions a day on Linear. Add in the time required to recoup after a menu disappears on you and the related frustration and it starts to feel like an important interaction to improve.</p><p>If you think about it, there’s no real reason why we build contextual menus that require this longer path when there’s an alternative. The shortest distance will always be the Euclidian, or diagonal, distance compared to the Manhattan distance, the distance taken when following the lines of a grid.</p><h2>Diving into the code</h2><p>Adding safe areas to contextual menus is not a new problem. <a href="https://bjk5.com/post/44698559168/breaking-down-amazons-mega-dropdown">Amazon, Khan Academy</a> and <a href="https://css-tricks.com/menus-with-dynamic-hit-areas/">others</a> have all implemented mechanisms to handle contextual menus better on their web apps. Native operating systems have followed these design pattern for many years. However, it’s a detail that’s often overlooked early in a web application’s development.</p><p>There are a few ways of approaching how to build contextual menus that let users scroll easily to the sub-menu items. We thought the best way would be to draw a triangle between the mouse cursor and the sub-menu to create a safe space where the mouse could move without triggering the sub-menu to close. So we built a component to do just that.</p><figure><img src="https://webassets.linear.app/images/ornj730p/production/3737e80a99507838aa46f806d7eaa33970e593cf-1400x635.png?q=95&amp;auto=format&amp;dpr=2" width="1400" height="635" alt="The safe area between the main and sub contextual menu is highlighted in red"/></figure><p>The safe area lets you move the mouse along the shortest path without closing the sub-menu</p><p>Here’s how to build a React component that creates a “safe area”:</p><h2>1. Measure the sub-menu</h2><p>The component gets a reference to the sub-menu as its only prop so that it can measure its size and position on the screen.</p><pre><code>const { x = 0, y = 0, height = 0, width = 0 } = props.subMenuRef.current?.getBoundingClientRect() || {};</code></pre><h2>2. Get the mouse coordinates</h2><p>For this we built a <a href="https://gist.github.com/eldh/54954e01b40ef6fb812e2c8ee13731dc">custom hook</a> that listens to the mouse movement. It’s used like this:</p><pre><code>const [mouseX, mouseY] = useMousePosition();</code></pre><h2>3. Calculate the safe area</h2><p>Now we have all the information we need to calculate what area to render between the cursor and the sub-menu. We need to figure out the position and size of the triangle as well as align the corners of the triangle correctly.</p><pre><code>const positions = { x, y, height, width, mouseX, mouseY }
return (
  &lt;div
    style={{
      position: &#x27;absolute&#x27;,
      top: 0,
      height,
      right: getRight(positions),
      left: getLeft(positions),
      width: getWidth(positions),
      clipPath: getClipPath(positions),
    }}
  /&gt;
)
</code></pre><p>The most interesting bits in the snippet above are perhaps the functions that calculate left, right, width and <code>clipPath</code>:</p><p><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/clip-path"><code>clip-path</code></a> is a cool css property that lets you define a region of the component that should be drawn to the screen. In this case we use a <code>polygon</code> to draw a triangle.</p><p>Not too bad! It only took about 40 lines of code all in all. Hopefully people using Linear will feel the difference.</p><p>If you’re curious, <a href="https://gist.github.com/eldh/51e3825b7aa55694f2a5ffa5f7de8a6a">here’s a gist with the full implementation</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Practices for Building — Linear is now open for all]]></title>
            <link>https://linear.app/now/practices-for-building-linear-is-now-open-for-all</link>
            <guid>https://linear.app/now/practices-for-building-linear-is-now-open-for-all</guid>
            <pubDate>Tue, 30 Jun 2020 20:18:00 GMT</pubDate>
            <description><![CDATA[At Linear, we believe software can feel magical. Well designed tools and practices encourage momentum and level up execution in our teams. Linear is now open for sign ups.]]></description>
            <content:encoded><![CDATA[<p><em>At Linear, we believe software can feel magical. Well designed tools and practices encourage momentum and level up execution in our teams. Linear is now open for sign ups at</em> <em><a href="https://linear.app/">https://linear.app</a>.</em></p><p>This past year, we’ve been working on refining Linear with our early adopters. We’ve spent hours talking to company founders, managers, designers and engineers. The common theme across conversations has been how broken the current ways of working are in the software industry, the subpar quality of the tools we use to build software, and how much change a product like Linear can bring.</p><p>Engineers and creators feel that their time is drained with continuous stand-ups, retros and reviews. Teams are hindered by slow and confusing tools. These practices and tools don’t seem to improve the quality of our work but they do make us dread our jobs. <strong>We want to change that.</strong></p><p>At Linear, we believe that the quality of software is driven both by the talentof its creators and how they feel while they’re crafting it. Teams that can focus their time and energy on the work itself build magical, high quality software.</p><p>Our tools and practices need to do their best to nurture this kind of environment and not take it away. They should be fast, integrated, save time, help to coordinate and most importantly, not get in the way of practicing our craft. This is why we’ve prioritized building an elegant, fast, and considerate product for software building teams.</p><p><strong>Linear Method — Our practices for building quality software</strong></p><p>To help teams create high quality software, we can’t stop at building a great product–we have to also understand how software teams work. Real change comes when tools create new habits and change our behaviors. As many of us transition to the remote age, we see new opportunities for tools to enable deep focus and better ways of working.</p><p>We’re learning about the best practices in the industry, rethinking features from their first principles, and codifying them into our product. As we build the Linear app, we’re also creating the <a href="https://linear.app/linear-method"><strong>Linear Method</strong></a> for software building. It encapsulates the principles, the practices and habits it enables and encourages to build magical, high quality. This way Linear can truly level up teams and let them focus on doing great work.</p><p><strong>Try Linear with your team for free:</strong></p><ul><li>Linear is available for everyone and you can get started for free with as many team members as you want, as long as you want. See our <a href="https://linear.app/pricing">pricing</a> if you want to upgrade</li><li>We will continue to work on refining the <a href="https://linear.app/linear-method">Linear Method</a></li><li>We are also adding documentation, <a href="https://docs.linear.app/">Linear Guide</a> and Gitlab integration. More on our <a href="https://linear.app/changelog">changelog</a></li></ul><p>We hope you join the Linear community and help us change how we all develop software. <strong>Sign up today at</strong> <strong><a href="https://linear.app/">https://linear.app</a>.</strong></p><p><br/></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Startups, Write Changelogs]]></title>
            <link>https://linear.app/now/startups-write-changelogs</link>
            <guid>https://linear.app/now/startups-write-changelogs</guid>
            <pubDate>Mon, 18 May 2020 20:21:00 GMT</pubDate>
            <description><![CDATA[A changelog is a simple way to communicate your progress and culture and celebrate wins. It can be a quick way to align your team to focus on creating user value.]]></description>
            <content:encoded><![CDATA[<p>Changelogs are not uncommon in software development, but often they are not used in early stage companies to engage with users and investors.</p><p>We picked up the practice of writing a changelog when we started building the issue tracking and project management tool <a href="https://linear.app/">Linear</a>. It felt natural to share updates as our goal is to build the most streamlined tool for software teams.</p><p>Our initial aim was to share the latest product changes with our early adopters and communicate how rapidly we were adding new features and fixing bugs. In the last 12 months, we have published over 50 changelogs. After doing these changelogs for a year, it turns out it was more impacful than we ever thought.</p><h2>What we learned</h2><p>A changelog is a simple way to communicate your progress and culture and celebrate wins. It can be a quick way to align your team to focus on creating user value.</p><p><strong>Momentum</strong><br/>In the early stages of startups, it’s important to keep moving and make progress. As Paul Graham says, <a href="https://www.paulgraham.com/die.html">startups rarely die in mid keystroke but they die because they get demoralized and give up</a>. Having a changelog reminds you each week that the way forward is to keep making something people want.</p><p><strong>Early Adopters</strong><br/>Most startups start with a core group of early adopters. These are people who are excited and willing take a risk of a newly developed software, and likely want to be part of helping to shape the product as well. Fixing things and publicly sharing the new changes and additions shows that you value the user feedback and want to improve the product for them.</p><p><strong>Culture</strong><br/>Weekly changelogs help communicate that the company values execution and shipping things, which is crucial in startups. If you don’t ship your work, you are not creating value for users, and increase the value of the company. It can also be a celebratory moment for the team as a whole when team members release their first features and sees the user feedback in real-time.</p><p><strong>Marketing</strong><br/>We have over a thousand people who follow and interact with the changelog updates. They find the progress, design, and other changes inspiring, and sometimes share it with their co-workers or friends, even if they are not Linear users. This spreads the word and leads to more people adopting <a href="https://linear.app/">Linear</a>.</p><p><strong>Recruiting</strong><br/>As the changelog is public, it acts as marketing for potential candidates: things about your culture, the product, and how you make progress. Most of our candidates have followed our changelog posts for a while before applying. Companies that execute fast, while valuing quality and craft, is appealing for many builders. Actions speak louder than words.</p><p><strong>Investor relations</strong><br/>Likely the majority of angel investors and VCs that I met mentioned they have been following our changelog updates, and have been impressed by the progress. This means that even before talking to them, they already had some sense of how we work, how the product works and how fast we make progress. They also see the public response to these changes, further validating the product value to the users.</p><p>Investors often also evaluate the opportunities and risks of any given company. With early-stage companies, one of the risks is the execution, whether the founding team is the right team and able to build the product they envision before they run out of money. A changelog is a public way to demonstrate that you can execute on the plans you have.</p><h2>How to write changelogs</h2><p>Experiment to find your way and voice that works for your audience and product. For inspiration, you can check out our changelog at <a href="https://linear.app/changelog">https://linear.app/changelog</a> and see how we share the updates on Twitter: <a href="https://twitter.com/linear">https://twitter.com/linear</a></p><p>Example changelog from <a href="https://linear.app/changelog">https://linear.app/changelog</a></p><p><strong>Our recommendation:</strong></p><ul><li>Set up a schedule, like a weekly or bi-weekly cadence. Try not to slip. If you don’t have anything for a given week, try to understand why the progress is slow. Sometimes you just need to focus on large changes. We pair our changelogs with our cycle (sprint) progress Linear, so the changelog is kind of a summary of what we achieved in our cycle.</li><li>Remember to write about things that are interesting to a human. Don’t include everything you do. Writing about database migrations is not that interesting unless it results in some performance gains or improves the user experience.</li><li>We rotate the writing responsibility within our team. Usually it’s the person who built the feature also writes the changelog.</li><li>Feature 1–3 larger changes, and collect all the little fixes in one section. Some of those little fixes are still important and show you care about fixing small bugs and annoying things that users might encounter.</li><li>Depending on your audience, try to figure out what is the right voice. Technical audiences likely appreciate more technical details, but others may not.</li><li>Include one or more screenshots or videos of the features if possible. This makes it more engaging and sometimes easier to get the gist of the change, especially for people who are not familiar with your product. We include a screenshot in the post, and then share additional videos on Twitter.</li><li>The tool doesn’t matter, the important thing is that you write the changelogs. You can write them in plain text, put them on Github, use Notion, blog, or share screenshot on Twitter. We write ours in markdown which is then rendered on our next.js based marketing website.</li><li>We then also share this on our Twitter account with product screenshots or demos of added features.</li><li>We also allow people to subscribe to the updates newsletter during onboarding. You can copy the content from your changelog post, and paste it to newsletter tools like Revue or Mailchimp.</li></ul><p>Subscribe to updates on <a href="https://linear.app/">https://linear.app</a></p><p><strong>So write changelogs.</strong> It’s an easy and low-effort way to keep the momentum, get new users, recruit, and build investor relationships. All things that help your company to be more successful.</p><p>If you start writing a changelog after reading this, let us know by tweeting us at <a href="https://twitter.com/linear">@linear</a> or <a href="https://twitter.com/karrisaarinen">@karrisaarinen</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Linear’s Next Chapter: Announcing our $4.2M Seed Round]]></title>
            <link>https://linear.app/now/linear-s-next-chapter-announcing-our-usd4-2m-seed-round</link>
            <guid>https://linear.app/now/linear-s-next-chapter-announcing-our-usd4-2m-seed-round</guid>
            <pubDate>Thu, 21 Nov 2019 21:23:00 GMT</pubDate>
            <description><![CDATA[Our mission is to streamline how teams build great software, starting from issue tracking.]]></description>
            <content:encoded><![CDATA[<p>At <strong><a href="https://linear.app/">Linear</a>,</strong> we are creating software for startups and companies who look to create impact. We believe creators should focus on the work they create, not manually tracking their work. Managers should spend their time prioritizing and giving direction, not bugging their teams for updates. Running the process shouldn’t sap your team’s energy and come in the way of creating.</p><p>That’s why today we are excited to announce that we’ve raised a $4.2M seed round, led by Sequoia Capital with participation from Index Ventures and others.</p><p>This is a big milestone for our team and we wanted to share a bit about our progress and what this means for the future of Linear.</p><h2>Our path so far</h2><p>In April of this year, we shared our story and vision to create a more enjoyable and effective way for teams to track issues and manage software development (<a href="https://medium.com/linear-app/announcing-linear-e64e79581d01">read the announcement here</a>). We want to bring some of the magic back to computers and software. The software you use daily to accomplish your work should be of the highest quality. It should feel exciting and enticing. It should be fast and you should feel empowered when you’re using it.</p><p>The need for a new solution to help product teams came from our personal experiences of designing and building software for successful and fast-growing companies like <strong>Uber,</strong> <strong>Airbnb</strong>, and <strong>Coinbase</strong>. We grew frustrated by how slow, lacking and disconnected they were from today’s best practices, and how little they helped our teams to coordinate and align our work, and deliver high-quality software.</p><p>We realized there was a lack of tools solely focused on managing software projects. We also noticed a correlation between teams’ emotional connection to their work and their output and outcome. Teams that are inspired, engaged and proud of their work end up creating better software. The tools we use daily are in a position to help us maintain this inspiration and excitement (as well as steal it away from us).</p><p>We were happy to see how much our vision has resonated with other engineers and designers. Since our announcement, we have had thousands of small and large companies sign up to our waitlist, and have heard across the board that teams are eager to upgrade to a solution like Linear.</p><p>Today, hundreds of companies are using Linear daily to build software. We are especially excited to support next-generation companies like <strong>Pitch, Render, Albert, Curology, Spoke, Compound</strong> and several new YC startups like <strong>Middesk</strong>, <strong>Catch</strong> and <strong>Visly</strong>. Many companies have mentioned that they want their teams to use the best tools available since they themselves want to build the best products for their respective markets.</p><h2>Our investors</h2><p>To help us scale with the demand for our product, we are excited to partner with <strong>Sequoia Capital (Stephanie Zhan)</strong> as our lead investor on our seed round. This funding brings with it the opportunity to learn from Sequoia’s long history and tribal knowledge supporting category-defining and enduring companies. We are also thrilled to have participation from <strong>Index Ventures (Sarah Cannon)</strong> who has backed many existing and upcoming next-generation tools.</p><p>In addition, many experienced operators and angel investors are participating in the round. These investors will also advise the company and they include <strong>Dylan Field</strong> (Founder and CEO, Figma), <strong>Emilie Choi</strong> (COO, Coinbase), <strong>Charlie Cheever</strong> (Co-Founder of Expo &amp; Quora), <strong>Gustaf Alströmer</strong> (Partner, Y Combinator), <strong>Tikhon Berstram</strong> (Co-Founder, Parse), <strong>Larry Gadea</strong> (CEO, Envoy), <strong>Jude Gomila</strong> (CEO, Golden), <strong>James Smith</strong> (CEO, Bugsnag), <strong>Fred Stevens-Smith</strong> (CEO, Rainforest), <strong>Bobby Goodlatte</strong>, <strong>Marc McCabe</strong>, <strong>Julia DeWahl, Dan Romero</strong> and others.</p><h2>The path forward</h2><p>We will continue to focus on creating the best possible issue tracking experience for our core users. Linear will remain a fast and powerful interface to your team’s work that gets out of the way, integrates well with their workflow and lets individuals focus on their work.</p><p>Secondly, we want to evolve industry practices. We believe next-generation companies should also use next-generation practices. We want to work with the most forward-looking companies in the field and evolve everyone’s practices around how software is designed and built. Linear will embody these best practices and help teams run their day-to-day coordination more efficiently, reduce wasteful meetings and bring all of their focus back to meaningful work.</p><p>To maintain the momentum (<strong>weekly</strong> <a href="https://linear.app/changelog"><strong>changelog</strong></a>) as we grow, we are expanding our founding team. We are looking for people who believe in the mission of building great software. As we see the remote and distributed work model becoming the new norm, we want to help build other companies as well as our own with this model. (<strong><a href="https://linear.app/readme">See our remote job openings</a>).</strong></p><p>Thank you for joining us on this journey. We deeply appreciate your support, and we will never take it for granted.</p><p><strong>If you want to try out Linear in your team,</strong> <a href="https://linear.app/"><strong>sign up for the waitlist</strong></a></p>]]></content:encoded>
        </item>
    </channel>
</rss>