<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Joseph Gefroh: Management and Operations]]></title><description><![CDATA[Learn everything I know about management, processes, and being a great operator.]]></description><link>https://blog.jgefroh.com/s/management-and-operations</link><image><url>https://substackcdn.com/image/fetch/$s_!sphd!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cef45a3-7420-4cba-95f3-46a3b5d34293_100x100.png</url><title>Joseph Gefroh: Management and Operations</title><link>https://blog.jgefroh.com/s/management-and-operations</link></image><generator>Substack</generator><lastBuildDate>Wed, 08 Apr 2026 13:19:21 GMT</lastBuildDate><atom:link href="https://blog.jgefroh.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Joseph Gefroh]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[jgefroh@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[jgefroh@substack.com]]></itunes:email><itunes:name><![CDATA[Joseph Gefroh]]></itunes:name></itunes:owner><itunes:author><![CDATA[Joseph Gefroh]]></itunes:author><googleplay:owner><![CDATA[jgefroh@substack.com]]></googleplay:owner><googleplay:email><![CDATA[jgefroh@substack.com]]></googleplay:email><googleplay:author><![CDATA[Joseph Gefroh]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[On organizational structures - The Core/Focus model to balance stability and innovation]]></title><description><![CDATA[Invest in the ability to innovate while supporting your core business.]]></description><link>https://blog.jgefroh.com/p/on-organizational-structures-the</link><guid isPermaLink="false">https://blog.jgefroh.com/p/on-organizational-structures-the</guid><dc:creator><![CDATA[Joseph Gefroh]]></dc:creator><pubDate>Sun, 12 Jan 2025 20:05:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TrC8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db7a398-2166-47cc-9c5e-a959dc9ce858_1354x370.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TrC8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db7a398-2166-47cc-9c5e-a959dc9ce858_1354x370.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TrC8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db7a398-2166-47cc-9c5e-a959dc9ce858_1354x370.png 424w, https://substackcdn.com/image/fetch/$s_!TrC8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db7a398-2166-47cc-9c5e-a959dc9ce858_1354x370.png 848w, https://substackcdn.com/image/fetch/$s_!TrC8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db7a398-2166-47cc-9c5e-a959dc9ce858_1354x370.png 1272w, https://substackcdn.com/image/fetch/$s_!TrC8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db7a398-2166-47cc-9c5e-a959dc9ce858_1354x370.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TrC8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db7a398-2166-47cc-9c5e-a959dc9ce858_1354x370.png" width="1354" height="370" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0db7a398-2166-47cc-9c5e-a959dc9ce858_1354x370.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:370,&quot;width&quot;:1354,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:822915,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TrC8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db7a398-2166-47cc-9c5e-a959dc9ce858_1354x370.png 424w, https://substackcdn.com/image/fetch/$s_!TrC8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db7a398-2166-47cc-9c5e-a959dc9ce858_1354x370.png 848w, https://substackcdn.com/image/fetch/$s_!TrC8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db7a398-2166-47cc-9c5e-a959dc9ce858_1354x370.png 1272w, https://substackcdn.com/image/fetch/$s_!TrC8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db7a398-2166-47cc-9c5e-a959dc9ce858_1354x370.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A big challenge I&#8217;ve experienced several times as successful startups scaled up was being able to do everything needed to keep the product running while still investing in high-impact, innovative new products.</p><p>Small startups often have an &#8220;everyone does everything&#8221; mentality, from the contributor up to the executive. People were conceptually interchangeable and could wear a lot of hats. Allocation often occurred at the granularity of an individual - specific people were assigned to projects and new areas, responsible for delivering it all.</p><p>As the number of focuses grew and the complexity of their interactions increased, it became harder and harder for the people involved to be effective. Breadth and depth far exceeded the original scope of the work, and it became too much for any one person to reasonably be effective. </p><p>Resource limitations were often the constraint of being able to both innovate and support, which made every decision a prioritization and allocation battle.</p><p>Conflict between Product and Engineering leaders increased, as obsession over time spent on ROI (Return on Investment) and how much to place on BAU (Business as Usual) flared up into full-blown arguments.</p><p>Product leaders, desperate for more progress, pulled from efforts that kept the lights on. Engineering leaders, desperate for stability, rejected new innovation projects to err on the side of safety. At its worst, this contentious relationship produced a lot of blaming, finger-pointing, and whiplash back and forth.  Sometimes, one of the parties succeeded entirely, resulting in the company becoming unstable and collapsing due to an over-focus on innovation, or stagnating and losing in the market due to an over-focus on stability.</p><p>To solve this, leaders often decided on extensive meetings, detailed demands for justification of any spend, and precise explanations they were heavily involved in, resulting in extremely slow prioritization and execution delays that further exasperated the issues.</p><h3>The pain is felt across the company</h3><p>As one can imagine, contributors felt this pain acutely. All you had to do was  ask any team for feedback, and you&#8217;d hear things like:</p><ul><li><p>&#8220;We&#8217;re doing too much&#8221;</p></li><li><p>&#8220;We don&#8217;t know what we own&#8221;</p></li><li><p>&#8220;There&#8217;s a lot of whiplash&#8221;</p></li><li><p>&#8220;Leadership doesn&#8217;t understand the thousands of tiny things needed&#8221;</p></li><li><p>&#8220;We&#8217;re wasting too much time on these tiny things&#8221;</p></li><li><p>&#8220;My work doesn&#8217;t matter&#8221;</p></li></ul><p>It&#8217;s painful for contributors to work effectively in an environment like this. </p><p>The fact is both Product and Engineering are right and wrong. You need a stable product so your users and customers keep using it, and you need new innovations so you can acquire new revenue from customers and users. It&#8217;s neither group&#8217;s fault.</p><p>The root cause of these issues stems from an organizational structure that isn&#8217;t aligned with the reality of the work. In situations like this, I&#8217;ve found a change to the organization structure that embraces the differences in the structure itself can align expectations with reality and achieve both desired outcomes.</p><div><hr></div><h1><strong>Core/Focus</strong></h1><p>The structure is simple. Instead of expecting that every pod will be involved in doing everything, segment the pods into two types of pods - <strong>Core</strong> and <strong>Focus</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XpPq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1184fdc-5aeb-4a4a-ad0d-b767b5943799_2570x744.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XpPq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1184fdc-5aeb-4a4a-ad0d-b767b5943799_2570x744.png 424w, https://substackcdn.com/image/fetch/$s_!XpPq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1184fdc-5aeb-4a4a-ad0d-b767b5943799_2570x744.png 848w, https://substackcdn.com/image/fetch/$s_!XpPq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1184fdc-5aeb-4a4a-ad0d-b767b5943799_2570x744.png 1272w, https://substackcdn.com/image/fetch/$s_!XpPq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1184fdc-5aeb-4a4a-ad0d-b767b5943799_2570x744.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XpPq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1184fdc-5aeb-4a4a-ad0d-b767b5943799_2570x744.png" width="2570" height="744" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1184fdc-5aeb-4a4a-ad0d-b767b5943799_2570x744.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:744,&quot;width&quot;:2570,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:143743,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XpPq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1184fdc-5aeb-4a4a-ad0d-b767b5943799_2570x744.png 424w, https://substackcdn.com/image/fetch/$s_!XpPq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1184fdc-5aeb-4a4a-ad0d-b767b5943799_2570x744.png 848w, https://substackcdn.com/image/fetch/$s_!XpPq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1184fdc-5aeb-4a4a-ad0d-b767b5943799_2570x744.png 1272w, https://substackcdn.com/image/fetch/$s_!XpPq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1184fdc-5aeb-4a4a-ad0d-b767b5943799_2570x744.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Core</strong></h2><p>The objective of Core pods are simple: keep the business running with stability.</p><p>They should have a predictable roadmap. The Core group should work in a manner where the execution and progress is highly visible - people in the organization should know what is needed, when it will be delivered by, and have solid delivery expectations.</p><p>This is the heartbeat by which other parts of the organization match their pace. Marketing can understand a release schedule. Sales can understand their commitments they can make. Support can achieve operational SLAs.</p><p>Incremental improvements can be roadmapped, planned, and executed. Known capacity can be used and planned for. Execution is predictable.</p><p>To succeed, the Core group needs the ability to say &#8220;no&#8221; and &#8220;when&#8221;. Emergencies can occur, but they need to be able to create the predictability necessary to execute well.</p><h2><strong>Focus</strong></h2><p>Focus teams, as the name implies, focus on a particular stream of work. Their job is simple: achieve the outcome they were tasked.</p><p>Focus can be on any number of things:</p><ul><li><p>Growth goals, such as to &#8220;improve user activation by 15%&#8221;</p></li><li><p>Project goals, such as &#8220;unify product listings across our products&#8221;</p></li><li><p>Problem goals, such as &#8220;our documentation is terrible - how do we improve it&#8220;</p></li><li><p>Domain goals, such as &#8220;own anti-fraud capabilities&#8221;</p></li><li><p>or other properly scoped area.</p></li></ul><p>The important part of the team is that they get to focus on that particular area or outcome for a set period of time - whether that&#8217;s 6 weeks or 6 months. At the end of that time period, an evaluation can occur as to whether they achieved their goal, whether it&#8217;s worth continuing to invest in, or whether it&#8217;s time to move on to something else that&#8217;s a higher priority.</p><p>Focus teams should have the autonomy to make decisions that lead to the desired outcome, working closely with an appropriate but minimal set of stakeholders. </p><p>They shouldn&#8217;t have to run decisions by 5 other teams, or have to justify every decision they make to external stakeholders. They may do so <em>internally</em> - that is, evaluate the set of items that might lead to their goal and prioritize it, but they shouldn&#8217;t need to do so <em>externally</em>. The investment has already been made, there should be no further justification needed. </p><p>Focus teams also need the ability to focus. Yes, that means they should be able to ignore things not within their focus they were given. Whether that&#8217;s other urgent/important projects, bug fixes in unrelated parts of the product, or even developer UX. Their primary goal should be their main effort they have been assigned.</p><h2><strong>What does this enable?</strong></h2><p>This structure enables aligned expectations from the executive and management team down to the individual contributors. Team members on the focus pods know that they won&#8217;t be distracted by 10 other streams of work, and should focus on solving their key problem. Team members of the Core pods know that they won&#8217;t be dinged for not finding needle-moving opportunities, and can take satisfaction from a job efficiently completed and a problem avoided.</p><p>Organizationally, it also enables the business to execute at scale. Businesses have a clear mechanism for entering a new market or launching a new product or focusing on a new business initiative - spinning up a focus pod.</p><div><hr></div><h1><strong>Why does the structure work?</strong></h1><p>To first understand why it works, you first need to understand the mental model for how to model the kind of work being done and what&#8217;s required for each type of work.</p><p>Just remember: <em>all models are wrong, some are useful.</em></p><h2><strong>Understanding the different kinds of work</strong></h2><p>In an organization that develops, operates, and sells a product, you see a variety of different kinds of work as the business operates, comes up with new ideas, and the system evolves.</p><p>The kinds of work you might encounter can be bucketed into the following groups:</p><ul><li><p>Innovation</p></li><li><p>Growth</p></li><li><p>Improvement</p></li><li><p>Expansion</p></li><li><p>Fulfillment</p></li><li><p>Support</p></li></ul><p><strong>Innovation</strong> </p><p>Innovation relates to doing things your organization hasn&#8217;t done before. Whether that&#8217;s entering a new market, building a brand new product, or standing up a new program - it requires focused efforts on items with little predictability. While you may ultimately desire to achieve a specific objective (eg. increasing revenues, building moats), the cause and effect can&#8217;t be predicted because it&#8217;s all new to the organization, nor can the actual specific steps be planned for with precision ahead of time.</p><p><strong>Growth</strong></p><p>This is work relates to pushing forward, or &#8220;growing&#8221; a particular outcome, usually measurable via a KPI or OKR. You might want to increase your customer retention rate by 15%, or increase a user activation funnel&#8217;s conversion rate by 10%. These are important achievements you want your organization to reach.</p><p><strong>Improvement</strong></p><p>If you have existing features, you&#8217;ve probably received or identified improvements you could make to them to make them all that much better. Whether that&#8217;s adding a new filter for a list, or allowing messages to be delivered by SMS as well as email. These are things that you received feedback on that you&#8217;ve identified an increment for that would provide some user value.</p><p><strong>Expansion</strong></p><p>A lot of product innovations can rise from seemingly unrelated technical improvements. A new way to model a user account can result in the ability to support team-based capabilities. A way to easily and quickly track aggregate data over time might be leveraged to create real-time leaderboards. This is the work of expansion - creating or expanding technical capabilities and increasing the real-estate upon which innovation can occur.</p><p><strong>Fulfillment</strong></p><p>Fulfillment is simple. There&#8217;s something that needs to be done by a set time. It might be mandated by contract to a customer, or regulator requirement. In any case - the work is known, the deadline is known, and it has to be slotted in an delivered precisely. The request has to be fulfilled for it to be considered successful.</p><p><strong>Support</strong></p><p>Support is the work that keeps the rest of the company running smoothly. Including:</p><ul><li><p>defect reports</p></li><li><p>investigations or tasks for a support request</p></li><li><p>data analysis requested by another team</p></li><li><p>answering technical questions from customers or other teams</p></li></ul><p>These different kinds of work are ever-present in a variety of different mixes in most product organizations.</p><h2>Understanding differences in needs</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!azXI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b2adee-0c5e-43a4-8bde-9a85e9477355_1874x1134.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!azXI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b2adee-0c5e-43a4-8bde-9a85e9477355_1874x1134.png 424w, https://substackcdn.com/image/fetch/$s_!azXI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b2adee-0c5e-43a4-8bde-9a85e9477355_1874x1134.png 848w, https://substackcdn.com/image/fetch/$s_!azXI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b2adee-0c5e-43a4-8bde-9a85e9477355_1874x1134.png 1272w, https://substackcdn.com/image/fetch/$s_!azXI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b2adee-0c5e-43a4-8bde-9a85e9477355_1874x1134.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!azXI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b2adee-0c5e-43a4-8bde-9a85e9477355_1874x1134.png" width="1456" height="881" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18b2adee-0c5e-43a4-8bde-9a85e9477355_1874x1134.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:881,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:224252,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!azXI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b2adee-0c5e-43a4-8bde-9a85e9477355_1874x1134.png 424w, https://substackcdn.com/image/fetch/$s_!azXI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b2adee-0c5e-43a4-8bde-9a85e9477355_1874x1134.png 848w, https://substackcdn.com/image/fetch/$s_!azXI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b2adee-0c5e-43a4-8bde-9a85e9477355_1874x1134.png 1272w, https://substackcdn.com/image/fetch/$s_!azXI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b2adee-0c5e-43a4-8bde-9a85e9477355_1874x1134.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Different kinds of work have different needs.</figcaption></figure></div><p>It turns out different kinds of work have different needs for the people engaged in the work to be maximally effective. In fact, maximally effective might mean something completely different depending on the kind of work.</p><ul><li><p>Autonomy</p></li><li><p>Context switching</p></li><li><p>Predictability</p></li><li><p>Risk</p></li><li><p>Singular impact</p></li></ul><h3><strong>Core needs</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qCyp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82831f3c-8591-4fa6-a847-3be5991d934e_1562x782.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qCyp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82831f3c-8591-4fa6-a847-3be5991d934e_1562x782.png 424w, https://substackcdn.com/image/fetch/$s_!qCyp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82831f3c-8591-4fa6-a847-3be5991d934e_1562x782.png 848w, https://substackcdn.com/image/fetch/$s_!qCyp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82831f3c-8591-4fa6-a847-3be5991d934e_1562x782.png 1272w, https://substackcdn.com/image/fetch/$s_!qCyp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82831f3c-8591-4fa6-a847-3be5991d934e_1562x782.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qCyp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82831f3c-8591-4fa6-a847-3be5991d934e_1562x782.png" width="1456" height="729" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82831f3c-8591-4fa6-a847-3be5991d934e_1562x782.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:729,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:117897,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qCyp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82831f3c-8591-4fa6-a847-3be5991d934e_1562x782.png 424w, https://substackcdn.com/image/fetch/$s_!qCyp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82831f3c-8591-4fa6-a847-3be5991d934e_1562x782.png 848w, https://substackcdn.com/image/fetch/$s_!qCyp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82831f3c-8591-4fa6-a847-3be5991d934e_1562x782.png 1272w, https://substackcdn.com/image/fetch/$s_!qCyp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82831f3c-8591-4fa6-a847-3be5991d934e_1562x782.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Core pods achieve a balanced roadmap and create predictability and efficiency through planned, intentional steps.</figcaption></figure></div><p>On one end of the spectrum is the work of <strong>Support and Fulfillment</strong>. These are often known solutions or known problems that fit within the Iron Triangle - a combination of scope, time, and cost. These require the team to have a predictable execution tempo so that capacity can be allotted and schedule deviations can be noted early and addressed. Teams may fill quarters or years with this pre-planned work, slotting in new projects here and there, and allocating capacity to fulfilling support tickets or other minor items. </p><p>No particular work here is going to be a surprising needle mover, although if it stops operating with extreme efficiency everyone from customers to the executive team will hear about it. This is the realm of scheduled work, Gantt charts, project management, utilization, and efficiency.</p><h3><strong>Focus needs</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XpH1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d5b28e-aa77-418f-88db-9623fad4da81_1572x774.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XpH1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d5b28e-aa77-418f-88db-9623fad4da81_1572x774.png 424w, https://substackcdn.com/image/fetch/$s_!XpH1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d5b28e-aa77-418f-88db-9623fad4da81_1572x774.png 848w, https://substackcdn.com/image/fetch/$s_!XpH1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d5b28e-aa77-418f-88db-9623fad4da81_1572x774.png 1272w, https://substackcdn.com/image/fetch/$s_!XpH1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d5b28e-aa77-418f-88db-9623fad4da81_1572x774.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XpH1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d5b28e-aa77-418f-88db-9623fad4da81_1572x774.png" width="1456" height="717" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/81d5b28e-aa77-418f-88db-9623fad4da81_1572x774.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:717,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:119979,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XpH1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d5b28e-aa77-418f-88db-9623fad4da81_1572x774.png 424w, https://substackcdn.com/image/fetch/$s_!XpH1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d5b28e-aa77-418f-88db-9623fad4da81_1572x774.png 848w, https://substackcdn.com/image/fetch/$s_!XpH1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d5b28e-aa77-418f-88db-9623fad4da81_1572x774.png 1272w, https://substackcdn.com/image/fetch/$s_!XpH1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d5b28e-aa77-418f-88db-9623fad4da81_1572x774.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Focus pods achieve through laser focus on their problem or goal, maximizing effectiveness at the potential expense of efficiency.</figcaption></figure></div><p>On the opposite end of the spectrum, the work of <strong>Innovation and Growth</strong> requires freedom and autonomy by the team to explore unknown problems and novel solutions. It requires the ability to focus, for extensive lengths of time, with little ROI. Risk-adjusted paths forward may require validation of assumptions or experiments, but overall - the path forward is unknown. </p><p>A team that succeeds in Innovation can have a massive singular impact through their work - like inventing a new product or allowing an organization to shift up-market. Progress is unpredictable, and as a result the team is unlikely to be working in an environment where predictions and estimates can be made with any reasonable accuracy. You rarely see Gantt charts detailing ahead of time when inventions will be invented. Teams here need to be effective, but they are unlikely to be efficient.</p><p>That is - the pod may not be fully utilized from an execution perspective. What might be seen as a team &#8220;twiddling their thumbs&#8221; is a team having space on ensuring the things they work on are the right things at the right time in the right way.</p><h3>Different kinds of work need different skills and mindsets</h3><p>There&#8217;s enough differences in the spectrum of Innovation vs. Support to reveal a fundamental truth: they require very different skillsets and mindsets.</p><p>The skills needed to create extremely predictability, operationalization, and meet SLAs are things like organization, process-orientation, quality assurance, and attention-to-detail. The skills needed to create extreme innovation are things like product intuition, experimentation, responsiveness to user feedback. </p><p>They are different skills, and some can be harmful when applied to projects on the opposite end of the spectrum. Imagine attempting to create a precise and accurate Gantt chart that predicts when the results of an experiment will be achieved and whether the goal was achieved before the experiment is even run - if you could, you wouldn&#8217;t need to run the experiment!</p><h2>The Core/Focus structure works because it better aligns expectations with reality</h2><p>By acknowledging the different needs, we&#8217;re able to structure the organization in a way that makes it easier to align expectations for contributors and, more importantly, executives.</p><h3>Contributor expectations</h3><p>Contributors who prefer predictable, planned work will likely prefer working on Core  pods. Contributors that prefer robust cross-functional interaction and dynamic problem solving will likely prefer Focus. There&#8217;s space for both.</p><h3>Executive expectations</h3><p>Executives should not expect teams operating in Core to suddenly come up with a meaningful improvement to a revenue KPI or come up with a new business line. It should be a welcome surprise if they do, but it should not be relied on, nor planned for, nor should those Core team members be held to producing such results. Executives should instead rely on the Core teams to keep the company operating as it has, smoothly and efficiently, and make space for any emergencies that occur. </p><p>Executives should not expect teams in Focus to be able to hop on to different areas every other week and still produce results. They shouldn&#8217;t expect Focus teams to be able to have schedule predictability, or to know when an innovation will occur. This is not the realm where teams should be held to estimates, or to create a six month roadmap. Teams should be allowed to freely experiment without an overly involved executive demanding justification at every step.</p><p>That&#8217;s not to say each group can&#8217;t do something outside of its area of the work type spectrum. In the event that a Fulfillment project does come to a Focus pod, or a Core pod suddenly needs to pivot on an emergency goal, executives should recognize that they might be able to do it, but they won&#8217;t be fully happy.</p><p>A Focus pod might be able to complete a fulfillment project, but the predictability and precision at which they do it may suffer. This is because fulfillment requires an entirely different set of skills than innovation or growth. They may not be experienced in breaking down work to such a granular detail ahead of time that delivery can be predicted down to the hour. Even if the work gets done, executives should not expect that it will be done to the same level of predictability, quality, or efficiency Core pod could achieve.</p><p>Likewise, a Core pod might be able to develop a brand new product, but the speed and scope may be less than desired. This is because innovation requires an entirely different set of skills than support or fulfillment. They may not be experienced in not worrying about schedule or taking risks with unknown effects. Even if the work gets done, executives should not expect that it will be done to the same level of speed, impact, or scope a Focus pod could achieve.</p><h3>Let birds fly and fish swim</h3><p>Fish should be judged by their ability to swim, and birds by their ability to fly. A fish not being able to fly isn&#8217;t a deficiency on the fish, nor is a bird unable to swim some issue with the bird. </p><p>This structure ultimately works because it forces an acknowledgement of the truth, that a person can&#8217;t do everything. The cost of having a person or pod be able to do everything is astronomically high, and also unlikely as the company increases focuses that require more and more depth to succeed in. </p><p>Scale-up companies have a hard time recognizing that, having come from roots where heroics saved the day, and even a single person could keep the entire system and business in their head. </p><p>The structure forces expectations to be aligned with reality.</p><div><hr></div><h1><strong>Implementing the Core/Focus structure</strong></h1><h2>Figure out if you have the problem</h2><p>The first step is to figure out if your organization even has the problem this structure addresses. A good solution to the wrong problem can be more harmful than the problem itself.</p><p>A post on the internet can&#8217;t tell you whether something will work for your organization or not. You&#8217;ll have to apply the context on your own. Consider the following signals it might not be right for you when thinking through the situation you&#8217;re in.</p><p><strong>Is your organization (or unit) too small? </strong>If you only have 10-15 engineers within your company or focused business unit , you don&#8217;t really need a structure like this. 10-15 engineers can organize as 2-4 teams, and it&#8217;s unlikely the benefits of strict segmentation will outweigh the costs of inflexibility. You don&#8217;t want an unnecessary division of labor if the benefits aren&#8217;t there.</p><p>It starts to show its benefits at the 25 - 50 engineer range, where the scope of ambition, resourcing availability, and cognitive overhead start to diverge.</p><p><strong>Is your organization too large? </strong>If you have 100+ engineers, your organization already likely organizes in some fashion related to domains or other topology. This inherently breaks down the organization into focused enough areas where this structure may not be needed. It may be helpful for sub-parts of that organization, however - the beauty is in the potentially infinite granularity.</p><p><strong>Is your organization already fairly focused? </strong>First of all, congratulations. If your organization has been disciplined enough to not attempt to expand into different focus areas, while still succeeding, you probably don&#8217;t need this organizational structure. This structure works best to pragmatically execute when the organization is attempting to do things that are traditionally felt as &#8220;too much&#8221;.</p><p><strong>Is your organization a project organization? </strong>Project organizations that are primarily agency-style builders rather than stewards probably don&#8217;t need this structure. Your job is to deliver a project for the client - how it gets maintained is probably not your job. This structure is intended for organizations that have a self-developed product that they shepherd over time and are attempting to balance between keeping it stable and innovating into new areas.</p><p><strong>Is your organization already effectively handling everything? </strong>If you have an efficient prioritization process, effective product-engineering collaboration, a reasonable processing of support and operations tasks, and have achieved a good balance between innovation and operation, you don&#8217;t need this structure. You should probably keep doing what you&#8217;re doing with the process you have set up - if it ain&#8217;t broke, don&#8217;t fix it.</p><p>At the end of the day, make sure your context matches. This structure works well in an startup growing from a small 10-person, do-everything team to a growing but lean business that needs to provide stability guarantees while simultaneously expanding into innovative areas. If this doesn&#8217;t describe your organization, be judicious.</p><h2>Experiment in a small dose</h2><p>Dramatically changing an entire organization structure is a high risk, winner-takes-all approach. It might be fast, but it&#8217;s extremely disruptive and if anything goes wrong you&#8217;ll be the first to get the boot.</p><p>Instead, start small and validate the solution works within your unique context. You, as the leader, should act as an umbrella to the teams to create the space for them to perform this experiment.</p><h3><strong>Start with Focus</strong></h3><p>First, start with a single Focus team. Remove all other distractions and give them the ability to focus. Give them guidance and empower them to truly say &#8220;no&#8221; on everything. Task them with a problem and set a 4-week time period in which the team can cook. At the end of the four weeks, check back, and see what happened and whether it worked? </p><p>What are signs it is working?</p><ul><li><p>The pod has a healthy set of changes released that might address the problem.</p></li><li><p>The pod understands, measures, and monitors the impact of those changes.</p></li><li><p>The pod works together on identifying problems, defining solutions, and performing experiments.</p></li><li><p>The team made a positive impact on the problem.</p></li></ul><p>If it doesn&#8217;t work, provide guidance and ensure you&#8217;ve set up the environment for success. Do you have the right mindset? Did they have the right clarity? Did they have the right skills?</p><h3><strong>Then, try a Core team.</strong></h3><p>Second, assign a team to work as if they were a Core team. </p><p>It&#8217;s more likely than not that your Pod is already running in some variant of a Core where a team&#8217;s roadmap has to be balanced across many different things. </p><p>Take one of those teams and set expectations that they aren&#8217;t expected to move the needle on a KPI, and have them own their roadmap and schedule for the next 6-9 weeks. </p><p>Their only outcome is to achieve balance and predictability and meet their commitment. They can ease off the throttle and not have to pivot to address things reactively. They don&#8217;t have to worry about trying to push forward a metric or KPI outcome while balancing stability, intake, and operational support.</p><p>Their one job would be to set a roadmap and meet it.</p><p><strong>Afterwards, evaluate: did either work, did neither work, did one work but not the other?</strong> </p><h2><strong>Scale the experiment</strong></h2><p>If you&#8217;re seeing positive results, expand the concept team by team.</p><p>Over time, you&#8217;ll formalize the Core/Focus split internally, and your organization will be happier for it. If it&#8217;s working, this ultimately means you have organizational buy-in and don&#8217;t really need to &#8220;sell&#8221; it.</p><p><strong>Watch out for the messy middle</strong></p><p>You may be left with a couple of teams that seem to be more &#8220;miscellaneous&#8221; in nature, or are still acting as something not quite Core or Focus. This is the messy middle of the transition, and you should do your best to figure out how to adjust the structure, intake, and prioritization to better align the work structure and the team. </p><p>Rotation approaches help (eg. one team focuses on a particular area, then switches off to act more like Core) in situations where you can&#8217;t quite say &#8220;no&#8221; to the work. </p><p>Over time, as long as you&#8217;re tracking future commitments and aligning them towards Focus or Core availability / capacity rather than looking at them as interchangeable, the burden should reduce.</p><h2>Obtain executive buy-in</h2><p>You can use this structure without buy-in from other executives, but it becomes much easier if the whole executive team is aligned with the approach - you spend less time putting your own neck on the line and arguing, and more time being effective.</p><p>Every executive team is different, but you should generally be prepared with data and narratives. You should have at your fingertips:</p><ul><li><p>The past 1-2 years of development and delivery performance, to demonstrate the impact on performance and results</p><ul><li><p>Suggested metrics: deployment frequency, PR throughput, list of feature and product releases, user and customer sentiment, outcomes achieved, success or failure of initiatives, etc.</p></li></ul></li><li><p>The past 1-2 years of investment allocation, broken out by team and team size, to demonstrate the lack of focus</p><ul><li><p>Suggested metrics: # of projects per team per month, average and median lead times, issue counts, issue type breakdowns</p></li></ul></li><li><p>Qualitative feedback from the team</p></li></ul><p>What&#8217;s your narrative? It really depends on what your metrics say, but if you&#8217;re even reading this, you&#8217;ll like have encountered:</p><ul><li><p>Too many different simultaneous pursuits negatively impacting effectiveness, success outcomes, and morale</p></li><li><p>Increased defect rates, or a litany of avoidable simple &#8220;unforced errors&#8221; that are par for the course on a distracted team</p></li><li><p>A lack of predictability resulting in stability issues or operational misses</p></li><li><p>A lack of effectiveness resulting in slower delivery or non-impactful busy-work</p></li><li><p>A lack of iteration leading to incomplete projects, loss of responsiveness to user feedback, and breadth of product scope that lacks depth and cohesion.</p></li></ul><p>If it turns out you don&#8217;t have data that aligns with the issues above - pause. Truly think about whether you are experiencing this problem and that it warrants a solution like this.</p><p><strong>Whatever data you have, show it visually.</strong> </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lZqd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5643830c-4b22-4303-9a9b-9fd7644d7b17_678x666.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lZqd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5643830c-4b22-4303-9a9b-9fd7644d7b17_678x666.png 424w, https://substackcdn.com/image/fetch/$s_!lZqd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5643830c-4b22-4303-9a9b-9fd7644d7b17_678x666.png 848w, https://substackcdn.com/image/fetch/$s_!lZqd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5643830c-4b22-4303-9a9b-9fd7644d7b17_678x666.png 1272w, https://substackcdn.com/image/fetch/$s_!lZqd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5643830c-4b22-4303-9a9b-9fd7644d7b17_678x666.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lZqd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5643830c-4b22-4303-9a9b-9fd7644d7b17_678x666.png" width="394" height="387.0265486725664" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5643830c-4b22-4303-9a9b-9fd7644d7b17_678x666.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:666,&quot;width&quot;:678,&quot;resizeWidth&quot;:394,&quot;bytes&quot;:573486,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lZqd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5643830c-4b22-4303-9a9b-9fd7644d7b17_678x666.png 424w, https://substackcdn.com/image/fetch/$s_!lZqd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5643830c-4b22-4303-9a9b-9fd7644d7b17_678x666.png 848w, https://substackcdn.com/image/fetch/$s_!lZqd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5643830c-4b22-4303-9a9b-9fd7644d7b17_678x666.png 1272w, https://substackcdn.com/image/fetch/$s_!lZqd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5643830c-4b22-4303-9a9b-9fd7644d7b17_678x666.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It&#8217;s one thing to say &#8220;we worked on 200 projects this year&#8221;. It&#8217;s another thing entirely to show a pie chart with 200 slices, and a headline saying that only six days were spent on average on any given project. Can a team realistically be expected to create amazing, innovative products if they only spend 6 days on any one product?</p><p><strong>Aim for these two points</strong></p><p>Your two key buy-in points you want to achieve:</p><ul><li><p>Acknowledgement from executives that there is too much being done at once</p><ul><li><p>This means that the executives become more disciplined in not committing to major new areas without considering resourcing.</p></li></ul></li><li><p>Acknowledgement from executives to respect the resource split</p><ul><li><p>This means that if a new initiative begins, a team must be available to work on it instead of expecting a team already working on another thing to work on it simultaneously.</p></li></ul></li></ul><p>Once you have it, it&#8217;s all on you to set the Core/Focus structure up for success.</p><div><hr></div><h1>Set it up for success</h1><h2>Think about who leads Core</h2><p>For Core, you want leaders who can keep the trains running on time. </p><p>Planning, projection, orchestration, scheduling and organizational skills are key. You want detail-focused predictability creators. Capable of prioritizing and sequencing work in a way that results in the most efficient and stable execution.</p><p>The leader should excel at communication to other internal stakeholders. They' are the ones that will set the tempo and keep the organization in the loop, providing stability. They&#8217;ll need to set a sustainable, steady, somewhat slow pace.</p><h2>Think about who leads Focus</h2><p>For Focus, you want leaders who have high imagination and the ability to iterate to get to their desired goal. </p><p>These are your problem solvers. They shouldn&#8217;t be burdened by bureaucracy, or bothered by a desire to achieve perfect. For them, good enough should be good enough. They are the ones that can make highly effective trade-off decisions, knowing what to keep and what to cut.</p><p>The Focus teams work best filled with excellent collaborators who prefer working in real-time to solve the problem together.</p><h2>Try to keep it stable</h2><p>The entire premise of this structure is teams work best when they can be stable. However, sometimes you may need to move teams or people from one group or another to support major business changes.</p><p>This happens, but try to do so sparingly. As much as possible, let Focus teams focus and be effective, and let Core teams stabilize and create predictability.</p><h2>Don&#8217;t be overly rigid</h2><p>Sometimes your Core pods will find time and <em>desire</em> to work on something a bit more innovative or experimental. Other times, your Focus pods will find an operational irritation that they want to fix.</p><p>That&#8217;s OK - as long as these things don&#8217;t <em>distract them</em> and are, as much as possible, voluntary from the Pod&#8217;s perspective. The structure is not intended to be a prison for the contributors, but a tool for expectation management.</p><div><hr></div><h1>Working with executives using this structure</h1><h2><strong>Acknowledge it requires executive discipline</strong></h2><div class="paywall-jump" data-component-name="PaywallToDOM"></div><p>Executives can easily cross boundaries and create exceptions that ultimately dismantle or render this structure ineffective. It&#8217;s important to remind people that the structure only works if the constraints of the structure regarding expectations are respected.</p><h2><strong>Align on an allocation approach</strong></h2><p>I&#8217;ve found it best when executives make their investments based on allocations. How much money and time they want to invest in solving a problem. </p><p>Executive interests vary, from pushing forward a metric, to creating a specific feature, to solving a particular problem. It&#8217;s often difficult to get <em>everyone</em> on an executive team to think at the level of a goal or problem. If you can do so, congratulations - you are a better executive whisperer than I. </p><p>I personally prefer an approach that allows for a bit more pragmatism to support a transition from specifying particular features to thinking about more broader investment categories.</p><p>Try not to get tied into specific projects - you can set a limit if you prefer. Instead, guide folks </p><p>towards &#8220;problem areas&#8221; or &#8220;goals" they want to achieve to secure autonomy for your teams.</p><h2><strong>Visualize capacity and focus with boxes</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!REg6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eec966d-4fba-4c65-9f70-12665f9a0eb9_2968x352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!REg6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eec966d-4fba-4c65-9f70-12665f9a0eb9_2968x352.png 424w, https://substackcdn.com/image/fetch/$s_!REg6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eec966d-4fba-4c65-9f70-12665f9a0eb9_2968x352.png 848w, https://substackcdn.com/image/fetch/$s_!REg6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eec966d-4fba-4c65-9f70-12665f9a0eb9_2968x352.png 1272w, https://substackcdn.com/image/fetch/$s_!REg6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eec966d-4fba-4c65-9f70-12665f9a0eb9_2968x352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!REg6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eec966d-4fba-4c65-9f70-12665f9a0eb9_2968x352.png" width="1456" height="173" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9eec966d-4fba-4c65-9f70-12665f9a0eb9_2968x352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:173,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:120457,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!REg6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eec966d-4fba-4c65-9f70-12665f9a0eb9_2968x352.png 424w, https://substackcdn.com/image/fetch/$s_!REg6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eec966d-4fba-4c65-9f70-12665f9a0eb9_2968x352.png 848w, https://substackcdn.com/image/fetch/$s_!REg6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eec966d-4fba-4c65-9f70-12665f9a0eb9_2968x352.png 1272w, https://substackcdn.com/image/fetch/$s_!REg6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eec966d-4fba-4c65-9f70-12665f9a0eb9_2968x352.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>I prefer a simple &#8220;box&#8221; approach - it&#8217;s both easy to understand and helps illustrate the availability of chips. It aligns well with the Core/Focus structure.</p><p>When a new executive &#8220;thing&#8221; needs to be done, it helps to have everyone look at the box and ask &#8220;when and where does it fit?&#8221;</p><p>If a box already has an entry in it, the following conversation is then clear: &#8220;are we willing to drop this thing we were already going to do?&#8221;.</p><p>If there are no boxes left - congratulations, you are 100% allocated. Unless new capacity is built, or we can tolerate lower delivery and capability by shifting people around, the items cannot be worked on by the organization according to its current state and roadmap. It&#8217;s as clear as day.</p><p>You&#8217;ll have to guide people in the conversation - push back on attempts to assign specific <em>individuals</em> to projects (development is a team sport). Guide people against the ever tempting allure of having a Core pod do it. </p><p>Remember: you&#8217;re the first line of defense against the structure being eroded.</p><h2><strong>Pro-actively report results</strong></h2><p>You can&#8217;t just create a major structure change, and then completely forget it exists. </p><p>Organizational change management requires reporting of results, and regular evaluation of whether the structure and process are still suitable and working as intended. </p><p>Pro-active provide reports of trends in the areas the team cares about - effectiveness, efficiency, impact, morale. The metrics you shared to justify the structure change should also be tracked after it&#8217;s been implemented. A cadence of once a quarter can be a good start.</p><div><hr></div><h1>Parting thoughts</h1><p>Startups have to both survive and thrive, while growing multiplicatively. It often means the structure needs to change to support the new phase of the business. Ensuring that expectations and capability are aligned from the contributor up to the executive can help ensure continued effectiveness and achieve organizational balance in stability and innovation.</p><p>Be judicious. If this structure works for you - excellent! If not, don&#8217;t be afraid to throw it out and try something else that better fits your context.</p>]]></content:encoded></item><item><title><![CDATA[On hiring - A-players and the folly of the ideal candidate]]></title><description><![CDATA[If you're at a startup delaying hiring looking for perfect, you're causing your company unnecessary harm.]]></description><link>https://blog.jgefroh.com/p/on-hiring-a-players-and-the-folly</link><guid isPermaLink="false">https://blog.jgefroh.com/p/on-hiring-a-players-and-the-folly</guid><dc:creator><![CDATA[Joseph Gefroh]]></dc:creator><pubDate>Mon, 26 Feb 2024 04:35:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Z5OA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02e14-011e-4a0f-affe-7b07c22cbb9a_1448x484.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z5OA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02e14-011e-4a0f-affe-7b07c22cbb9a_1448x484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z5OA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02e14-011e-4a0f-affe-7b07c22cbb9a_1448x484.png 424w, https://substackcdn.com/image/fetch/$s_!Z5OA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02e14-011e-4a0f-affe-7b07c22cbb9a_1448x484.png 848w, https://substackcdn.com/image/fetch/$s_!Z5OA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02e14-011e-4a0f-affe-7b07c22cbb9a_1448x484.png 1272w, https://substackcdn.com/image/fetch/$s_!Z5OA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02e14-011e-4a0f-affe-7b07c22cbb9a_1448x484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z5OA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02e14-011e-4a0f-affe-7b07c22cbb9a_1448x484.png" width="1448" height="484" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96b02e14-011e-4a0f-affe-7b07c22cbb9a_1448x484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:484,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1468629,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Z5OA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02e14-011e-4a0f-affe-7b07c22cbb9a_1448x484.png 424w, https://substackcdn.com/image/fetch/$s_!Z5OA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02e14-011e-4a0f-affe-7b07c22cbb9a_1448x484.png 848w, https://substackcdn.com/image/fetch/$s_!Z5OA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02e14-011e-4a0f-affe-7b07c22cbb9a_1448x484.png 1272w, https://substackcdn.com/image/fetch/$s_!Z5OA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02e14-011e-4a0f-affe-7b07c22cbb9a_1448x484.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Every startup leader I&#8217;ve ever advised or worked with has always wanted to hire the best. </p><p>They wanted an ideal candidate that can do everything and anything. Experts in the domain, the technology, the process, the company stage, and a representative of all of its values. They wanted someone who could hop into any challenge, context, or circumstance and absolutely crush it with little to no support or course-correction.</p><p>To support this, they would define a hiring strategy around this ideal. They&#8217;d issues directives and make statements like:</p><ul><li><p>&#8220;Hire only the best.&#8221;</p></li><li><p>&#8220;Hire only people we are all extremely excited about.&#8221;</p></li><li><p>&#8220;Hire excellent people and get out of their way.&#8221;</p></li><li><p>&#8220;Hire without compromise.&#8221;</p></li><li><p>&#8220;Hire the cream of the crop.&#8221;</p></li><li><p><em><strong>&#8220;Hire A-players.&#8221;</strong></em></p></li></ul><p><strong>A-players</strong>. Whenever I asked these leaers to describe their A-players, what they really described was their perfect candidate - the everything for everyone, all at once. No flaws. No weaknesses. All strength. Pure, perfect fit. They wanted the &#8220;purple squirrel&#8221; or &#8220;unicorn&#8221; of candidates. In most cases, at a discount, too.</p><p>Intentionally or not, this drive for perfect forced a hiring process where candidates had to meet two near-impossible criteria:</p><ul><li><p><strong>These candidates had to be great at everything. </strong>Any problem the company has, any situation the team is in, any obstacle presented - the A-player is expected to be able to already have the knowledge and the experience, be able to speak to it, and perform with excellence and achieve amazing outcomes. <br><br>If they can&#8217;t, they by definition aren&#8217;t an A-player, and should be rejected. Multiple rounds of interviews from a cross-functional group had to be done to assess their skills comprehensively to these exacting standards.</p></li><li><p><strong>These candidates had to have no weaknesses. </strong>Any red flag or yellow flag during the hiring process was a reason to reject the candidate. The best of the best by definition could not have any compromises. <br><br>Therefore, it had to be a unanimous decision to hire by the committee.</p></li></ul><p>In short - the candidate has to be <em>perfect.</em> </p><p>This single expectation has caused many startups to suffer, unable to find people they needed to deliver their product or achieve their outcomes. People got frustrated at extended hiring with no movement, missed opportunities as a result of a lack of resourcing, and the feeling of getting stretched thinner and thinner. It was an insidious path to burnout and churn. Most of the time it didn&#8217;t result in hiring A-players - just people who could talk like them.</p><p>All because of the desire to hire perfect A-players.</p><div><hr></div><h3><strong>Hiring for perfect</strong></h3><p>Let&#8217;s suppose that there is a person out there that meet the leader&#8217;s expectation of perfection and they can seemingly can do it all. </p><p><em>What then?</em></p><p>Think about it just from the lens of a candidate that is truly exceptional in every way:</p><ul><li><p><strong>They can get any compensation they want.</strong> Why would they join your startup? Are you offering far-above market compensation to attract them? Is there some ridiculously high chance of a major liquidity event? Are you going to give life-changing amounts of equity or salary? If you&#8217;re early-stage, probably not.</p></li><li><p><strong>They can join any kind of company they want.</strong> Is your company doing interesting, exciting, bleeding edge things? Are you on the cutting edge of the latest and the greatest? Are you solving some intractable problem? Most products are CRUD apps, and aren&#8217;t going to usher in the next global paradigm.</p></li><li><p><strong>They can join any culture they want.</strong> Are you going to give them the autonomy and resources to do what they want to do? Do you have amazing, industry-leading people already that they want to work with? Chances are slim.</p></li><li><p><strong>They can work towards any purpose they want.</strong> Is your mission and culture outstanding beyond any other company? Is your company branding something they want to see on their resume? Are you saving lives, or doing something that gives meaning and intent?</p></li></ul><p><strong>Every negative answer to these questions increases the time it takes to hire.</strong> Why would they join <em>you</em>r company? What gives your startup the competitive edge in their hiring relative to other companies? </p><p>That&#8217;s not even factoring whether these folks are in your network, the precise timing of hiring these candidates required since they are rarely between jobs, or the question of whether your company can even properly assess their perfect skillsets in the first place.</p><p><strong>I&#8217;m not saying it&#8217;s impossible to find amazing, talented perfect candidates.</strong> It&#8217;s just that the deck is stacked against you. If hiring these folks is going to be the foundation of your hiring strategy, at minimum you&#8217;re greatly extending the time it takes to hire - often by a factor 5x to 10x. A position you could have hired in a month or two might take a year to find. </p><p>If you&#8217;re hiring at a startup, you likely don&#8217;t have that much time. You need people delivering and executing now for opportunities that are immediate. The longer you wait, the higher the cost. It&#8217;s not just the cost of interviewing - it&#8217;s the cost of doing nothing - the opportunity cost which is so critical to startups.</p><p>Yeah, you might get lucky and find the perfect candidate. However, &#8220;being lucky&#8221; is not a strategy. <strong>Startups shouldn&#8217;t base the foundational strategy of their hiring on someone they&#8217;ll only find through luck.</strong></p><div><hr></div><h2>You can&#8217;t patch a bad hiring strategy</h2><p>A hiring strategy that relies on finding perfect candidates has extreme costs;</p><ul><li><p>The process is more expensive, as more time is required and more people are needed to assess</p></li><li><p>Hiring is much slower, leaving critical gaps unfilled and accumulating opportunity cost</p></li><li><p>It stretches the members of the interview panel thin, as they continue interviewing on top of their day-to-day and filling gaps that continue to exist and widen</p></li></ul><p>Some leaders try to optimize for these specific individual problems instead of addressing the elephant in the room with their strategy. They try to patch the problems individually:</p><ul><li><p><strong>Hiring is too expensive, </strong>so<strong> </strong>they reduce the number of people on the interview panel. The problem with that is people are on the panel for a reason - removing them likely decreases visibility into skillsets, which makes hiring even more of a gamble.</p></li><li><p><strong>Hiring is too time-consuming, </strong>so they optimize for the schedules of the most expensive people. The problem with this is introduces further delays in meeting and making decisions on hire/no-hire.</p></li><li><p><strong>Hiring is leading to a late-stage rejections</strong>, so they increase the standards earlier in the funnel. The problem with that is that rejection decisions then get made even earlier when signals are still weak, further causing perfectionism to occur.</p></li><li><p><strong>Hiring is causing the interview panel to get stretched thin</strong>, so they reduce the number of focuses they need to have. The problem with that is if you could reduce the focuses without it coming back to bite you, then you probably didn&#8217;t need to be doing that thing in the first place. If it&#8217;s just going to come back and cause issues to your panel, all it does is create additional hectic cleanup for the team to do later.</p></li></ul><p>None of these solutions address the root of the problem - the expectation of perfection. You see - many startup leaders don&#8217;t actually know what an A-player is. </p><p>They expect perfect, <strong>but &#8220;A&#8221;-players aren&#8217;t perfect.</strong></p><p><em>Note: of course, if you can reduce focuses safely, you should definitely do so. That&#8217;s not a hiring issue so much as a strategic decision around the company&#8217;s competitive edge of having only a few things to worry about.</em></p><div><hr></div><h1>The reality of the A-player</h1><p>As someone who has worked with A-players in their career, I can absolutely tell you they aren&#8217;t perfect specimens of humanity. </p><p>Amazing, excellent, with fantastic strengths and great impact - but still very much human. Like all humans, they have strengths, but they also have weaknesses.</p><h2><strong>A-players have weaknesses</strong></h2><p>Think about what it takes to become an A-player:</p><ul><li><p>Years, maybe decades, spent honing particular skills and crafts</p></li><li><p>Consistent practice, education, learning, and training</p></li><li><p>Opportunities for deep and varied experience</p></li><li><p>Intentional retrospection and introspection to self-improve</p></li></ul><p>It takes a lot of time and energy to be an A-player, not to mention opportunity in itself requires luck in addition to preparation.</p><p>To be excellent at an &#8220;A-player&#8221; level requires focus. Focus, by definition, requires things not relevant to that focus to be ignored. The ignored things naturally won&#8217;t be strengths - at best, passable. To even be an &#8220;A-player&#8221;, it&#8217;s likely the person had to have focused on their strengths and thus a small set of skills, highly refined and leveraged.</p><p>Very few A-players want to <em>not</em> use their skills. After a lifetime of building excellence, why wouldn&#8217;t you want to leverage them? </p><p>It&#8217;s why you rarely see a star football player also trying to be a movie star while studying astrophysics and building a startup while getting a degree in mathematics. There&#8217;s not enough time in the day for most people to become excellent or the top of their field at more than one thing, let alone three. Once they&#8217;re good at a skill, they want to keep leveraging that skill and building on it even further. They stick to their strengths and build up the lane they are excellent at for maximum leverage.</p><p>Well, except for this guy, who somehow managed to become a Navy Seal, a Doctor, <em>and</em> an Astronaut:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uZn3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33dc400-3bab-4ec5-b6e2-6e7da1d8db08_1222x688.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uZn3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33dc400-3bab-4ec5-b6e2-6e7da1d8db08_1222x688.png 424w, https://substackcdn.com/image/fetch/$s_!uZn3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33dc400-3bab-4ec5-b6e2-6e7da1d8db08_1222x688.png 848w, https://substackcdn.com/image/fetch/$s_!uZn3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33dc400-3bab-4ec5-b6e2-6e7da1d8db08_1222x688.png 1272w, https://substackcdn.com/image/fetch/$s_!uZn3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33dc400-3bab-4ec5-b6e2-6e7da1d8db08_1222x688.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uZn3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33dc400-3bab-4ec5-b6e2-6e7da1d8db08_1222x688.png" width="1222" height="688" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d33dc400-3bab-4ec5-b6e2-6e7da1d8db08_1222x688.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:688,&quot;width&quot;:1222,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1302886,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!uZn3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33dc400-3bab-4ec5-b6e2-6e7da1d8db08_1222x688.png 424w, https://substackcdn.com/image/fetch/$s_!uZn3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33dc400-3bab-4ec5-b6e2-6e7da1d8db08_1222x688.png 848w, https://substackcdn.com/image/fetch/$s_!uZn3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33dc400-3bab-4ec5-b6e2-6e7da1d8db08_1222x688.png 1272w, https://substackcdn.com/image/fetch/$s_!uZn3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33dc400-3bab-4ec5-b6e2-6e7da1d8db08_1222x688.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://www.military.com/veteran-jobs/former-navy-seal-harvard-doctor-be-first-korean-american-space.html">Dr. Jonny Kim</a> - Astronaut, Doctor, and Navy Seal</figcaption></figure></div><p>Besides him, I can&#8217;t think of many other people who did that.</p><h2>Examining an A-player</h2><p><strong>Let&#8217;s illustrate with an example.</strong> Let&#8217;s say we found an amazing technologist - what have they <em>ignored</em> or paid less attention to in order to get where they are?</p><p>Perhaps:</p><ul><li><p>they have an ego, or challenges or difficulties working with others (eg. prickly, lower EQ)</p></li><li><p>maybe they are an expert at a specific thing, but below effective at others (eg.  a database expert who has no idea how front-end state is stored)</p></li><li><p>maybe they don&#8217;t want to do grunt work (eg. administrative tasks, or fixing small bugs)</p></li><li><p>maybe they have deep, deep curiosity into one area but zero interest in others (eg. dives into the internals of the JS compiler but won&#8217;t ever write an API endpoint)</p></li><li><p>maybe they&#8217;re bad at keeping track of their work in a way visible to the rest of the organization (eg. communicating or managing their projects)</p></li></ul><p>It doesn&#8217;t mean these weaknesses aren&#8217;t fixable or even huge issues. It also doesn&#8217;t mean to compromise - if teamwork is important, then obviously don&#8217;t hire a brilliant jerk. </p><p>It just shows that expecting an A-player to<em> not</em> have <em>any</em> weaknesses that will get them disqualified means you&#8217;re hiring in the realm of unrealistic expectations. </p><h2><strong>A-players aren&#8217;t actually great at everything</strong></h2><p>Turns out A-players are more like T-players, n-players, or m-players. That is, if you look at a visualization of their skillsets, you see something like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8aUe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8ff017-03fb-4b91-8eb8-ca89bedc86f2_3516x898.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8aUe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8ff017-03fb-4b91-8eb8-ca89bedc86f2_3516x898.png 424w, https://substackcdn.com/image/fetch/$s_!8aUe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8ff017-03fb-4b91-8eb8-ca89bedc86f2_3516x898.png 848w, https://substackcdn.com/image/fetch/$s_!8aUe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8ff017-03fb-4b91-8eb8-ca89bedc86f2_3516x898.png 1272w, https://substackcdn.com/image/fetch/$s_!8aUe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8ff017-03fb-4b91-8eb8-ca89bedc86f2_3516x898.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8aUe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8ff017-03fb-4b91-8eb8-ca89bedc86f2_3516x898.png" width="1456" height="372" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e8ff017-03fb-4b91-8eb8-ca89bedc86f2_3516x898.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:372,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:302951,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!8aUe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8ff017-03fb-4b91-8eb8-ca89bedc86f2_3516x898.png 424w, https://substackcdn.com/image/fetch/$s_!8aUe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8ff017-03fb-4b91-8eb8-ca89bedc86f2_3516x898.png 848w, https://substackcdn.com/image/fetch/$s_!8aUe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8ff017-03fb-4b91-8eb8-ca89bedc86f2_3516x898.png 1272w, https://substackcdn.com/image/fetch/$s_!8aUe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8ff017-03fb-4b91-8eb8-ca89bedc86f2_3516x898.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Different skills have different depths and spikes.</figcaption></figure></div><p>A T-shaped person has a broad foundation with a skill spike that represents their specialty. Sometimes, you get lucky and find someone with more specialties. Maybe three, if you&#8217;re extremely lucky.</p><p>Two or three isn&#8217;t anywhere close to &#8220;good at everything&#8221;. Even the best people in the world can&#8217;t do everything themselves at the same level of market-leading excellence. </p><p>Instead, an A-player is more accurately described as &#8220;great at one or two things, passable-to-fine at most other things&#8221;, an important distinction when you&#8217;re looking for perfect.</p><p>When an A-player does something they are&#8217;t great at - surprise: they put in a lot of energy but the outcome ends up not being particularly good. By the definition of many hiring standards looking for perfect - that&#8217;s a weakness that would lead to a rejection.</p><p>If A-players have weaknesses, and they actually aren&#8217;t great at everything, then a hiring process that looks for no weaknesses and strengths everywhere is likely rejecting many talented, high-impact A-players.</p><div><hr></div><h1>How to fix your hiring</h1><p>By now you should realize that the ideal of A-players and the reality are two very different things. </p><p>At this point - leaders need to recognize that the ideal is the problem and fix their hiring strategy.</p><h2>Stop expecting perfection</h2><p>Recognize that A-players have weaknesses. A yellow flag during an interview is OK, especially if that weakness can be worked on, mitigated, or even covered by the strengths of others on the team. It doesn&#8217;t make them any less an A-player.</p><p>In the quest to hire the perfect individual, we often forget we work together as a team. You don&#8217;t actually need to have the perfect individual to have the perfect team. Strengths and weaknesses can overlap on a team to cover gaps in individual weaknesses and maximize overlapping strengths.</p><p>Teamwork truly does make the dream work.</p><h2>Be realistic about your needs</h2><p>Chances are you don&#8217;t actually need all of the criteria you&#8217;re looking for, particularly if you factor in your stage of growth and the work that you do. </p><p>It&#8217;s easier to find A-players if they don&#8217;t have to be an &#8220;A&#8221; at a dozen different skillsets, half of which you don&#8217;t actually need or are capable of leveraging in your company.</p><p>Be realistic. Bump down or discard some of those extraneous ones - especially if they can be taught or covered by others.</p><p><strong>Truly assess your needs.</strong> Requirements creep in job descriptions kind of just sneaks in - this train of thinking and decisions happens all too often:</p><ul><li><p>We want someone who can deliver front-end code really well.</p></li><li><p>We also want them to be able to do back-end, too.</p></li><li><p>Actually - full-stack, with database and data modeling, too.</p></li><li><p>Well, we do our own deploys here, so they should have dev-ops experience with infrastructure and networking.</p></li><li><p>We also really want people focused on the user and customer, so really good product-thinking and product-sense as well.</p></li><li><p>To make that valuable, they should also understand our business, so familiarity with SaaS revenue modeling is a must.</p></li><li><p>Also - we want someone who can hit the ground running, so they&#8217;ll need to know our tech stack exactly.</p></li><li><p>Don&#8217;t forget our industry - they need to have experience in global shipping logistics.</p></li><li><p>We&#8217;ll probably want to expand the team at some point, so managerial experience would be nice so we can have them manage at some point.</p></li><li><p>Actually, the team they&#8217;re on doesn&#8217;t have a designer, so some UX experience would be great.</p></li></ul><p>By the end, there&#8217;s a laundry list of 30 things that maybe 10 people in the industry fit, of which only 5 are true needs. Be judicious.</p><h2>Be sure you actually want an A-player</h2><p>A lot of times, I find that startup leaders have actually conflated an A-player with something far easier to hire for: an adaptable, good-enough <em>generalist</em>.</p><p>No one person can be expected to handle deep nuances of everything from security to development to policy to legal to marketing to budgets to logistics to financials to people operations to sales to pricing and everything in-between. That&#8217;s perfection.</p><p>However, you can absolutely expect someone to pitch in and learn quickly some of the basics in all of these areas. A good generalist can do decent enough for most problems encountered. Groups of generalists can gap fill and build on each other and get you quite far - a team-wide adaptability that is extremely useful for startups,.</p><p>While you won&#8217;t get the same skill depth from hiring generalists as you would from the truly specialized expertise of A-players, you might not actually need the specialized skillset at all.</p><h1>Hire B-players, too</h1><p>For all the talk of hiring A-players, don&#8217;t overlook the fact that you can do extremely well with B-players - especially those who have significant unrealized potential.</p><p>B-players are decent folks who do a good job. They might not have deep expertise, or a track record of wins, but they can absolutely do well in keeping your company moving forward. One upside is that B-players are also more likely to be generalists - many haven&#8217;t even gone down a specialty yet.</p><p>It&#8217;s also the single-most reliable way I&#8217;ve found to get actual A-players into your organization. Hire B-players with high potential and invest in them. It&#8217;s easier to hire people who aren&#8217;t quite there yet, take 6, 9, 12 months to get them to be the A-players they can be. It is an investment - you need a good learning culture and give space, resources, and time to realize the benefit - but the benefit is massive. </p><div class="paywall-jump" data-component-name="PaywallToDOM"></div><p>Create a culture of increasing and realizing potential, and you&#8217;ve got yourself an engine that will create A-players for you without the pain of hiring them. </p><h4><strong>Teamwork makes the dream work</strong></h4><p>One of the best teams I was on in my entire career was staffed with a bunch of junior and mid-level engineers that gelled together, had complimentary skillsets, and just cranked out amazing products. </p><p>None of these folks would have stood out as &#8220;A-player&#8221; material by any means, but the team ran circles around other teams in my career that had been staffed with A-players. </p><p>Remember that development is a team sport, and the team makeup goes a long way in determining its effectiveness.</p><h1>C-players sometimes create value</h1><p>While I can&#8217;t recommend hiring C-players, they might still serve a useful purpose in your company.</p><p>C-players just do <em>OK</em>. Perhaps they were amazing in a past phase of the company, but haven&#8217;t kept up to the skills and mindset required in the new phase. Perhaps they were a hire that quickly maxed out their potential far below where you had expected. Perhaps they stopped being motivated or just are very particular about their work boundaries.</p><p>You likely have some in your company. They can do steady work, but don&#8217;t expect growth or improvement. If you&#8217;re a startup, they&#8217;ll likely stagnate and fall behind the rate of change your startup needs. Some can keep up with the growth, but many do not, falling further and further behind.</p><p>Just some advice - don&#8217;t let them hire. They likely don&#8217;t know what good looks.</p><p>As you hire, look to encourage C-players up or out.</p><h1>Get rid of D-players and F-players</h1><p>Don&#8217;t keep around under-performers in your company. It demoralizes higher performers and causes more work for others who have to clean up or step in to do additional work. Any value they do contribute just isn&#8217;t worth the cost.</p><p>If managing them up doesn&#8217;t work, manage them out.</p><div><hr></div><h1>A quick hiring philosophy</h1><p>Hiring is context-dependent. An enterprise company should hire differently than a pre-seed startup.</p><p>If your startup is flush with cash and has a war-chest, and doesn&#8217;t need people - then sure: depend on luck to bring a perfect candidate along. You can afford to wait.</p><p>However, if your startup needs people now, don&#8217;t waste precious resources and time and energy hiring for perfect when good" will do. If you keep some cash in reserve, you can always extend an offer when perfect does land in your lap by luck. Just don&#8217;t base your hiring strategy on getting lucky.</p><p>Instead:</p><ul><li><p><strong>Look for reasons to hire</strong>. A yellow flag here and there is fine.</p></li><li><p><strong>Keep your red flags minimal. </strong>Have as small a set of red flags as possible. Don&#8217;t compromise on your culture, but truly think about whether you actually need certain skillsets.</p></li><li><p><strong>Hire adaptable people who continuously learn. </strong>This increases the odds they can evolve as your company grows and its needs change.</p></li><li><p><strong>Ensure you can actually leverage specialists. </strong>If you hire people with specific, specialized skillsets, make sure you actually need it and are set up to take advantage of it, or that they can set it up and you&#8217;ll realize the benefits. For example - you probably don&#8217;t need a database specialist if you&#8217;re getting 100 requests per second.</p></li><li><p><strong>Hire for the appropriate stage and make that clear to candidates.</strong> A stage mismatch is one of the most common reasons why many otherwise talented people fail at a company. Some people are really good at early-stage companies. Others are mature stage. . Let people know what the stage is, and where the company is going. Be OK with them opting out in the future - just be up-front and agree ahead of time.</p></li><li><p><strong>Look at potential and trajectory to that potential. </strong>Hiring isn&#8217;t just about what people can do <em>today</em>. It&#8217;s also about what they can do <em>tomorrow</em>. If you are set up to realize potential rapidly, then you have a much easier time hiring people who are excellent or become excellent.</p></li></ul><div><hr></div><p>Leaders who wait for that perfect A-player hire are likely to keep waiting, at an ever-accumulating cost to their companies. </p><p>Understand the reality of A-players - they&#8217;re human, too. Recognize perfect is extremely, extremely, extremely rare, if it exists at all. </p><p>Make sure your hiring strategy isn&#8217;t a gamble.</p>]]></content:encoded></item><item><title><![CDATA[On operations - Leveraging tempo to build software better]]></title><description><![CDATA[Leverage the power of effective tempos within cyclical execution environments to build software better.]]></description><link>https://blog.jgefroh.com/p/on-cultivating-agility-leveraging</link><guid isPermaLink="false">https://blog.jgefroh.com/p/on-cultivating-agility-leveraging</guid><dc:creator><![CDATA[Joseph Gefroh]]></dc:creator><pubDate>Sat, 10 Feb 2024 20:50:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BRY2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238baae6-6b92-4a2d-a018-3409cb0cec4a_1400x603.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BRY2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238baae6-6b92-4a2d-a018-3409cb0cec4a_1400x603.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BRY2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238baae6-6b92-4a2d-a018-3409cb0cec4a_1400x603.webp 424w, https://substackcdn.com/image/fetch/$s_!BRY2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238baae6-6b92-4a2d-a018-3409cb0cec4a_1400x603.webp 848w, https://substackcdn.com/image/fetch/$s_!BRY2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238baae6-6b92-4a2d-a018-3409cb0cec4a_1400x603.webp 1272w, https://substackcdn.com/image/fetch/$s_!BRY2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238baae6-6b92-4a2d-a018-3409cb0cec4a_1400x603.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BRY2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238baae6-6b92-4a2d-a018-3409cb0cec4a_1400x603.webp" width="1400" height="603" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/238baae6-6b92-4a2d-a018-3409cb0cec4a_1400x603.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:603,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48588,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BRY2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238baae6-6b92-4a2d-a018-3409cb0cec4a_1400x603.webp 424w, https://substackcdn.com/image/fetch/$s_!BRY2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238baae6-6b92-4a2d-a018-3409cb0cec4a_1400x603.webp 848w, https://substackcdn.com/image/fetch/$s_!BRY2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238baae6-6b92-4a2d-a018-3409cb0cec4a_1400x603.webp 1272w, https://substackcdn.com/image/fetch/$s_!BRY2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238baae6-6b92-4a2d-a018-3409cb0cec4a_1400x603.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Software engineering nowadays is filled with buzzwords and jargon. The agile movement has ushered in an plethora of Agile processes. Practices like poker planning and t-shirt estimation have become popular, packaged up in formal development methodologies like Kanban, Lean, and Scrum, and XP.</p><p>Let&#8217;s take a moment to pull the curtain back on these methodologies.</p><p>They all have their nuances, but at their core is a central assumption: software engineering that occurs in a cyclical nature is more effective at responding to changing environments than traditional highly planned, single-shot execution models such as waterfall.</p><p>These agile methodologies leverage working and executing in cycles of activity, using various rituals and processes to promote and manage cyclical execution.</p><p>These cycles are both an advantage and a potential disadvantage. The improved agility is accompanied by a more frantic pace of activity. There&#8217;s a greater need to adapt, and less time for in-depth planning and detail.</p><p>Leaders operating within these cyclical execution environments must be well versed in how to effectively manage these cycles. Without proper control, agile can quickly turn from a virtuous cycle into a flailing death spiral: instead of rolling the project forward, it gets flushed down the toilet.</p><h1><strong>Understanding the cycle</strong></h1><p>Cyclical execution like Sprints generally rely on three phases:</p><ul><li><p>Aligning</p></li><li><p>Empowering</p></li><li><p>Executing</p></li></ul><p>These three phases are repeated over and over at set intervals &#8212; the heartbeat of cyclical execution.</p><h2><strong>Aligning</strong></h2><p>Aligning is the process of getting everyone pointed in the same direction by establishing clarity. It&#8217;s also the phase where the team can regroup, re-evaluate goals, and potentially change direction based on new information.</p><p>Agile methodologies like Scrum use Sprint Planning as an alignment tool before the next cycle to ensure that everyone has a clear and unified direction. Tools like Sprint Retrospectives and after-action reviews provide an opportunity to collect feedback and improve processes for the next iteration.</p><h2><strong>Empowering</strong></h2><p>Larger, concerted efforts require significant amounts of coordination to manage resources. Empowering means that the lead ensures that the team has what they need to execute.</p><p>Whether that means people, tools, information, or authority is going to be context-dependent. Boundaries between teams are established, and authority is clarified.</p><h2><strong>Executing</strong></h2><p>This is the phase of the cycle where the work actually gets done. The team executes on the goals with the resources they have.</p><p>The more time a team within this phase, the more effective it will be, provided they are sufficiently aligned and empowered. Teams that have run through multiple cycles will naturally gravitate towards spending more and more time within execution due to jelling effects.</p><p>How can leaders manage this cycle effectively? There&#8217;s many techniques, but at the core of them is a single principle: <strong>tempo</strong><em><strong>.</strong></em></p><h1><strong>What is tempo?</strong></h1><p>Simply put, tempo is the pace at which an activity occurs. Control of it is at the core of successful execution in cyclical models like many Agile methodologies.</p><p>As a leader, you&#8217;re able to leverage processes and take actions to set the tempo of execution &#8212; controlling the pace of activity through the cycle as needed given the operating environment.</p><p>The concept isn&#8217;t new &#8212; it&#8217;s been discussed with various flavorings for years, such as in Boyd&#8217;s <a href="https://en.wikipedia.org/wiki/OODA_loop">OODA loop</a> or the <a href="https://en.wikipedia.org/wiki/Lean_startup">Lean startup</a> methodology. Establishing effective tempos has been a core part of everything from the synchronization of rowing teams to the defeat of militaries via maneuver warfare.</p><h1><strong>Why is tempo important?</strong></h1><p>An effective tempo provides a predictable, clarified environment where team members can adjust their own behavior and self-synchronize, reducing execution friction and promoting alignment. Simply put: everyone knows what to expect because they&#8217;ve done it before and it&#8217;ll happen again.</p><p>When a leader sets the right tempo and manages cyclical execution effectively, they provide their team initiative. This initiative allows them to proactively dictate the flow of action instead of having to operate in a reactionary mindset.</p><blockquote><p><strong>When you don&#8217;t control the tempo, the tempo controls you.</strong></p></blockquote><p>When the tempo controls you, it means you and your team have lost the initiative &#8212; the capability to act on your own timeline and control your own direction.</p><blockquote><p>When the team is always reacting to things, it will never make forward, focused progress towards its goals except by accident.</p></blockquote><p>Without establishing an effective tempo, you&#8217;re a victim to the whims of the environment you&#8217;re operating in.</p><h1><strong>Setting an effective tempo</strong></h1><p>Setting effective tempos is a key part of creating high-initiative, autonomous teams. Without an effective tempo, it is difficult to establish boundaries, supervise efforts, and allow team members to self-synchronize.</p><h2><strong>Ensure it is consistent.</strong></h2><p>Good tempos don&#8217;t change from one cycle to another, unless the environment demands it. A tempo that is constantly changing and inconsistent causes jarring, unpredictable execution, which creates chaos and leads to an increase in execution friction across teams.</p><p>The activities performed within a cycle should also be as consistent as the environment will reasonably allow.</p><blockquote><p>Knowing that a specific activity occurs on a set schedule allows teams to prepare, practice, and synchronize with it in mind without having to spend extra effort coordinating.</p></blockquote><p>By having consistency, teams can gain several benefits:</p><ul><li><p>Iterative cycles build patterns that turn into habit behaviors.</p></li><li><p>Repetition turns knowledge-based actions into intuition-based actions, allowing them to be performed faster and more effectively.</p></li><li><p>Provides clarity in expectations of behavior, making work predictable and easier to manage.</p></li><li><p>Provides opportunities for team members to self synchronize without having to take execution time to realign.</p></li></ul><h2><strong>Make sure the operating tempo is relatively fast.</strong></h2><p>Relatively fast means that the tempo of execution must be faster than the external forces acting against the execution. This also means that while individual actions may be done slowly, the overall pace of execution timed as a full cycle is faster than whatever external forces are being operated against &#8212; whether these be the market, stakeholders, etc.</p><p>Effective tempos aren&#8217;t just fast, they are <em>fast enough.</em></p><h2><strong>Make sure the tempo is sustainable.</strong></h2><p>There&#8217;s no sense burning out the team by charging at 110% to accomplish an objective. It&#8217;s important to make sure that the tempo is within the capability of the team to execute the cycle over and over again.</p><p>This means the lead must ensure that the tempo that is set can be operated at indefinitely by the team. Sustainment is key for any initiative lasting more than a short time.</p><h2><strong>Create well-defined starts and stops.</strong></h2><p>&#8220;Death marches&#8221; can occur when a once-cyclical tempo starts to feel like it is dragging on. Back-to-back sprints that continuously bleed over become indistinguishable from project death marches. Sprints turn into marathons.</p><p>The lead must ensure that each iteration of the cycle has a well-defined beginning and end to signal which phase of the cycle is being entered. Well-defined starts and stops prevent burn-out caused by the perception of continuous exertion.</p><h2><strong>Prevent jarring tempo transitions.</strong></h2><p>Consistency leads to predictability, and having a tempo that is consistent allows the team to operate with clearer expectations due to understanding what&#8217;s expected of them at any given point.</p><p>They&#8217;ll know the what&#8217;s expected of them at every stage of the cycle, and the consistent speed will allow them to time their actions appropriately without having to pause execution to re-align.</p><h2><strong>Avoid bleed-over work.</strong></h2><p>Work that carries from cycle to cycle can make multiple consecutive cycles blend together to feel like a single, never-ending cycle.</p><p>This kind of tempo makes work feel lengthened and runs the risk of turning the cyclical execution into a dragged out never-ending death march. It increases the potential for burnout and reduces a team&#8217;s effectiveness.</p><p>It is preferred to work on something, put it down temporarily, and then work on it again rather than working on it for more than a few cycles.</p><h1><strong>How to set tempos</strong></h1><p>There&#8217;s many ways to set the tempo on your team.</p><p>Within an Agile Scrum engineering team, the primary tempo setting tool is often a 2-week sprint.</p><p>However, that&#8217;s not the only tool you have. Different time ranges can have different effective tempos that roll up into a larger operational tempo.</p><p>Ensuring that there&#8217;s an effective tempo at each of these variable time ranges is important.</p><p><strong>Immediate-term<br></strong>Immediate-term tempos can be set to condition work that occurs day to day or moment to moment. Things like daily check-ins (stand-ups), lunch breaks, and scheduled blocks of time to code set the cadence of the day&#8217;s work.</p><p>Practices like the red/green/refactor cycles of Test Driven Development help set the moment-to-moment tempo.</p><p>Effective immediate-term tempo setting is often done by the individuals, but can be encouraged by the team leads through various environment controls such as more considerate scheduling.</p><p><strong>Near-term<br></strong>Near-term tempos can ensure that week-to-week progress is made. Within a 2-week sprint, week-to-week tempos can help provide early warning signs of potential schedule slippage or difficulties.</p><p>These opportunities to raise and identify yellow flags are critical to staying on schedule or adapting to schedule lapses.</p><p>Things like weekly alignment meetings, setting sub-week goals, 1:1s, and after-week reviews can help establish the weekly cadence of activity and provide checkpoints for activity and progress.</p><p><strong>Mid-term<br></strong>Mid-term tempos are often the primary focus of Agile methodologies &#8212; Sprints are the most obvious form of cycles.</p><p>Sprint plannings and sprint retrospectives help define the tempo of the mid-term timespan, establishing clear starts and stops to the Sprint cycle. Practices from other methodologies like project kick-offs or JAM sessions can help compliment the tempo.</p><p><strong>Long-term<br></strong>Long-term tempos can be established to ensure the overall alignment and direction of an organization is still approaching its operating environment in a relevant way.</p><p>This is the equivalent of making sure you&#8217;re not stuck running a disposable camera service when the entire world has digital cameras on their cellphones.</p><p>Such tempos may be month-to-month or quarter-to-quarter or even year to year. Things like all-hands meetings, quarterly off-sites, and other similar direction setting meetings help keep people aligned with the long-term vision.</p><p>Cyclical execution models like agile provide significant opportunities but also presents new challenges for software projects. Managing the cycle by setting the proper tempo is a key factor in achieving a successful project.</p>]]></content:encoded></item><item><title><![CDATA[On hiring - A rapid hiring process for busy startup engineering leaders]]></title><description><![CDATA[Learn a lightweight hiring process to help you quickly hire great engineers with as little overhead as possible.]]></description><link>https://blog.jgefroh.com/p/hiring-process-a-rapid-hiring-approach</link><guid isPermaLink="false">https://blog.jgefroh.com/p/hiring-process-a-rapid-hiring-approach</guid><dc:creator><![CDATA[Joseph Gefroh]]></dc:creator><pubDate>Sat, 10 Feb 2024 20:32:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jP7T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05cc5d7b-ff3d-4ac2-b10b-2f7dfa35d64b_1400x503.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jP7T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05cc5d7b-ff3d-4ac2-b10b-2f7dfa35d64b_1400x503.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jP7T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05cc5d7b-ff3d-4ac2-b10b-2f7dfa35d64b_1400x503.webp 424w, https://substackcdn.com/image/fetch/$s_!jP7T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05cc5d7b-ff3d-4ac2-b10b-2f7dfa35d64b_1400x503.webp 848w, https://substackcdn.com/image/fetch/$s_!jP7T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05cc5d7b-ff3d-4ac2-b10b-2f7dfa35d64b_1400x503.webp 1272w, https://substackcdn.com/image/fetch/$s_!jP7T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05cc5d7b-ff3d-4ac2-b10b-2f7dfa35d64b_1400x503.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jP7T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05cc5d7b-ff3d-4ac2-b10b-2f7dfa35d64b_1400x503.webp" width="1400" height="503" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05cc5d7b-ff3d-4ac2-b10b-2f7dfa35d64b_1400x503.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:503,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17976,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jP7T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05cc5d7b-ff3d-4ac2-b10b-2f7dfa35d64b_1400x503.webp 424w, https://substackcdn.com/image/fetch/$s_!jP7T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05cc5d7b-ff3d-4ac2-b10b-2f7dfa35d64b_1400x503.webp 848w, https://substackcdn.com/image/fetch/$s_!jP7T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05cc5d7b-ff3d-4ac2-b10b-2f7dfa35d64b_1400x503.webp 1272w, https://substackcdn.com/image/fetch/$s_!jP7T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05cc5d7b-ff3d-4ac2-b10b-2f7dfa35d64b_1400x503.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image from Pixabay</figcaption></figure></div><p>I was once the Director of Engineering at a startup that was always busy, busy, busy! We had people to help, processes to fix, and product to ship. Every day was a fire or pivot.</p><p>Strategically we had some key skills gaps that I needed to close, fast. I knew the only way to do it was to increase the size of our team, but given all of the other things going on, hiring kept falling by the wayside.</p><p>Engineering, architecture, management, company strategy, wouldn&#8217;t get done if I focused too much time on hiring, and yet hiring was critical in ensuring these things got done effectively long-term.</p><p>I needed to find a way to hire that would have both speed and quality in a way that wouldn&#8217;t take away from the hundred other responsibilities on my plate.</p><p>I decided to implement a lightweight process that would help me achieve my hiring goals with as little friction as possible and without interrupting the rest of my priorities.</p><p><strong>This is that process.</strong></p><h1><strong>This process assumes a few things</strong></h1><p>Be sure to tweak this process (or throw it out entirely, if appropriate) if your context is not the same.</p><ul><li><p>You have few resources, whether it be time or money</p></li><li><p>You need to do most of the hiring process yourself</p></li></ul><h1><strong>Building the pipeline</strong></h1><p>Efficient hiring is about building a pipeline and getting qualified candidates through that pipeline with as minimal effort as possible.</p><p>After doing it for a bit, I saw an immediate pattern: software development. The process of moving a candidate from sourcing to closing felt so close to how an issue goes from ideation to development to delivery that I started treating it like a Kanban-style software project:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9jNI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84797c95-49d4-4238-89f5-8f3d6cdb19e3_1400x323.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9jNI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84797c95-49d4-4238-89f5-8f3d6cdb19e3_1400x323.png 424w, https://substackcdn.com/image/fetch/$s_!9jNI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84797c95-49d4-4238-89f5-8f3d6cdb19e3_1400x323.png 848w, https://substackcdn.com/image/fetch/$s_!9jNI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84797c95-49d4-4238-89f5-8f3d6cdb19e3_1400x323.png 1272w, https://substackcdn.com/image/fetch/$s_!9jNI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84797c95-49d4-4238-89f5-8f3d6cdb19e3_1400x323.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9jNI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84797c95-49d4-4238-89f5-8f3d6cdb19e3_1400x323.png" width="1400" height="323" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84797c95-49d4-4238-89f5-8f3d6cdb19e3_1400x323.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:323,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!9jNI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84797c95-49d4-4238-89f5-8f3d6cdb19e3_1400x323.png 424w, https://substackcdn.com/image/fetch/$s_!9jNI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84797c95-49d4-4238-89f5-8f3d6cdb19e3_1400x323.png 848w, https://substackcdn.com/image/fetch/$s_!9jNI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84797c95-49d4-4238-89f5-8f3d6cdb19e3_1400x323.png 1272w, https://substackcdn.com/image/fetch/$s_!9jNI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84797c95-49d4-4238-89f5-8f3d6cdb19e3_1400x323.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">The hiring pipeline can be interacted with as a Kanban-style software project.</figcaption></figure></div><p><strong>From my perspective, we had the following stages:</strong></p><ul><li><p>Sourcing</p></li><li><p>Intro Email</p></li><li><p>Phone Screen</p></li><li><p>Tech Screen (Prompt)</p></li><li><p>Tech Screen (Discussion)</p></li><li><p>Group Screen</p></li><li><p>Decision</p></li><li><p>Offer or Rejection</p></li></ul><p>These stages were mapped to status columns, and a candidate was an issue ticket that flowed from stage to stage. An additional element was who was responsible for the next-step:</p><ul><li><p>Was I supposed to do something? (eg. send an email, schedule an invite)</p></li><li><p>Were they supposed to do something? (eg. send us a technical submission)</p></li><li><p>Was the next step scheduled scheduled?</p></li></ul><p>This worked really well, especially as I started to involve other developers in the process. By leaving comments and updates on the ticket, it was just as simple as collaborating on an issue would be.</p><p>Queue management practices also worked well for the pipeline. Monitoring cycle time and wait time helped me identify pipeline bottlenecks early, allowing me to switch focus as needed.</p><h2><strong>The candidate only saw 3 of these stages</strong></h2><p>From the candidate&#8217;s perspective, they only had to &#8220;prepare&#8221; for 3 of the stages:</p><ul><li><p>Phone Screen</p></li><li><p>Tech Screen</p></li><li><p>Group Screen</p></li></ul><p>This helped make the process feel lightweight. It also kept things simple and straightforward when I had to explain the hiring process to them. Advertising a hiring process as a &#8220;3-step process&#8221; was massive in an age where some companies require you to study 6 months just for an interview.</p><p>Remember: a snappy and simple process is a competitive advantage. I strove for a 2-week maximum turnaround time from source to decision.</p><h1><strong>Sourcing &#8212; Where do you find developers?</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AFbz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd980e7ac-2cb1-4339-9984-36a49640abc7_1400x959.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AFbz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd980e7ac-2cb1-4339-9984-36a49640abc7_1400x959.png 424w, https://substackcdn.com/image/fetch/$s_!AFbz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd980e7ac-2cb1-4339-9984-36a49640abc7_1400x959.png 848w, https://substackcdn.com/image/fetch/$s_!AFbz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd980e7ac-2cb1-4339-9984-36a49640abc7_1400x959.png 1272w, https://substackcdn.com/image/fetch/$s_!AFbz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd980e7ac-2cb1-4339-9984-36a49640abc7_1400x959.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AFbz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd980e7ac-2cb1-4339-9984-36a49640abc7_1400x959.png" width="1400" height="959" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d980e7ac-2cb1-4339-9984-36a49640abc7_1400x959.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:959,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!AFbz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd980e7ac-2cb1-4339-9984-36a49640abc7_1400x959.png 424w, https://substackcdn.com/image/fetch/$s_!AFbz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd980e7ac-2cb1-4339-9984-36a49640abc7_1400x959.png 848w, https://substackcdn.com/image/fetch/$s_!AFbz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd980e7ac-2cb1-4339-9984-36a49640abc7_1400x959.png 1272w, https://substackcdn.com/image/fetch/$s_!AFbz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd980e7ac-2cb1-4339-9984-36a49640abc7_1400x959.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">There&#8217;s different sources you can draw from when looking for candidates.</figcaption></figure></div><p>Sourcing is the act of finding candidates to bring into your pipeline. There&#8217;s a lot of different channels you can use to source, with varying levels of cost, effort, and effectiveness.</p><p>I found it the most time-consuming part of the hiring process. I&#8217;d spend about 30 minutes to an hour a day sourcing, when I could spare it.</p><h2><strong>LinkedIn</strong></h2><p><em>Low effort, High Value</em></p><p>A couple of LinkedIn posts to your network can draw a significant amount of inbound interest. As someone who has built up a network over time, it was one of my largest sources of candidate leads.</p><p>If you don&#8217;t have a large network today, I recommend you start building it &#8212; it&#8217;ll pay off dividends the next time you hire. It&#8217;s not just the number of 1st-degree connections that matter, either. Every 1st-degree connection you have expands your 2nd and 3rd-degree reach.</p><div class="paywall-jump" data-component-name="PaywallToDOM"></div><p>Connect with people, say hello, engage with their posts. Yes, it&#8217;s a social network, but it&#8217;s actually a useful one.</p><h2><strong>Referrals</strong></h2><p><em>Low Effort, High Value</em></p><p>Referrals from existing employees is another key source of candidates.</p><p>We had some talented people on our team, and their recommendations carried weight. I asked the team to recommend people directly, and many took me up on it. It also showed that the team was willing to refer people, which was a positive signal of the culture.</p><p><strong>Keep things consistent<br></strong>Always make sure that referrals go through the same exact process as everyone else, and that anyone who referred someone is not involved in their hiring decision other than to provide some additional data-points and context. This helps prevent nepotism, which can damage organizations.</p><p><strong>Be thoughtful about your incentive structure<br></strong>I&#8217;ve seen some disastrous results with companies implementing referral bonuses.</p><p>First, remember that all systems can be gamed, and engineers are notorious for knowing how to game things &#8212; it&#8217;s almost as if it is in our DNA.</p><p>Second &#8212; referring is a behavior that should already be happening if your team is happy. If you start offering incentives for it, it can potentially cheapen its use as a signal or lead to the opposite of the desired result if it becomes more profitable to refer people than to do work.</p><p>Finally&#8212; it&#8217;s better to offer NO incentive than an incentive that is perceived as too low. Too low an incentive can be misconstrued as insulting and make people feel the referral is not appreciated. Worse, it can also exasperate any existing feelings of under-appreciation, especially if your company already has issues with fair compensation. Given that some companies give referral bonuses north of $3,000 &#8212; $5,000, choose wisely before deciding to offer a $25 gift-card.</p><h2><strong>Recruiters</strong></h2><p><em>Moderate Effort, Moderate Value</em></p><p>Having a great recruiter you trust is a blessing that make hiring easier.</p><p>I had a couple of external recruiters I had never worked with send me some candidates to test the waters for a more robust relationship, but most were quite low quality and I didn&#8217;t pursue this further.</p><p>However, if you&#8217;re really busy you can have the internal recruiters do the sourcing and meet with them occasionally for calibration sessions where you can review resumes together and highlight what to look for in a candidate. This can help build up their accuracy over time.</p><p>They can also manage the scheduling for you, saving precious time and saving you from avoiding administration overheads.</p><h2><strong>Developer Communities</strong></h2><p><em>Moderate Effort, High Value</em></p><p>I&#8217;m a member of several groups and meetups dedicated to various software engineering subjects.</p><p>I leveraged them extensively to let people know I was hiring. Many of them have mediums dedicated to posting job openings. I would attend meetings and mention we were hiring at the open mic, post job ads in their Slack channels, and even sponsored a meetup or two to drum up interest.</p><p>All of this resulted in some great candidates for just a bit of networking.</p><pre><code>Hey all!Widget Co. is actively hiring full-time mid-level SEII&#8217;s (3+ years) and senior-level SE III&#8217;s/SE IV&#8217;s (5-7+ years) engineers in Hawaii.We&#8217;re a mission-driven company with a single goal: provide every community on the planet with their very own supply of widgets.We&#8217;re looking for full-stack capable individuals, with a specialty in either:
* back-end (designing and programming modular subsystems and data models)
* front-end (implementing high-fidelity designs with clean front-end architectures)We don&#8217;t do algorithm / puzzle-style interviews. Our tech stack is:
* Ruby on Rails
* AngularJS
* Postgres
* Docker Salary bands are:
* SE II: 110k - 130k
* SE III: 120k - 140k
* SE IV: 130k - 150kplus RSUs, 401k matching, health/dental/vision insurance, flexible hours, etc.If you&#8217;re interested, feel free to DM me!</code></pre><p>If you don&#8217;t have a large professional network, you can start small: attend meetups and join their Slack teams.</p><p>Be sure to follow their rules, though &#8212; don&#8217;t spam if they don&#8217;t want you to.</p><h2><strong>Job postings</strong></h2><p><em>Moderate Effort, Low Value</em></p><p>Job postings on boards and career sites were a decent high-volume source, but there was<em> a lot</em> of noise in it.</p><p>It also requires you to stay on top of the job description, tweaking it as needed depending on what results you get. Being able to A/B test messages and job descriptions often requires administrative access to the hiring systems, which you might not have. If you&#8217;re already busy with a hundred of things, you might not have the bandwidth to do this.</p><p>With that said, if you do have an HR system set up effectively, it can be a lifesaver. Systems like Greenhouse and Lever have automatic scheduling, templating, and pipeline management, which can save a lot of time and effort. Working in the same system as your HR team can help cross-departmental coordination quite a lot, and makes it easier to offload sourcing and scheduling activities.</p><h2><strong>Candidate Marketplaces</strong></h2><p><em>High Effort, Moderate Value</em></p><p>Platforms like Vettery and Hired had a lot of candidates to choose from. I spent a lot of time going through them. While I recommend these platforms, I do so with a word of caution:</p><ul><li><p>They can be prohibitively expensive</p></li><li><p>Candidates are hit or miss &#8212; some weren&#8217;t even looking for jobs!</p></li></ul><p>Since then, Vettery and Hired have changed their pricing and I believe one of them has acquired the other.</p><h2><strong>Internal moves</strong></h2><p><em>Moderate Effort, High Value</em></p><p>This is one key area to not overlook within your own organization. I&#8217;ve occasionally gotten lucky a couple of times when a great candidate who was performing another job function in the organization expressed interest in being a developer or taking on some developer responsibilities.</p><p>One of the best front-end engineers I&#8217;ve ever worked with was doing manual QA before I pushed for him to move into an engineering role. He turned out to be an excellent internal hire for the open position.</p><p>I also once managed to avoid having to hire a sales engineer by transitioning some time-consuming engineering work onto an eager account manager who later took over the dev-ops responsibilities of account setup (eg. domain names, certificate issuing, server monitoring, etc) with just some minor training. It was a win-win situation: the account manager could immediately solve an entire class of client problems, and engineering time was freed up to focus on other priorities.</p><h1><strong>Intro Email</strong></h1><p>The intro email is a way for you to get prospects hooked. It&#8217;s your first contact with the candidate, and you want to present the best possible face.</p><p>The whole point of it is to get the prospect to agree to a phone screen and enter the hiring pipeline. I knew I had to build excitement about the company, while ensuring that I was providing transparency and engaging the candidate on the terms that they wanted to be engaged on. I also needed to do it in a way that didn&#8217;t seem robotic, since everyone hates those automatic, generated emails.</p><p>A good intro email should:</p><ul><li><p>Let the candidate know what the company is about</p></li><li><p>Let the candidate know what the position is about</p></li><li><p>Prompt to schedule a call as soon as possible</p></li></ul><p>I made a pre-made template with some basic standard information, which I then filled out depending on the prospect&#8217;s background and the role I was hiring for (eg. front-end, back-end, full-stack, etc.).</p><pre><code>Hi Martha!I&#8217;m the Director of Engineering at Widget-co, and I wanted to reach out after I came across your profile on LinkedIn. I thought your background was a great match for an open position we haver for a Senior Software Engineer at our company, especially your recent work experience in building administration dashboards using Vue.js.Widget-co is a tech startup building a SaaS widget distribution platform. Our mission is to make widgets accessible to everyone, and we do that by providing widgets at low cost to as many under-served communities as possible. We&#8217;re well capitalized and have an exciting opportunity in front of us.Our tech stack is Vue.js and Ruby on Rails, and recent projects include a WYSIWYG website editor, and a dynamic report generator for large data exports. We have a lot of exciting projects on the horizon related to building out our administrative capacities, and I would love to chat with you about them.Do you have some time this week for a quick 30-minute phone call to discuss the role and answer any questions you might have?Best,
Joseph Gefroh
Director of Engineering @ Widget Co
555-123-4567</code></pre><p>The cold emails typically did pretty well &#8212; I had over 90% of candidates I reach out to with a customized email agree to a phone screen. I don&#8217;t know what the industry average is, but I think it helped that I was an engineer reaching out to another engineer, versus a random recruiter.</p><h1><strong>Phone Screen &#8212; How do you determine fit?</strong></h1><p>The purpose of the phone screen is to ensure there is a basic fit between the opportunity and what the candidate is looking for in their next role.</p><p>Make sure there&#8217;s a genuine match. Don&#8217;t use it to coerce the candidate into interviewing for a role that they don&#8217;t really want. That just does the candidate and your company a disservice.</p><h2><strong>Goals</strong></h2><p>I had two desired outcomes for the phone screen:</p><ul><li><p>Get enough information so I could make a determination of fit</p></li><li><p>Give enough information for the candidate to make the determination of fit</p></li></ul><p>Remember &#8212; the candidate is interviewing you as well. You want to make sure they have enough information up-front to be confident in proceeding with the opportunity.</p><h2><strong>Key areas</strong></h2><p>I wanted to ensure the call gave me enough examples about the following areas:</p><ul><li><p>Verbal communication ability</p></li><li><p>More context about the candidate&#8217;s past experience</p></li><li><p>Candidate&#8217;s job preferences</p></li></ul><p>Thinking back to my own experience as a candidate looking for a role, I also wanted to always make sure that the candidate was left informed about the things they wanted to know, in particular:</p><ul><li><p>Details about the hiring process</p></li><li><p>Company&#8217;s compensation ranges</p></li><li><p>Information about the team and environment</p></li></ul><h2><strong>Follow a structure &#8212; it&#8217;ll save your introvert hide</strong></h2><p>As an introvert by nature, I absolutely dread talking to strangers. I forget what to say, and I clam up and become an inarticulate mess sometimes.</p><p>My earliest phone screens were absolutely terrible for both myself and the candidate. I didn&#8217;t want to continue inflicting that on people, so after some experimentation I discovered that having a phone screen structure in front of me during the conversation really helped keep things streamlined and fresh.</p><p>By following a structure, I was able to build up my screening skills to a passable level and eventually got to the point where it wasn&#8217;t a robotic experience, and the conversation flowed more naturally. It also ensured a more consistent candidate experience, which improved the reliability of the interview process across candidates.</p><p>I found the following structure worked for a 30-minute call, with some adjustments depending on the role:</p><ul><li><p>Introduce yourself</p></li><li><p>Put the candidate at ease</p></li><li><p>Tell candidate what to expect</p></li><li><p>Explain the company and mission</p></li><li><p>Explain the role</p></li><li><p>Learn about the candidate</p></li><li><p>Be transparent with compensation</p></li><li><p>Give the candidate an opportunity to ask questions</p></li><li><p>Start the close</p></li><li><p>Explain next steps</p></li><li><p>Close the conversation</p></li></ul><h1><strong>Some example questions</strong></h1><p>I&#8217;ve included a set of example questions in more detail. It&#8217;s not intended to be a checklist, but rather ways you can start and guide the conversation. The call should be engaging, fun, and leave room for open-ended discussions.</p><p>Remember: you&#8217;re not conducting an interrogation!</p><h2><strong>Introduce yourself</strong></h2><pre><code>Hi Martha, this is Joseph, the Director of Engineering at Widget-co. Is this still a good time to call?</code></pre><p>I like to start by ensuring the time is still good for the candidate. Sometimes unexpected things happen that throw schedules off.</p><p>I don&#8217;t want to interview a candidate when they are in a weak position. I want to give them the opportunity to put their best foot forward.</p><p>Reschedule if it isn&#8217;t a good time.</p><h2><strong>Put the candidate at ease</strong></h2><blockquote><p><em>How is your day going so far?</em></p></blockquote><p>I have a bad habit of jumping straight into the meat of the matter. Being on the receiving end of that is a little off-putting, which isn&#8217;t a great candidate experience.</p><p>I try nowadays to start by putting the candidate at ease. Say something pleasant, or share a light-hearted anecdote about your day. Lightly self-deprecating humor can be helpful, but don&#8217;t get carried away. There&#8217;s a very distinct line between telling a candidate<em> &#8220;I accidentally tripped over my dog earlier today and now he&#8217;s giving me the stink-eye&#8221;</em> and <em>&#8220;my dog has cancer and now I have to put him down.&#8221;</em></p><h2><strong>Tell the candidate what to expect</strong></h2><pre><code>I wanted to have this call to explain a bit about the role, our company, and answer any questions you might have. Does that sound OK?</code></pre><p>Having a map of what to expect from the phone call is helpful for a candidate. You don&#8217;t want them distracted from your questions or answers because they&#8217;re waiting for some sort of surprise coding challenge to come up.</p><p>Make sure they know what to expect.</p><h2><strong>Explain the company and mission</strong></h2><pre><code>Widget-co is the world's leading supplier of widgets. We've supplied over 10 billion widgets to underserved communities since 2009, and have goals to deliver 10 billion more within the next 2 years. We're greatly accelerating hiring of our team to ensure we build the best widget distribution platform we can.</code></pre><p>A lot of developers look for companies that have purpose.</p><p>You want to be able to describe why your company is doing what it is doing, and ideally tie it into some social good. If you don&#8217;t have a social good to fall back on, that&#8217;s OK! You can always mention things like technology excellence or some other thing developers would be interested in.</p><p>I found that people opt in to the &#8220;Why?&#8221;, not the &#8220;How?&#8221; when interviewing.</p><p><strong>Don&#8217;t assume knowledge<br></strong>A lot of companies feel like the candidate should know everything about the organization and study up before the first call. They treat any signal that the candidate didn&#8217;t seem to do their legwork as a hiring disqualifier.</p><p>I don&#8217;t agree with that approach. People are busy, and job hunting is hard and confusing. Having an expectation that your company is a special company that candidates must study up on is a bit presumptuous. In some cases I just didn&#8217;t care enough to study up. That was what the phone call was for: to find out more!</p><h2><strong>Explain the role</strong></h2><pre><code>The role I'm calling you about is for a Senior Software Engineer. We're looking for someone who can build out our SaaS web application as a full-stack developer, and help guide our team in effective development practices. Our current tech stack is Vue.js and Ruby on Rails, and our deployment infrastructure is Heroku.</code></pre><p>Explaining the role helps set expectations and makes sure everyone is on the same page. Sometimes wires get crossed and people think a role is one thing vs. another &#8212; a problem that gets worse if you&#8217;re using non-industry standard tiles.</p><p>A quick sentence or two provides plenty of clarity.</p><p>When I was interviewing at my last job search, I ran into a lot of situations where I didn&#8217;t even know what role I was interviewing for during the call. Sometimes I forgot what company was calling, other times the company hadn&#8217;t actually listed a role. Having a recap was really helpful.</p><h2><strong>Learn about the candidate</strong></h2><pre><code>Could you walk me through your past experience so far?It seems you have a lot of experience working with &lt;small|big|cross-functional|agile|lean|etc.&gt; teams. Is that out of preference?What does your ideal development process look like?What are you looking for in your next role?</code></pre><p>Here&#8217;s the point in the conversation you&#8217;ll get to learn about the candidate.</p><p>Gear questions towards understanding the candidate&#8217;s preferences and learning more about the context of their background and experience.</p><p>Give them opportunities to highlight what they&#8217;re proud of, their biggest accomplishments, their most challenging projects, their best and worst environments.</p><p>Remember &#8212; you aren&#8216;t making a skills assessment at this stage. You are trying to see if there is a fit between the opportunity, their background, and their interests.</p><h2><strong>Be transparent with compensation</strong></h2><pre><code>Our current offering is $140k - $150k base, with equity, PTO, insurance, flex-hours, and other benefits. Does that sound in-line with what you're looking for?</code></pre><p>This may not be possible at your company, but if it is, I recommend full transparency with compensation.</p><p>For starters, it prevents both sides from wasting each-others&#8217; times if there&#8217;s a big mismatch in expectations. Additionally, the transparency helps keep you honest, and makes sure that large compensation discrepancies don&#8217;t appear over time for the same role at your company.</p><p>If it&#8217;s not possible, at least provide a range or indicator of some kind (eg. &#8220;we are in line with market&#8221; or &#8220;we&#8217;re within the top 20%&#8221;).</p><p><strong>Don&#8217;t ask about current or former salary</strong><br>This is not only illegal in some states, it is also what I consider a &#8220;jerkface move&#8221;.</p><p>Take it from someone who started their engineering career at $20/hr &#8212; people&#8217;s past salary should not determine their future salary.</p><h2><strong>Give the candidate an opportunity to ask questions</strong></h2><pre><code>I've been taking up a lot of the time in this conversation - I want to leave room for you to be able to get answers to any questions you might have about the role or what we've just talked about.</code></pre><p>By now the candidate must have a dozen questions (or not). Be sure to leave plenty of time for them to ask and receive answers. Remember: they&#8217;re interviewing you, too!</p><p>If you don&#8217;t know the answer, write the question down for next time and get the answer from someone &#8212; chances are another candidate will ask. If you can, follow up later with the candidate with answers.</p><p>Finally, it goes without saying, but be honest. Don&#8217;t make your opportunity or company seem like something it isn&#8217;t. While a little embellishment is fine, don&#8217;t deceive the candidate &#8212; it&#8217;s not great when the candidate&#8217;s first impression when they start work is &#8220;I&#8217;ve been tricked.&#8221;</p><p><strong>Don&#8217;t assume negative intent</strong><br>Some candidates won&#8217;t have any questions at this stage, and that&#8217;s OK. Don&#8217;t hold it against them.</p><h2><strong>Start the close</strong></h2><pre><code>We're right about our scheduled time, I really appreciate you taking the time to talk with me today, Martha! It sounds like there's a great match between Widget-co and what you're searching for in your next role. We'd love to continue the process with you, and if you're interested as well let's schedule next steps.</code></pre><p>If you think there&#8217;s a good match, start guiding the conversation to the close &#8212; getting them into the next step of the pipeline.</p><p>If not, that&#8217;s fine, too:</p><pre><code>Based on our conversation, it sounds like this opportunity isn't quite what you're looking for. I'm not sure you feel the same way, but if you do, let's put a pause on the process. Let's stay in touch in case something changes in the future.</code></pre><h2><strong>Explain next steps</strong></h2><pre><code>Excellent! Our hiring process is actually a pretty simple 3-step process:Our first step was to have our introductory phone call to discuss the role and your background, which we just did!.The next step is to do a brief technical assessment of a code sample you can provide us. After you send us the sample, we'll schedule a 30-minute call w/ an engineer to discuss the various tradeoffs and decisions you made. I'll send you the full details right after this call.The final step is an on-site where you'll get to meet some other members of the team and have deeper in-depth discussions on your background, work experience, and how our company operates. We don't do whiteboard algorithms or brain-teaser style coding challenges, so don't worry about that! The whole process should take less than 2-weeks, or we can accelerate that if you're evaluating other offers or are later in the interviewing stages at another company.</code></pre><p>Explaining next steps has a two-fold benefit. You can sell them on how fast and light the process is, and you also improve the candidate experience by giving them a timetable and clarity. It also gives you an opportunity to sneak in some questions on who your competition is for the candidate.</p><h2><strong>Close the conversation</strong></h2><pre><code>Does that sound good? Awesome! I'll reach out later today by email with details and we can get the next steps scheduled shortly! It was a pleasure chatting w/ you - have a great rest of your day!</code></pre><p>Finally, close the conversation by letting them know that the ball is in your court and when to expect your response.</p><h1><strong>Technical Assessment (Prompt)</strong></h1><p>Immediately after the call, I would email the details of the technical assessment to the candidate.</p><p>I had structured the tech assessment to be lightweight and open-ended. Some people have other life obligations that prevent them from spending days or weekends on extracurricular activities. Others may be applying for several jobs simultaneously, and can&#8217;t realistically do take-homes for all of them.</p><p>By providing flexibility, I wanted to make sure we respected the candidate&#8217;s time. I also wanted to make the process easy &#8212; if the candidate already had a code sample they were proud, I didn&#8217;t want them to waste their time making another one that might&#8217;ve been less impressive.</p><pre><code>Hi Martha,It was great chatting with you earlier! From our conversation it seemed like Widget-co really fits with what you&#8217;re looking for! We&#8217;d like to proceed to the next step, which is the Technical Assessment.Our engineers want to get an idea of your engineering approaches. Could you provide us a link to an open-source project or send us a code sample that showcases your skillsets? Ideally it is a Ruby on Rails or Vue.js project, but any technology will do as long as we can get a sense of your engineering approaches and can have a discussion around it.If not, we have some prompts here you can pick from to submit a quick code sample for us to have a chat about:&lt;link to prompts&gt;After you submit something, let&#8217;s schedule a brief 30-minute phone chat w/ a couple of engineers to talk about the project and the tradeoffs you made.If you have any questions or concerns, feel free to reach out!Best,
Joseph</code></pre><p>The prompts themselves were small projects:</p><ul><li><p>Build a to-do-list library</p></li><li><p>Build a Rails application that saves notes</p></li><li><p>Build a front-end that can consume the Reddit API</p></li><li><p>Refactor this terrible code</p></li><li><p>Design a model layer for this problem</p></li></ul><p>Depending on the role, there might&#8217;ve been a focus on one aspect of another. Each project was expected to take about an hour or two, and included a full initial scaffold to ensure candidates didn&#8217;t get stuck in local environment setup.</p><h1><strong>Tech Screen (Discussion)</strong></h1><p>After they submitted their sample, I&#8217;d have a call to discuss their project in more details.</p><p>The conversation typically focused on fundamentals, tradeoffs, and design approaches more than nitpicks like braces or coding style, unless coding style was significantly lacking to the point of impacting maintainability.</p><p>The discussion was more about whether the candidate was conscious of the pros and cons of the decisions they made, or whether they simply did them without intent or thought.</p><p>I avoided technical trivia at all costs, unless they were fundamental concepts to the technology. For example, asking about Ruby Hash constructor initialization quirks wasn&#8217;t a legitimate question to ask. Asking about why they chose a hash over a list was perfectly legitimate. Asking &#8220;why&#8221; also allowed me to see how they handled conflicting viewpoints and challenges.</p><p><strong>I never asked whiteboard-style algorithm / challenge questions.</strong> I&#8217;ve found them to provide no signal whatsoever, and I try not to create an interview process that I wouldn&#8217;t be able to pass myself.</p><h2><strong>Leave room for questions</strong></h2><p>Leave some room at the end for the candidate to ask questions about the company&#8217;s stack, technology, development process, etc.</p><h1><strong>Group Screen</strong></h1><p>The group screen was a way for the candidate to meet people they would potentially be working with, and vice versa. It was structured, but not overly so, with gaps to enable conversation to flow.</p><p>The most important part of the group screen was the cross-functional element. I tried to get evaluators from as many non-engineering departments as possible, especially Design, Product Management, and Project Management.</p><p>To keep things simple, it was just 2&#8211;3 people at a time, rotating in or out over a period of a couple of hours, evaluating the candidate from their perspective and giving the candidate an opportunity to ask questions about their day-to-day.</p><p>There was a short technical component to it as well &#8212; engineers could go discuss some specific area or concept with them in greater detail and bandwidth than they could over a phone-call. For especially senior roles, we would do a mutual software design session, where we whiteboarded some architectural ideas together.</p><p>I found it helpful to not have the candidate go to the whiteboard, but to have one of the evaluators do so while the candidate drove the solution process. This took negative pressure off of the candidate that can be caused by &#8220;all eyes on me&#8221; situations.</p><h2><strong>Leave room for questions</strong></h2><p>Once again &#8212; leave room for questions. This is the candidate&#8217;s first contact with non-engineering groups in the organization, and getting their perspective may be useful to them.</p><h1><strong>Decision</strong></h1><p>Finally &#8212; it&#8217;s time to make a decision. Get everyone in the room together. Ask everyone what they thought. Ask whether they saw any red, yellow, or green flags.</p><p>If you can, have everyone grade the candidate based on a rubric of some kind. What goes on that rubric really depends on your organization&#8217;s culture and needs, but I always recommend starting with your core values and working from there.</p><p>Areas can include:</p><ul><li><p>Communication</p></li><li><p>Collaboration</p></li><li><p>Technical skills</p></li><li><p>Core Values</p></li><li><p>Initiative</p></li><li><p>Continuous Improvement</p></li><li><p>Potential</p></li></ul><h2><strong>Don&#8217;t make the rubric the sole judge</strong></h2><p>Note: the rubric is not a math problem that determines whether you should hire or not hire someone after you fill in the blanks &#8212; you likely don&#8217;t have enough pipeline to reject people that arbitrarily.</p><p>Use the rubric to inform and generate the discussion amongst the hiring committee. Of key focus here is significant deviations in scoring or significant alignment in scoring.</p><h2><strong>Make the call</strong></h2><p>Finally, remember that hiring is not a democracy &#8212; at the end of the day, the engineering leader must make the decision.</p><p>As always:</p><ul><li><p>Never hire jerks</p></li><li><p>Never hire dishonest people</p></li></ul><h1><strong>Offer</strong></h1><p>Congratulations! The candidate made it to the offer stage. The final step here is to make an offer.</p><pre><code>Hi Martha!I&#8217;m really pleased to offer you the role of Senior Software Engineer. The team really enjoyed chatting with you and we felt there&#8217;s a strong match between what you&#8217;re looking for and what we need.Attached are the details of your offer:&lt;link to offer letter&gt;We&#8217;d love to hear back from you soon, but take the time you need to make a decision that is good for you!If you have any questions or want to hop on a call to discuss the offer &#8212; let me know!Looking forward to hearing back,Joseph</code></pre><h2><strong>Avoid exploding offers</strong></h2><p>An ultimatum is not a great way to start a relationship. If you do have some sort of urgency, make note of it but also give as much time to the candidate as possible.</p><h2><strong>Don&#8217;t let it get stuck in paperwork</strong></h2><p>Once you&#8217;ve made the decision, you should be able to send the offer our immediately. This means you should have already done the leg work to get budget approval, and have paperwork drawn up ready to fill in the blanks and sign.</p><p>The worst feeling in the world is when you have a candidate where you&#8217;re both excited about the match only to have it fall through because the paperwork got stuck in HR.</p><h1><strong>Rejection</strong></h1><p>Not all candidates are going to pass the bar. Rejections are hard, and you want to make sure that you reject gently.</p><pre><code>Hi Martha,We appreciate you taking the time to meet the team and tell us about your background. Unfortunately, we have decided to not proceed with your candidacy at this time. While the team felt you had great front-end engineering skills, the role required someone with more expertise in full-stack development and back-end data modeling.We wish you the best of luck in your job search.Joseph</code></pre><h2><strong>Should you give feedback?</strong></h2><p>It&#8217;s a tough one. Rule number one is: don&#8217;t open up your company to lawsuits.</p><p>With that said, candidates can grow tremendously from interview feedback. Provide useful feedback to the candidate if you are confident they&#8217;ll accept it graciously. I find candidates that ask for feedback are much more open to receiving it than giving unsolicited feedback.</p><p>As an anecdote, I once rejected a candidate for being too junior. The way she incorporated the feedback we gave her was so impressive that we later hired her immediately when a new position opened up a short time later.</p><h1><strong>Some General Advice</strong></h1><h2><strong>Involve the Team</strong></h2><p>I always think it is a good idea for the candidate to be able to meet with the team they&#8217;re going to be working with.</p><p>It&#8217;s good for both parties: the team can figure out if the candidate will work well with them, and the candidate can figure out if they would like working with the team.</p><p>This is harder to do the larger the team gets &#8212; in this case, choose a few members who represent your organizational values as the representatives of the larger organization.</p><h2><strong>Make the process generally consistent</strong></h2><p>The best thing you can do for your hiring process is to make it generally consistent.</p><p>It&#8217;ll help you compare experiences across candidates, and give you signal needed to fine-tune the process.</p><p>Use rubrics, follow a loose structure, and try to make the process the same from candidate to candidate.</p><h2><strong>Keep the candidate experience in mind</strong></h2><p>Whenever you add a process gate or hoop the candidate has to jump through, always take time to consider the candidate&#8217;s experience and context.</p><p>Are they busy working a job already? Are they applying for more than one position? Are they in a rush, or do they want to take their time?</p><p>If you don&#8217;t keep the candidate in mind, you may create a process that can&#8217;t be passed by people in many different life situations, greatly limiting your access to talent.</p><p>If your hiring process is accidentally designed to only be passable by unemployed engineers with no life obligations fresh out of an academic program, you&#8217;re only going to be able to hire unemployed engineers with no obligations fresh out of an academic program.</p><h2><strong>People don&#8217;t need to be perfect</strong></h2><p>Looking for the perfect candidate is foolhardy. Nobody is perfect, and you&#8217;ll pass on some great talent.</p><p>I once had a committee give a thumbs down to a candidate because they felt he wasn&#8217;t as friendly as they liked. I had further discussions with the candidate, and made the decision to over-rule the group&#8217;s consensus and make an offer. The candidate ended up being a fantastic employee who was incredibly collaborative and people ended up liking him after all.</p><p>Your job isn&#8217;t to hire the perfect candidate, your job is to hire a candidate that fits well into organization and team structure.</p><h2><strong>Stay legal</strong></h2><p>There&#8217;s certain areas you should never, ever, ever discuss or ask about in an interview. Things such as:</p><ul><li><p>Age</p></li><li><p>Gender</p></li><li><p>Race</p></li><li><p>Familial status</p></li><li><p>Religion</p></li></ul><p>etc. are all verboten, at least in the US. This also includes proxy questions &#8212; if you can&#8217;t ask about age, then asking about when they graduated high school and calculating their age is also prohibited.</p><p>Be familiar with <a href="https://www.eeoc.gov/prohibited-employment-policiespractices">what is prohibited</a>, and avoid these situations.</p><h2><strong>Hire for the team</strong></h2><p>Being knowledgable of what your team truly needs opens up the playing field significantly in terms of your candidate pool.</p><p>Instead of looking for the ideal candidate, look for a realistic one. This means that you can hire someone weak in one area and it&#8217;s <em>totally ok to do so</em> if you have a team that is strong in that area.</p><p>Remember: you&#8217;re not trying to build an individual, you&#8217;re trying to build a team.</p><h2><strong>Don&#8217;t look for reasons to reject, look for reasons to hire</strong></h2><p>Everyone has imperfections, and it&#8217;s easy to say &#8220;no&#8221; just because a candidate has one or two weaknesses.</p><p>You&#8217;ll get a lot of false negatives that way, and because you&#8217;re reading this I&#8217;m assuming you don&#8217;t have time or the bandwidth to have that many of them.</p><p>Clearly reject people if the weakness is a critical one (eg. inability to collaborate, very weak technical skill, etc.), but be judicious.</p><p>Ask yourself:</p><ul><li><p>Can the weakness be covered by other members of the team?</p></li><li><p>Do they provide strength in an area the team is lacking?</p></li><li><p>Are they collaborative?</p></li><li><p>Do they have significant potential, and growth trends?</p></li><li><p>Is the weakness due to inexperience, or character?</p></li><li><p>Does the candidate provide a perspective or viewpoint that is missing from the organization?</p></li></ul><h2><strong>Create a process, then delegate</strong></h2><p>You don&#8217;t have to do everything by yourself.</p><p>If you make it clear what you&#8217;re looking for and have a consistent process, you can start delegating stages of the pipeline to others with some minor training.</p><p>By the time the process was in full-swing, I had delegated the tech screens to engineers, the scheduling being covered by internal admins, and some of the souring being done by HR working to help improve recruiting capacity. All of this gave me back valuable time to work on other areas of the company.</p><p>However, such clarity is only possible by defining the process, providing training, and trusting others with the responsibilities. Make sure you do this if you want to scale this process out beyond just yourself.</p><h2><strong>That&#8217;s it</strong></h2><p>I hope this advice is helpful for those busy engineering leaders who feel lost or stuck in how to hire.</p><p>Keep in mind: I&#8217;m not a professional recruiter. I don&#8217;t know what an industry-standard hit-rate for a cold intros is, or whether there&#8217;s certain messaging that works better or not, or whether this process is even scalable.</p><p>If you know of a better process, implement it! If something in this doesn&#8217;t work for your specific situation, change it! This is a starting point to an effective hiring process, not the destination, and is intended to help those with no process at all get off the ground with as little friction as possible.</p>]]></content:encoded></item><item><title><![CDATA[On hiring - Choosing the right way to assess technical engineering skills in candidates]]></title><description><![CDATA[The tech industry is suffering from terrible technical interviews that lead to false negatives and hurt candidates. We can do better &#8212; here&#8217;s how.]]></description><link>https://blog.jgefroh.com/p/hiring-processes-choosing-the-right</link><guid isPermaLink="false">https://blog.jgefroh.com/p/hiring-processes-choosing-the-right</guid><dc:creator><![CDATA[Joseph Gefroh]]></dc:creator><pubDate>Sat, 10 Feb 2024 20:29:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fSnd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8398729-1cdf-4f24-bf18-7f5051c711d7_1400x687.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fSnd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8398729-1cdf-4f24-bf18-7f5051c711d7_1400x687.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fSnd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8398729-1cdf-4f24-bf18-7f5051c711d7_1400x687.webp 424w, https://substackcdn.com/image/fetch/$s_!fSnd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8398729-1cdf-4f24-bf18-7f5051c711d7_1400x687.webp 848w, https://substackcdn.com/image/fetch/$s_!fSnd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8398729-1cdf-4f24-bf18-7f5051c711d7_1400x687.webp 1272w, https://substackcdn.com/image/fetch/$s_!fSnd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8398729-1cdf-4f24-bf18-7f5051c711d7_1400x687.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fSnd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8398729-1cdf-4f24-bf18-7f5051c711d7_1400x687.webp" width="1400" height="687" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8398729-1cdf-4f24-bf18-7f5051c711d7_1400x687.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:687,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:49890,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fSnd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8398729-1cdf-4f24-bf18-7f5051c711d7_1400x687.webp 424w, https://substackcdn.com/image/fetch/$s_!fSnd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8398729-1cdf-4f24-bf18-7f5051c711d7_1400x687.webp 848w, https://substackcdn.com/image/fetch/$s_!fSnd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8398729-1cdf-4f24-bf18-7f5051c711d7_1400x687.webp 1272w, https://substackcdn.com/image/fetch/$s_!fSnd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8398729-1cdf-4f24-bf18-7f5051c711d7_1400x687.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I had completed a month-long job search in which I went through 75 interviews, resulting in 7 offers. The technical interviews I went through could be classified as good or terrible.</p><p><strong>The good ones were great. </strong>They were engaging, fun, and left room to interact with people and go through the thought process and tradeoff discussions together. They felt like conversations and collaborative problem solving.</p><p><strong>The terrible ones were truly terrible. </strong>Some asked me to invest five hours into take-home projects, despite the fact I had a job as well as an extensive portfolio of open-source side projects. Others ask me to spend hours to complete technical assessments that ended up not assessing anything related to the role. Others asked me to refactor or code, but then provided only skeleton boilerplate code that left little room to actually demonstrate engineering skills and technical knowledge.</p><p>As someone who has been on both sides of the hiring aisle many times, it pains me to see such terrible interviews being inflicted upon candidates and companies alike.</p><h2><strong>It does lasting damage</strong></h2><p>Bad interviews hurt candidates, who have to be exposed to stressful situations that leave them feeling defeated and dejected, even if they would make otherwise excellent hires.</p><p>They also hurt the companies themselves by extending the time it takes for them to hire, as well as leaving them with poor reputations amongst the candidates who have to endure it.</p><h2><strong>The process is broken</strong></h2><p>Companies simply don&#8217;t know what they are hiring for. Because of this, they use the wrong or ineffective technical assessments and evaluate the wrong skills.</p><h1><strong>Know the skills you&#8217;re hiring for</strong></h1><p>Did you know there&#8217;s differences between the following?</p><ul><li><p>Coding</p></li><li><p>Programming</p></li><li><p>Engineering</p></li><li><p>Architecting</p></li><li><p>Developing</p></li></ul><p>Are you using the appropriate technical interview questions to identify the appropriate skills needed for the specific role you are hiring for?</p><h1><strong>Coding</strong></h1><p>Coding is the mechanical process of entering code instructions into the computer. Familiarity with language syntax, standard libraries, etc. are the skillsets involved here.</p><h2><strong>Examples:</strong></h2><p>If you&#8217;re asking someone to write a for-loop that prints the numbers 1 through 10, you&#8217;re testing their coding skills.</p><pre><code>(1..10).each { |i| puts "#{i} " }# 1 2 3 4 5 6 7 8 9 10</code></pre><p>Problems that assess coding skills often:</p><ul><li><p>Have a single method that has a deterministic result</p></li><li><p>Have a well-defined or easily discoverable algorithm</p></li><li><p>Have well-defined inputs</p></li><li><p>Have well-defined outputs</p></li></ul><p>The prompt might look like:</p><pre><code>def fizzbuzz(n)
  # Print fizz if the answer is divisible by 10
  # Print buzz if the answer is divisible by 5
end</code></pre><p>The above example has a very clear input, a very clear process, and a very clear output.</p><p>Even in cases where the algorithm is not explicitly defined, it is still relatively simple &#8212; there&#8217;s no complex calculations, forward-looking/backwards-looking logic, or gotchas.</p><h2><strong>What does this tell you about the candidate?</strong></h2><p>Candidates performance in coding gives a few clear signals:</p><ul><li><p>Are they aware of the language constructs available to them?</p></li><li><p>Can they take a sequence of defined steps and input them into the computer?</p></li><li><p>Can they translate the real-world steps into actual, working code?</p></li></ul><p>However, there&#8217;s also some noise. Performance doesn&#8217;t necessarily indicate:</p><ul><li><p>Whether people can structure programs maintainably</p></li><li><p>Whether people can implement business requirements</p></li><li><p>Whether people can optimize systems</p></li><li><p>Whether people can solve problems</p></li><li><p>Whether people understand the technology, how to integrate with them, or the tools available to them</p></li></ul><p>Coding assessments are great for filtering out people who don&#8217;t know <em>anything</em> about writing computer programs.</p><h1><strong>Programming</strong></h1><p>Programming is the act of creating a sequence of steps that can be translated into code to solve the problem at hand. Knowing algorithms, the various attributes of data structures, and problem analysis techniques are the name of the game here.</p><p>The solution space for a good programmer is optimal runtimes, minimal growth curves, and low memory and processor usage.</p><p>Also important to note is that there are two rather distinct types of programming problems.</p><p><strong>Simpler programming problems</strong> like &#8220;check if this string is an anagram of another string&#8221; can be done with basic problem solving.</p><p><strong>Advanced programming</strong> <strong>problems</strong> like &#8220;what is the minimum number of moves this knight must make before they have visited each square at least once?&#8221; requires a certain level of mathematical or algorithmic knowledge that many find difficult to derive or use in an interview setting.</p><h2><strong>Examples</strong></h2><p>Programming questions are often arbitrary problems with some sort of brute-force solution, and a hidden optimal solution.</p><div class="paywall-jump" data-component-name="PaywallToDOM"></div><p>The problems often are abstract or don&#8217;t particularly represent any real-world use-case.</p><p>The solution itself may be hidden behind a &#8220;gotcha&#8221; &#8212; a solution you would only reasonably know if you had seen it before.</p><p>Programming problems may read like below:</p><ul><li><p>Write a function that finds the length of the largest substring without repeating characters.</p></li><li><p>What is the minimum number of moves this knight must make before they have visited each square at least once?</p></li><li><p>Write a function to sort this list of numbers.</p></li></ul><p>The medium is often a whiteboard, coding pad, or an online assessment. This is the kind of dreaded &#8220;whiteboard interview&#8221; that many developers hate but the industry embraces.</p><h2><strong>What does this tell you about the candidate?</strong></h2><p>The signal:</p><ul><li><p>Can they develop or optimize algorithms to manipulate data in an effective, efficient way?</p></li><li><p>Can they optimize programs?</p></li></ul><p>The noise:</p><ul><li><p>It does not show you whether people can structure programs maintainably.</p></li><li><p>It does not show you whether people can implement business requirements.</p></li><li><p>It does not show you whether people can solve engineering problems.</p></li><li><p><em>It does not actually show you whether people can solve programming problems, either.</em></p></li></ul><h2><strong>Wait &#8212; what about that last point?</strong></h2><p>It turns out the signal here may still be noise.</p><p>You see &#8212; there&#8217;s only two ways to solve these programming problems: you have to derive the algorithm on the fly, or have to know it already.</p><p><strong>This is interesting. </strong>By studying specifically for these programming questions, you can excel at them. But, you can study them in two ways &#8212; either by truly learning and knowing how to derive the solution, or rote memorization of the solutions and a bit of luck encountering a known problem.</p><p>This assessment style specifically incentivizes candidates to lie and pretend they haven&#8217;t seen the problem before to better emphasize their problem-solving skills. At that point, is there an actual signal?</p><p>Additionally, by introducing the element of studying, this test specifically favors candidates who have this information is fresh in their minds, such as recent graduates of computer science programs. It actively disfavors people who have been in the industry gaining experience building things, or people without the time to study. It is a hidden, unspoken, albeit indirect bias against age and people with families or other commitments.</p><p>All the worse, <strong>most companies don&#8217;t actually need this kind of problem solving ability.</strong> With the exception of some larger, data-heavy, at-scale organizations like Google or Amazon, what most companies really need are people who can build features, structure systems, and make them adaptable to changing business requirements.</p><p>In these cases, such programming problems are <strong>a valueless assessment</strong>. These solutions do not translate into effective problem-solving at the product and systems level. You are not FAANG company, so stop interviewing like them.</p><p>This is also not mentioning the fact that computer scientists have spent decades of their lives originally developing these algorithms, and these whiteboard interviews often expect you to derive the solution in 30 minutes.</p><h2><strong>&#8220;We need to figure out if the candidate can code&#8221;</strong></h2><p>This is often the go-to reason when I ask companies why they do these style of interviews. What people forget when designing their technical interview questions: coding and programming are<em> two separate skills.</em></p><p><strong>They incorrectly conflate the two. </strong>Programming implies coding, but you can be a great programmer and a terrible coder, or vice versa.</p><p>Let&#8217;s say you are an algorithm developer that knows the algorithm, but you&#8217;ve never coded a single instruction in your life. In this situation, you are not a coder, but you are a programmer.</p><p>Being a terrible coder is often also be a temporary state of being and is contextual. For example, I know Java, but if you asked me to develop in C#, I will be a terrible coder until I can ramp up in the available language constructs, which may end up being a matter of a week or two.</p><h2><strong>This is where the industry is getting it wrong.</strong></h2><p>Most technical interviews leveraging Leetcode, HackerRank, CoderPad, et. al are testing algorithmic skills first and foremost. They aren&#8217;t actually testing knowledge and experience coding, engineering, or using and incorporating technologies into systems, as many believe.</p><p>These algorithmic aspects are where most people trip up in their interviews. If they can&#8217;t derive the algorithm, they can&#8217;t convert it into machine instructions, even if they could have coded it well had they known the algorithm. You can tell this is happening when the candidate seems to be writing tons of code perfectly, but can&#8217;t seem to get the write output.</p><p>It makes sense to use algorithmic questions if you are hiring people to develop algorithms like Google, but I guarantee most companies are not. I&#8217;d personally reject any code where a developer on my team tried to write their own sorting algorithm instead of calling <code>Array.sort()</code>.</p><p>Companies using these kinds of programming tests then receive a lot of false negatives. They might feel great about having such as high bar, but it is artificial.</p><p>Maybe the candidates aren&#8217;t as strong at programming, but are fantastic engineers and coders. You&#8217;d never know, because your interview doesn&#8217;t even test for engineering skills, and the problem doesn&#8217;t give space to demonstrate coding ability until you first solve the problem of the algorithm.</p><p><strong>Want to find out if this is the case for your candidates?</strong> Write out the solution sequence in human-readable sentences in your problem description, and see how many more candidates suddenly start passing your test with flying colors.</p><p>What I found while hiring is that people who end up being excellent engineers often do terribly in the programming tests. They hadn&#8217;t been studying how to solve arbitrary problems that have already been solved. They&#8217;re not fresh out of their university&#8217;s computer science program. They&#8217;ve been out in the field building systems. Their algorithmic problem-solving skills may have started to stagnate, because those skillsets are completely separate.</p><h1><strong>Engineering</strong></h1><p>Engineering is the process of identifying and structuring components into a system that accomplishes a goal and fits within a set of constraints within a given context.</p><p>This is the realm of data models, architectures, software designs, interaction structures, data flow management, etc. Engineers ensure your system doesn&#8217;t topple over, is secure, can flex and bend to meet changing requirements, and fulfills your business&#8217; operational requirements.</p><h2><strong>Don&#8217;t automated online assessments evaluate this?</strong></h2><p>HackerRank and CoderPad don&#8217;t test for this. They simply can&#8217;t &#8212; at least not yet.</p><p><strong>Engineering is part art and part science.</strong> It&#8217;s not something that can be filtered for with a multiple-choice question or demonstrated in a single function you can write in an hour.</p><p>It requires deep understanding of the business and context, analysis, and back-and-forth discussions to identify potential change points and edge cases.</p><h2><strong>A good example of a bad question</strong></h2><p>One question I saw was a multiple-choice question with a 60-second timer that went something like this:</p><pre><code>1. If you had to model users sending messages, which would be best?a. A User table and Message table where Message has a sender_id and receiver_id
b. A Message table where Message has the sender's name and receiver's name.
c. A Message table that has the sender_id and receiver_id, sender_name and receiver_name.
d. A Message table where the message has the name of the sender.</code></pre><p><strong>The problem? </strong>There is no such thing as an absolute <em>best </em>in engineering. There is only <em>contextually appropriate</em>. Any one of these answers could be a great solution depending on the constraints in the environment, which include business factors like time, cost, and available skill level. They might all even be unfit solutions for the situation at hand.</p><p><strong>Solution A </strong>was the &#8220;correct&#8221; answer that the system wanted me to put in, but there&#8217;s many scenarios in which it might be a bad decision. What if you had a group chat? Would you want to duplicate every single message to every single person? What if you wanted to send messages to people without a user account?</p><p><strong>Solution B</strong> can be a good solution in some cases. What if you wanted an anonymous drop-off messaging system, without any tracking? What if the sender and receiver are groups?</p><p><strong>Solution C </strong>can result in duplicate data, but also provides some advantages. If sender name changes are common, and you want a snapshot history of it, storing the name at that moment in time with the message would allow you to fulfill that requirement. Since the data is denormalized, the resulting reads are greatly sped up if performance is a factor.</p><p><strong>Solution D </strong>might be an acceptable solution in older systems that don&#8217;t have the capacity to track users separately from the message, or if you need to track the message in its entirety. If the system is sending/receiving a text message from a single number, and you need to track the contents of what you sent while notifying the recipient, you&#8217;d have to add the name to the message or at least some identifier.</p><p>There&#8217;s also a ton of other potential solutions, many that might involve not having tables at all! Document stores are a thing, as is peer-to-peer ephemeral messaging.</p><h2><strong>The point</strong></h2><p>The point of this is that the context can change the &#8220;correct&#8221; answer wildly, and there&#8217;s many assumptions baked into even this simple, generic question. Someone who immediately chose A as the correct answer without even considering any of these factors is likely NOT going to be the kind of engineer you&#8217;d want.</p><p>Context is everything, and there is no &#8220;best&#8221; solution.</p><h2><strong>So, how do you evaluate this skill?</strong></h2><p>You identify the signal through:</p><ul><li><p>Discussions on tradeoffs, factors, decision-making on technical projects, both past and hypothetical.</p></li><li><p>Looking at past work, projects, and experience.</p></li><li><p>Looking for deep understanding of interactions, structure, and fundamentals.</p></li><li><p>Discussions about implementations, technology choices, what-ifs, etc.</p></li></ul><p>This will show you whether they understand the tradeoffs and factors and structures they worked with, and whether they can apply and change their library of knowledge and tools to fit your business context.</p><p>The signal:</p><ul><li><p>Do they know how to make effective technical decisions?</p></li><li><p>Do they know what tools are available to them to best structure the system?</p></li></ul><p>The noise:</p><ul><li><p>It doesn&#8217;t show whether people can actually implement the system they talk about.</p></li><li><p>It doesn&#8217;t show whether the system can be built or provides value in the specific situation.</p></li></ul><h1><strong>Developing</strong></h1><p>Developing is the ability to build and iterate on a product or system to accomplish a business outcome.</p><p>Developing is specifically interested in <strong>value delivery</strong>. An effective developer may use the worst possible technical solution if it means maximizing the amount of value delivered.</p><p>They&#8217;ll respond to customer demand and keep the impact in mind, and ensure that the overall goals of the project are actually completed.</p><p>The noise:</p><ul><li><p>It doesn&#8217;t show whether the candidate can build systems that are easy to maintain or change in the future.</p></li><li><p>It doesn&#8217;t show whether the candidate can build reliable, secure, safe systems.</p></li><li><p>It doesn&#8217;t show whether the candidate can actually implement or solve more difficult technical problems.</p></li></ul><h2><strong>How do you hire for this?</strong></h2><p>Testing for this involves holistic discussions of problems and solutions. Do they ask questions that keep in mind various groups of stakeholders? Do they think iteratively and incrementally? Do their solutions consider many aspects, not just technical?</p><p>Past experience here is really visible too &#8212; do they have experience building and delivering things into the hands of users? Previous startup or consultancy experience can be a part of a successful track record.</p><p>Note also that there is significant overlap in product management skills here.</p><h1><strong>Hiring</strong></h1><p>Let&#8217;s say we are looking for someone to build us a software system that allows people to log in and do stuff.</p><h2><strong>What am I looking for?</strong></h2><p><strong>I&#8217;m not going to look for a fantastic coder. </strong>The scope of coding as it pertains to things like HackerRank is too small for what I am trying to do. I need people who can think holistically and act far beyond a known input and output for a single function. That&#8217;s engineering, not coding.</p><p><strong>I&#8217;m not going to look for a great programmer. </strong>Problems like authentication, interfaces, dashboards, etc. have already been solved. I&#8217;m not solving novel problems, I&#8217;m structuring, re-organizing, and integrating parts to combine a set of old solutions in a new way that provides value.</p><p><strong>I&#8217;m going to look for a software engineer </strong>with some software development skills and enough coding chops to build the idea they came up with.</p><h2><strong>What&#8217;s enough?</strong></h2><p><strong>Coding &#8212; </strong>how much is just enough? For this situation, it would be positive answers to the following:</p><ul><li><p>Does the candidate know what variables, methods, classes, etc. are?</p></li><li><p>Is the andidate aware of the standard and common libraries?</p></li><li><p>Does the candidate know how to install and use dependencies?</p></li><li><p>Is the candidate familiar with the ecosystem?</p></li></ul><p>These are all things you can get from a 5 minute conversation, or a brief glance at a personal project.</p><p><strong>Development</strong> &#8212; how much is enough?</p><ul><li><p>Does the candidate know how to track and interpret a user&#8217;s flow through the system through analytics services or interaction events?</p></li><li><p>Does the candidate know how to refine ambiguous asks down into a small, minimum deliverable you can use to validate the solution?</p></li><li><p>Does the candidate know how to understand the intent of the customer and mold the technology in the direction of their overall goals?</p></li></ul><p>These are things you can find by asking the candidate about how they approach thinking about the product, user, and software.</p><p><strong>Engineering</strong> &#8212; how much is enough?</p><ul><li><p>Does the candidate know how to optimize a system, and what levers are available to pull for different constraints and use cases?</p></li><li><p>Does the candidate know how to model data in a way that can absorb change and perform effectively under multiple conditions?</p></li><li><p>Does the candidate know how to structure your code in a way that makes things maintainable and extendable?</p></li></ul><p><strong>Programming</strong> &#8212; how much is enough?</p><ul><li><p>Does the candidate know the ways you can leverage common data structures like lists and maps?</p></li><li><p>Does the candidate know how to read an algorithm and identify is growth rate and runtime efficiency?</p></li></ul><p>You&#8217;ll notice that&#8217;s not much. Most performance related items are constrained by the architecture and system design, not by the algorithm. Even if it was, it would be easily resolved by some straightforward, basic algorithmic practices that don&#8217;t require significant programming knowledge.</p><h1><strong>Structure your assessments correctly</strong></h1><p>If you&#8217;re hiring a coder, you can use simple, well-defined problems. You can also do take-home projects, or real-time refactoring questions (provided there is enough &#8220;meat&#8221; to refactor).</p><p>If you&#8217;re hiring for a programmer, continue doing the Leetcode, HackerRank-style questions.</p><p>If you&#8217;re hiring an engineer, you start entering the realm of conversational interviews. How candidates think about factors, tradeoffs, holistic thinking, and decision-making can only be discovered by interacting with them candidate.</p><p>If you&#8217;re hiring a developer &#8212; look at their past work, or talk to them.</p><h1><strong>Hiring for the team</strong></h1><p>The final aspect of all this is that you need to hire for what the team needs.</p><p>Great teams are balanced as a whole, with people who work well together and have strengths and weaknesses overlapping. Synergy is a common buzzword in the business world, but for good reason: great teams are greater than the sum of their parts.</p><p>If your team is full of architects or engineers, you&#8217;ll likely want to balance it out with coders who can execute and crank out features.</p><p>If your team is full of coders who crank out features, you&#8217;ll want to hire an engineer to balance things out and help provide long-term stability and mature technical capabilities over time.</p><p>If your team is full of people who build things, but performance is a concern, a programmer can help come in and optimize things.</p><p>If your team is full of builders, or you need someone to bootstrap an idea and iterate on it in the interests of the business, hire a developer.</p><h1><strong>Hire right</strong></h1><p>Ultimately, effective technical interviews comes down to knowing what you&#8217;re hiring for. Without that, you can&#8217;t actually ask the questions that enable you to identify whether the candidate has the right skills.</p><p>Don&#8217;t waste time hiring for the wrong skills. Learn what you and your team need, and then structure your interview to hire for the right skills.</p>]]></content:encoded></item><item><title><![CDATA[On organizational structures — the QRF team model to crush interruptions]]></title><description><![CDATA[Take control of engineering team interruptions and prevent them from happening ever again.]]></description><link>https://blog.jgefroh.com/p/engineering-org-structures-the-qrf-team-model-7b92031db33c</link><guid isPermaLink="false">https://blog.jgefroh.com/p/engineering-org-structures-the-qrf-team-model-7b92031db33c</guid><dc:creator><![CDATA[Joseph Gefroh]]></dc:creator><pubDate>Tue, 15 Feb 2022 06:36:26 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9d6f953a-8de5-499b-8c90-a82640facb9b_800x313.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yx9r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcceb897f-1ba9-4147-90c0-b6e165a08b1b_1008x395.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yx9r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcceb897f-1ba9-4147-90c0-b6e165a08b1b_1008x395.png 424w, https://substackcdn.com/image/fetch/$s_!yx9r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcceb897f-1ba9-4147-90c0-b6e165a08b1b_1008x395.png 848w, https://substackcdn.com/image/fetch/$s_!yx9r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcceb897f-1ba9-4147-90c0-b6e165a08b1b_1008x395.png 1272w, https://substackcdn.com/image/fetch/$s_!yx9r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcceb897f-1ba9-4147-90c0-b6e165a08b1b_1008x395.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yx9r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcceb897f-1ba9-4147-90c0-b6e165a08b1b_1008x395.png" width="1008" height="395" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cceb897f-1ba9-4147-90c0-b6e165a08b1b_1008x395.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:395,&quot;width&quot;:1008,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yx9r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcceb897f-1ba9-4147-90c0-b6e165a08b1b_1008x395.png 424w, https://substackcdn.com/image/fetch/$s_!yx9r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcceb897f-1ba9-4147-90c0-b6e165a08b1b_1008x395.png 848w, https://substackcdn.com/image/fetch/$s_!yx9r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcceb897f-1ba9-4147-90c0-b6e165a08b1b_1008x395.png 1272w, https://substackcdn.com/image/fetch/$s_!yx9r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcceb897f-1ba9-4147-90c0-b6e165a08b1b_1008x395.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A team model for under-resourced, interrupted startups.</figcaption></figure></div><p>As an engineering leader, I&#8217;ve found many products and engineering teams at startups struggle with being agile.</p><p>The shortcuts the startup took early on getting to the point where they could grow had benefits, but also costs. At some point, enough technical, capability, knowledge, and organizational debt has been created such that there is a constant stream of bugs, internal asks, interruptions that only the engineering team can handle.</p><p>These ask come in at a rapid pace, sometimes several days, greatly disrupting the work of an engineer. Even if each interruption only takes a few minutes, the context switch alone can destroy any hope of productivity for that afternoon.</p><p>How can an organization handle these in a way that makes sense?</p><div><hr></div><h3>Enter the QRF&nbsp;Team</h3><p>The QRF model works incredibly well in certain contexts without the negative drawbacks of other approaches.</p><h4>What is&nbsp;it?</h4><p>You split your engineering organizational unit into two discrete, independent teams:</p><ul><li><p>Team 1, designated as the Main Effort</p></li><li><p>Team 2, designated as the QRF</p></li></ul><p><strong>Team 1&#8217;s charter is simple: build what&#8217;s on the roadmap.</strong> They act as a typical product development team does, working on high-value, high-priority items at a road mapped, predictable tempo, using whatever framework or methodology is appropriate&#8202;&#8212;&#8202;eg. Scrum or Kanban.</p><p>In short&#8202;&#8212;&#8202;they work on the main effort of the company.</p><p><strong>Team 2&#8217;s mission is to tackle any item that would cause an interruption to Team 1</strong>. They act as the QRF, the Quick Reaction Force, to jump in front of any problems that would otherwise interrupt the sprint. In short&#8202;&#8212;&#8202;they prevent interruptions and act as a supporting effort.</p><div><hr></div><h3>QRF solves problems found in other approaches</h3><p>The reason QRF works is that the other commonly adopted &#8220;agile&#8221; approaches have fundamental drawbacks that limit their effectiveness in certain cases.</p><p>These approaches include:</p><ul><li><p>Working only on the valuable items</p></li><li><p>Putting it in the next sprint</p></li><li><p>Setting aside a set capacity/timebox per sprint</p></li></ul><h3>Why working only on valuable items&nbsp;fails</h3><p>What will win a prioritization argument:</p><ul><li><p>Setting up a user account</p></li><li><p>An idea that can generate $1,000,000,000</p></li></ul><p>The next billion-dollar idea will always win any prioritization argument, because it&#8217;s an unknown, idealized, easily manipulated projection. However, focusing exclusively on innovating with new product ideas means your current customers are not being served.</p><p>This is the delta between innovation and operation: you need both to thrive in the market, but most product prioritization arguments devalue operations. Few product managers want to work on an incrementally valuable item when the option is an exponentially valuable one.</p><p>This means the incremental things: internal tooling, bug fixes, automation, tech debt, etc. all fail to be prioritized when viewed exclusively from the lens of &#8220;value&#8221;. This is because they often have some known, smaller quantifiable value, and these pale in comparison to the idealized unverified projections.</p><p>At the end of the day, prioritization is an art, not a science, no matter how many structured frameworks we use.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OON3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b7359-98d5-404e-9eab-6ebc0e60dee5_1388x392.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OON3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b7359-98d5-404e-9eab-6ebc0e60dee5_1388x392.png 424w, https://substackcdn.com/image/fetch/$s_!OON3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b7359-98d5-404e-9eab-6ebc0e60dee5_1388x392.png 848w, https://substackcdn.com/image/fetch/$s_!OON3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b7359-98d5-404e-9eab-6ebc0e60dee5_1388x392.png 1272w, https://substackcdn.com/image/fetch/$s_!OON3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b7359-98d5-404e-9eab-6ebc0e60dee5_1388x392.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OON3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b7359-98d5-404e-9eab-6ebc0e60dee5_1388x392.png" width="1388" height="392" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d4b7359-98d5-404e-9eab-6ebc0e60dee5_1388x392.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:392,&quot;width&quot;:1388,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OON3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b7359-98d5-404e-9eab-6ebc0e60dee5_1388x392.png 424w, https://substackcdn.com/image/fetch/$s_!OON3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b7359-98d5-404e-9eab-6ebc0e60dee5_1388x392.png 848w, https://substackcdn.com/image/fetch/$s_!OON3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b7359-98d5-404e-9eab-6ebc0e60dee5_1388x392.png 1272w, https://substackcdn.com/image/fetch/$s_!OON3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b7359-98d5-404e-9eab-6ebc0e60dee5_1388x392.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Value-based prioritization helps ensure some things never get&nbsp;done.</figcaption></figure></div><h3>Why putting it in the next sprint&nbsp;fails</h3><p>Some teams try to solve this problem by sticking rigidly to the sprint commitment. Whenever an interruption request comes in, they say &#8220;we&#8217;ve already planned this sprint, so we&#8217;ll put it in the next sprint&#8221;.</p><p>Unfortunately, by the time the next sprint comes along, there&#8217;s an additional 15 items in the backlog, all needing to get done.</p><p>Rinse and repeat until there&#8217;s a large list of items, most of which never end up being completed. The team starts being viewed as inflexible by customers, others in the company, and by executive sponsors.</p><p><strong>Why does this approach fail?<br></strong>The approach assumes that things can wait until the sprint is over.</p><p>The truth is, some things can&#8217;t wait. Compliance demands, a new employee onboarding, a large customer&#8217;s tiny configuration change&#8202;&#8212;&#8202;these are activity-generated work that just needs to get done with some sort of time-sensitive cadence.</p><p>Not fulfilling these requests within a short amount of time can cause reputation damage or operational risks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Bgn8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd967368-3f47-47fb-92a0-5e99815679fa_1430x662.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Bgn8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd967368-3f47-47fb-92a0-5e99815679fa_1430x662.png 424w, https://substackcdn.com/image/fetch/$s_!Bgn8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd967368-3f47-47fb-92a0-5e99815679fa_1430x662.png 848w, https://substackcdn.com/image/fetch/$s_!Bgn8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd967368-3f47-47fb-92a0-5e99815679fa_1430x662.png 1272w, https://substackcdn.com/image/fetch/$s_!Bgn8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd967368-3f47-47fb-92a0-5e99815679fa_1430x662.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Bgn8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd967368-3f47-47fb-92a0-5e99815679fa_1430x662.png" width="1430" height="662" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd967368-3f47-47fb-92a0-5e99815679fa_1430x662.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:662,&quot;width&quot;:1430,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Bgn8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd967368-3f47-47fb-92a0-5e99815679fa_1430x662.png 424w, https://substackcdn.com/image/fetch/$s_!Bgn8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd967368-3f47-47fb-92a0-5e99815679fa_1430x662.png 848w, https://substackcdn.com/image/fetch/$s_!Bgn8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd967368-3f47-47fb-92a0-5e99815679fa_1430x662.png 1272w, https://substackcdn.com/image/fetch/$s_!Bgn8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd967368-3f47-47fb-92a0-5e99815679fa_1430x662.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The &#8220;next sprint&#8221; is too far away and never has enough room for new&nbsp;items.</figcaption></figure></div><h3>Why setting aside set capacity&nbsp;fails</h3><p>Another approach teams take is to dedicate a certain amount of time, such as 10% of a sprint, or a single day a week, to solve these issues.</p><p><strong>Why does this approach fail?<br></strong>For low-volume interruptions, it works, but for organizations with a high volume of interruptions, it doesn&#8217;t&#8202;&#8212;&#8202;the rate of intake just gets too overwhelming.</p><p>Additionally, by making it a &#8220;10%&#8221; thing, it causes a belief that the work is unimportant and a distraction. This means engineers aren&#8217;t as motivated to complete it, which results in a certain level of ineffectiveness when executing on these tasks.</p><p>There&#8217;s also an implicit assumption that you can actually get enough of the items done within that time-box.</p><p>In many circumstances, you won&#8217;t, and then you&#8217;re back at square one.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ni7c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71519bb1-1c5b-49a8-8a29-dd89596a987f_1459x390.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ni7c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71519bb1-1c5b-49a8-8a29-dd89596a987f_1459x390.png 424w, https://substackcdn.com/image/fetch/$s_!Ni7c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71519bb1-1c5b-49a8-8a29-dd89596a987f_1459x390.png 848w, https://substackcdn.com/image/fetch/$s_!Ni7c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71519bb1-1c5b-49a8-8a29-dd89596a987f_1459x390.png 1272w, https://substackcdn.com/image/fetch/$s_!Ni7c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71519bb1-1c5b-49a8-8a29-dd89596a987f_1459x390.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ni7c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71519bb1-1c5b-49a8-8a29-dd89596a987f_1459x390.png" width="1456" height="389" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71519bb1-1c5b-49a8-8a29-dd89596a987f_1459x390.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:389,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ni7c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71519bb1-1c5b-49a8-8a29-dd89596a987f_1459x390.png 424w, https://substackcdn.com/image/fetch/$s_!Ni7c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71519bb1-1c5b-49a8-8a29-dd89596a987f_1459x390.png 848w, https://substackcdn.com/image/fetch/$s_!Ni7c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71519bb1-1c5b-49a8-8a29-dd89596a987f_1459x390.png 1272w, https://substackcdn.com/image/fetch/$s_!Ni7c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71519bb1-1c5b-49a8-8a29-dd89596a987f_1459x390.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">New request volume can overwhelm planned capacity and time-boxes.</figcaption></figure></div><h3>Let&#8217;s solve the real&nbsp;problem</h3><p>The real problem here is that the team is operating at a tempo that is slower than the environment demands.</p><p>If you get five urgent requests every day, but you only pick up new work every 2 weeks, that means customers can potentially wait up to 4 weeks just to get something resolved. In the startup world, 4 weeks can be an unacceptably long time. That assumes it manages to find prioritization against the planned roadmap (which is often not the case).</p><p>This ultimately causes things to pile up, customers to get unhappy: <em>&#8220;why does it take a week to set up a single configuration?&#8221; </em>Perception is impacted negatively.</p><p>This is why the QRF solution works well&#8202;&#8212;&#8202;it forces an operation at a faster tempo.</p><div><hr></div><h3>There are a lot of other benefits with the QRF&nbsp;model</h3><h4>Systematic reduction of context&nbsp;switches</h4><p>The first and foremost benefit is that interruptive tasks can be handled by a single, dedicated execution stream. While that team may context switch frequently, the organization as a whole ends up switching away from important things less.</p><p>This helps prevent context shifts away from the primary focus of the organization, which should be on non-urgent, important work.</p><p>It&#8217;s ultimately a system-level optimization at a local-level cost.</p><h4>Improved organizational agility and responsiveness</h4><p>A second benefit is that it increases the organizations&#8217; perceived responsiveness to requests.</p><p>Many organizations will perform some form of agile ritual where direction is pivoted and work is defined and set every 2 weeks. This means, in an unlucky case, there&#8217;s a theoretically maximum lead time of up to 4 weeks from the point a customer makes a request to the point it is fulfilled.</p><p>The QRF team helps provide a faster response time for such requests. I&#8217;ve seen consistent lead times of under 3 days from request to delivery for items&#8202;&#8212;&#8202;it helps improve customer satisfaction and service satisfaction.</p><h4>Dedication to maintenance and&nbsp;support</h4><p>Maintenance is the most costly aspect of a system&#8217;s lifecycle. It gets costly because it often gets delayed, which increases the risk and work required to maintain the system.</p><p>The QRF helps ensure that important maintenance doesn&#8217;t go undone&#8202;&#8212;&#8202;eg. things like bugs, operational tooling, and other items.</p><div><hr></div><h3>How QRF Operates&#8202;&#8212;&#8202;in more&nbsp;detail</h3><h4>Operating Modes</h4><p>QRFs operate with two operating modes:</p><ul><li><p>Reaction</p></li><li><p>Standby</p></li></ul><p>During &#8220;Reaction&#8221;, the QRF team is actively firefighting&#8202;&#8212;&#8202;solving some urgent, interruptive issue as the first line of defense against interruptions and supporting the other team by allowing it to focus.</p><p>During &#8220;Standby&#8221; the QRF team works on preventative &#8220;shift left&#8221; items or things that help it react faster. These could be internal tools, improved monitoring / alerting, quality-of-life improvements, automation, or improved observability in logs or audits&#8202;&#8212;&#8202;it&#8217;s up to the QRF team to decide how they want to fill this time.</p><h3>Shift Left</h3><p>The biggest part of QRF&#8217;s mission is to &#8220;shift left&#8221; on interruptions. They should strive not just to react to solve the instance of a problem but to avoid the entire class of problems from ever reaching engineering in the first place.</p><h4>What does shifting left look like on&nbsp;QRF?</h4><p>This looks different for every company and problem, but some common &#8220;shift left&#8221; solutions include:</p><ul><li><p>Creating admin tooling to let internal teams perform actions on their own</p></li><li><p>Fixing bugs or UX in areas of the product that lead to engineering requests</p></li><li><p>Improving monitoring, traceability, and observability so that investigations can be completed faster</p></li><li><p>Creating easy-to-use queries or exports so others can see data they need without engineering</p></li><li><p>Documenting common engineering maintenance tasks so that others can solve it</p></li></ul><p>Over time, as categories of interruptions are shifted left, the engineering organization as a whole has more room to focus on the execution of higher-value items.</p><h3>Working with stakeholders</h3><p>QRF works closely with stakeholders across the entire organization&#8202;&#8212;&#8202;especially internal teams like support, customer success, and operations. It&#8217;s important to stay in touch with these stakeholders and keep them consulted or informed regarding any changes to their workflows or resolutions to requests they may have made.</p><h3>Measuring QRF Performance</h3><p>There are several ways you can measure how a QRF team is performing:</p><ul><li><p><strong>Issue Resolution Rate</strong>&#8202;&#8212;&#8202;how many issues did the QRF team solve?</p></li><li><p><strong>Cycle Time and Lead Time</strong>&#8202;&#8212;&#8202;how long did a requestor wait for &#8220;done&#8221;?</p></li><li><p><strong>Items Shifted Left&#8202;</strong>&#8212;&#8202;how many issue types and issues did QRF prevent?</p></li><li><p><strong>Interruptions Prevented&#8202;</strong>&#8212;&#8202;how many urgent items did the main effort team not have to handle?</p></li></ul><p>All of these are legitimate ways of evaluating that the QRF is working.</p><p><strong>Issue Resolution Rate </strong>is essentially the throughput of interruptive requests. Put another way, it would be the number of interruptions your main product team would have to handle if you didn&#8217;t have a QRF team.</p><p>Performing categorization on these completed items can give key insights into the makeup and source of the various interruptions that would be experienced by your organization:</p><ul><li><p>a high number of bugs could indicate quality issues</p></li><li><p>a high number of investigative asks could be a visibility issue</p></li><li><p>a high number of mundane data tasks could indicate a missing internal tool</p></li></ul><p><strong>Cycle Time and Lead Time</strong> can be used to provide predictive averages for new requests to requestors. If, for example, it took the last 100 items an average Lead Time of 3 days to complete, then a requestor can expect that, on average, their request will take 3 days.</p><p><strong>Items Shifted Left </strong>represents the number of discrete workflows or categories of items that the QRF team has successfully prevented from ever occurring again. This represents initiative-gaining preventative work. Each category may represent dozens or hundreds of future interruptions that were prevented.</p><p><strong>Interruptions Prevented</strong> is a metric that can be used to measure how ahead of the problem the QRF team is getting. One an item is shifted left (eg. through an internal tool) any future possible use of that &#8220;shift left&#8221; solution is an issue that engineering didn&#8217;t have to solve.</p><div><hr></div><h3>A QRF Success&nbsp;Story</h3><p>I&#8217;ve successfully implemented this model at a few companies now.</p><p>One, which I&#8217;ll call &#8220;PayCo&#8221;, had a massive problem: over a dozen requests were coming in every single day, and only a couple of key engineers in the company knew how to solve them. They were busy working on other things, so those things didn&#8217;t get done, adding to an ever-growing backlog. Eventually, the embers would turn into a fire that required immediate attention, causing severe interruptions.</p><p>When I first joined, there was a massive backlog of tasks and asks. I knew this wasn&#8217;t sustainable, so I quickly spun up a QRF team.</p><p>It was initially a slog. Every problem and request we encountered was novel and discovering how to resolve it took time.</p><p>However, we explicitly and carefully documented the problems and solutions we encountered, creating step-by-step guides and even writing quick &#8220;fill-in-the-blank&#8221; scripts we could use in the future. From the work, we identified and documented solutions to over 40 categories of requests.</p><p>From these categories, we identified key patterns:</p><ul><li><p>Certain departments had high levels of requests brought on by a lack of visibility</p></li><li><p>Some frequent requestors asked for information that we could easily provide in their existing tooling</p></li><li><p>Some people just access issues&#8202;&#8212;&#8202;they could easily perform the action had they had access to the right tool</p></li></ul><p>We implemented a series of shift-left work and completely erased the intake of 25 of those categories of requests from ever reaching engineering by empowering the requestors to solve the problems themselves or by addressing the root cause of the issues.</p><p>We went from handling and resolving 10+ interruptive requests per day to receiving less than 3 a week in just two short quarters, and eventually, sunset the QRF team as the first-response and turned it into an overflow response for the other teams.</p><div><hr></div><h3>Implementation advice</h3><p>In order for QRF to succeed, it requires a certain set of commitments from the organization.</p><p><strong>QRF must own its own intake and prioritization.&nbsp;<br></strong>This means that other teams can&#8217;t tell QRF what to do. It chooses based on its mission to prevent interruptions and its capabilities to do so.</p><p><strong>QRF cannot have a roadmap or backlog.&nbsp;<br></strong>The whole point of QRF is to be responsive, and it can&#8217;t be responsive if it has a backlog of commitments it must deliver on. The team should always be free to drop whatever it is doing to work on something else if it is desired.</p><p><strong>QRF must have the authority to resolve issues.</strong>&nbsp;<br>It must be able to work with stakeholders and other departments directly to resolve issues, which might include process changes, interface tweaks, or the introduction of tooling. Any permission gating simply adds wait time and delays, which makes the team less responsive and interruptions more urgent.</p><p><strong>QRF must be generalists with high initiative, adaptability, and attention to detail.</strong>&nbsp;<br>The team needs to be staffed with engineers who enjoy working on different things, diving into problems, working with stakeholders, and recording and tracking resolutions down with little to no support. Otherwise, it becomes difficult for them to affect change, gather information, and share larger solutions with the company.</p><p><strong>The company must intake requests into a central location.<br></strong>QRF works when it can easily identify requests that fit its operating parameters and can identify long-term request patterns. This can only be done if requests are articulated consistently and visibly.</p><p>In short&#8202;&#8212;&#8202;QRF can&#8217;t respond to requests it doesn&#8217;t know about.</p><p>If you don&#8217;t have a formal intake process, set one up!</p><p><strong>Members of QRF must be thorough, clear documenters.<br></strong>Part of QRF is discovering how to resolve an issue and making it so it only needs to be solved once&#8202;&#8212;&#8202;this often means writing down resolution steps in a way that can be reproduced by others across the company, or detailing requests and resolutions so that patterns can be uncovered for a larger preventative solution.</p><p>If you staff a QRF team with people who hate documentation, the team will end up solving the same problem over and over.</p><p><strong>Avoid short-term engineer rotations.<br></strong>There&#8217;s a certain amount of familiarity that is required to be effective in the QRF operational model that you just can&#8217;t build in a couple weeks. You need to be able to chase down threads, communicate with stakeholders, identify patterns to shift left. Switching an engineer off every couple of weeks prevents that momentum from building.</p><p><strong>Set a Response SLA.<br></strong>The whole point of QRF is providing responses in a timely fashion. Therefore, have the team commit to a response service level agreement.</p><p>Something like &#8220;we will respond to all requests within 48-hours&#8221; will help keep it from becoming an unpredictable black hole. Note that response doesn&#8217;t necessarily mean resolution&#8202;&#8212;&#8202;it just means that people will know whether it is going to be picked up by QRF or not.</p><div><hr></div><h3>Frequently Asked Questions</h3><h4>Isn&#8217;t that a bug&nbsp;team?</h4><p>It&#8217;s easy to think &#8220;oh this is a bug team&#8221;&#8202;&#8212;&#8202;you couldn&#8217;t be farther from the truth.</p><p>Yes&#8202;&#8212;&#8202;it often starts out as a team that fixes a lot of bugs, but QRF is distinct in the way it prioritizes. Bug teams prioritize based on the criticality of a bug and go from there, and only work on bugs.</p><p>The QRF, on the other hand, prioritizes based on the level of interruptive-ness and inefficiency. They may work on items that aren&#8217;t bugs at all. Their job is to prevent interruptions, not fix bugs. This may mean letting some bugs occur and remain in the system to create a longer-term preventative solution for another interruption.</p><h4>How do you get engineers motivated to work on these tiny&nbsp;items?</h4><p>Autonomy and gratitude.</p><p>One key part of QRF is that it allows for infinite autonomy, which is a large part of the draw for many engineers. Engineers on the team essentially get to decide what to work on during standby, provided you fulfill the reaction SLAs.</p><p>Initially, there won&#8217;t be a lot of downtimes, but gaps eventually form between one urgent item and the next. It&#8217;s in these gaps that the engineer can multiply their impact.</p><p>Due to the nature of requests, the QRF is also a team where you interact directly with the people you help. Some engineers find it incredibly motivating to deploy a fix or a tool and have an opportunity to speak immediately with the people who benefited the most from it. For all of the talk of customer collaboration in many product development teams, far too many continue to silo their engineers from their user-base, which makes opportunities like this an exception, not the norm.</p><p>Ultimately though, the <em><strong>QRF is not for everyone.</strong> </em>If the engineer wants to just head down and code, don&#8217;t put them on a QRF team.</p><h4>Should the QRF do&nbsp;Scrum?</h4><p>No&#8202;&#8212;&#8202;Scrum&#8217;s prioritization tempo can be too long. The QRF may reprioritize daily, even in some cases several times a day, depending on the fires. That&#8217;s what makes it powerful&#8202;&#8212;&#8202;it&#8217;s a commitment to allow for that. Scrum does the opposite&#8202;&#8212;&#8202;it creates a near-immutable contract that specifies that reprioritization should (ideally) only occur at the end of a sprint.</p><p>It&#8217;s recommended that QRF does a pull-based execution model such as Kanban. Kanban works well because it helps limit work-in-progress, reduces batch sizes, makes work visible, and allows for swarming on blockers.</p><h4>What happens if QRF runs out of stuff to&nbsp;do?</h4><p>They work on preventative, shift-left work, or other multiplier items&#8202;&#8212;&#8202;it is really up to the discretion of the members of that team. The only criteria are that they keep their queue as clear as possible by responding to and resolving items in a timely fashion.</p><p>This means not chewing off massive, blocking multi-month projects and ensuring things they deliver are done iteratively and incrementally, in a way that can be dropped or interrupted at any time.</p><p>If the unlikely scenario that QRF truly does run out of interruptions to handle, it means they&#8217;ve done their job! It&#8217;s a smooth transition from there to become an internal team working on supporting efforts, a developer UX team, or be folded into another team altogether.</p><h4>Isn&#8217;t this just adding a capacity commitment with extra&nbsp;steps?</h4><p>If you look at it purely from the perspective of engineering capacity&#8202;&#8212;&#8202;then, yes. However, that&#8217;s an over-simplified comparison&#8202;&#8212;&#8202;you won&#8217;t get the same results if you were to take that same capacity and put it on a normal product team.</p><p>That&#8217;s because a key component of the QRF is that it operates completely differently than how other engineering teams in your company might operate. The team&#8217;s charter on prevention helps reduce incoming interruptions in the long-term a lot better than a partial-attention model might. The motivator of infinite autonomy helps keep engineers working in the model motivated and retained.</p><h4>How many engineers do you need on the QRF&nbsp;team?</h4><p>That&#8217;s up to you&#8202;&#8212;&#8202;the model can work with just a single engineer for a tiny team, or you can even have a team of several engineers. The important part is examining your rate of interruptive intake and making sure the QRF is staffed appropriately to prevent a significant number of those interruptions.</p><p>If it gets to the point your team needs to have a QRF larger than the Main Effort team, that&#8217;s highly indicative of much larger, upstream, possibly cross-functional organizational issues that need to be shifted left, such as consistent poor requirements, technical quality, or prioritization discipline.</p><div><hr></div><h3>Context matters</h3><p>The QRF model can be highly effective but remember: there is no silver bullet that works in every scenario. Examine your context and situation.</p><p>I&#8217;ve found great success with this model in environments where:</p><ul><li><p>Engineering is frequently interrupted in high-urgency environments</p></li><li><p>Complexity is such that the QRF can quickly onboard into areas</p></li><li><p>Prioritization frameworks place low value on operational asks</p></li><li><p>There is limited capacity relative to the work</p></li><li><p>The interruptions are incrementally valuable, or must actually be done</p></li></ul><p>This model likely won&#8217;t work or be effective in environments where:</p><ul><li><p>the interruptions are truly not important</p></li><li><p>the interruptions frequently turn into meaningful strategic pivots</p></li><li><p>solutions require highly specialized knowledge or expertise</p></li><li><p>enough capacity exists where interruptions can be absorbed by the organization as a whole</p></li><li><p>a mature prioritization process is already in use that factors in operational needs as well as innovation</p></li></ul><p>Context matters. Ultimately, a blog post on the internet can&#8217;t fix your problems for you&#8202;&#8212;&#8202;at best it can give you a mental model that you can apply and possibly mold after evaluating your own context and needs. It&#8217;s quite possible a QRF model will solve your problem, but the opposite can be true as well: you&#8217;ll know best.</p><div><hr></div><p>That&#8217;s it. If you&#8217;ve ever implemented a QRF or similar model and saw success (or failure), feel free to leave a comment!</p>]]></content:encoded></item><item><title><![CDATA[On development - How to design an effective intake process]]></title><description><![CDATA[Wrangle the chaos of startup life through the implementation of lightweight, efficient processes.]]></description><link>https://blog.jgefroh.com/p/how-to-design-an-effective-intake-process-cba0b98be4d4</link><guid isPermaLink="false">https://blog.jgefroh.com/p/how-to-design-an-effective-intake-process-cba0b98be4d4</guid><dc:creator><![CDATA[Joseph Gefroh]]></dc:creator><pubDate>Sat, 06 Feb 2021 21:30:53 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/476aa473-5810-4dca-8337-c0a16cb460cf_800x388.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!46sC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89be94ed-bbee-4209-b63e-9d51f235cfa5_800x388.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!46sC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89be94ed-bbee-4209-b63e-9d51f235cfa5_800x388.png 424w, https://substackcdn.com/image/fetch/$s_!46sC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89be94ed-bbee-4209-b63e-9d51f235cfa5_800x388.png 848w, https://substackcdn.com/image/fetch/$s_!46sC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89be94ed-bbee-4209-b63e-9d51f235cfa5_800x388.png 1272w, https://substackcdn.com/image/fetch/$s_!46sC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89be94ed-bbee-4209-b63e-9d51f235cfa5_800x388.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!46sC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89be94ed-bbee-4209-b63e-9d51f235cfa5_800x388.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89be94ed-bbee-4209-b63e-9d51f235cfa5_800x388.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!46sC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89be94ed-bbee-4209-b63e-9d51f235cfa5_800x388.png 424w, https://substackcdn.com/image/fetch/$s_!46sC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89be94ed-bbee-4209-b63e-9d51f235cfa5_800x388.png 848w, https://substackcdn.com/image/fetch/$s_!46sC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89be94ed-bbee-4209-b63e-9d51f235cfa5_800x388.png 1272w, https://substackcdn.com/image/fetch/$s_!46sC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89be94ed-bbee-4209-b63e-9d51f235cfa5_800x388.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h4>Wrangle the chaos of startup life through the implementation of lightweight, efficient processes.</h4><p>Process is an afterthought for many tech startups and an intake process is often the last thing on leadership&#8217;s minds.</p><p>After all, they haven&#8217;t needed it so far. In the day-to-day chaos, things have happened and progress was made just fine without any formal process.</p><p>They may even have started thinking that an intake process isn&#8217;t even necessary and would just slow things down. Perhaps they&#8217;ve come to believe that their team has somehow found some special trick to make such process completely unnecessary.</p><p><strong>They deceive themselves. </strong>It&#8217;s understandable how inexperienced engineering leads get lulled into this dangerously false sense of security. The lack of structure that was once the competitive edge of a small team of 10 quickly becomes the achilles heel for a larger company of 50 or 350.</p><h4>Growth changes the&nbsp;game</h4><p>As startups grow, the complexity of the projects grows and the inter-team collaboration demands increase<em> exponentially.</em></p><p>Focuses shift. Tasks get re-prioritized. Projects get cancelled and renewed. Change is constant. Many requests inevitably slip between the cracks and get lost.</p><p><strong>From the outside, the development team becomes a black hole&#8202;</strong>&#8212;&#8202;nobody in the organization quite knows what the developers are working on, and it&#8217;s already hard enough to understand just exactly what a developer does without this.</p><p>External teams without insight into the day-to-day of development begin to lose awareness of the status of requests they made&#8202;&#8212;&#8202;requests that they desperately need completed to move the needle on the company&#8217;s objectives. They waste time pinging individual engineers, or make false assumptions that cause their own initiatives to abruptly come to a screeching halt.</p><p><strong>The means by which a request actually gets done ends up becoming opaque.</strong> Whether a request gets fulfilled or not gets done becomes determined by the whims of the person being asked, informed by the relationship between the asker and the askee. It becomes a <em>barter economy</em> where important things get dropped while less important things get done just because someone was friends with an engineer or they exchanged favors. <strong>This doesn&#8217;t make for an effective prioritization culture&#8202;&#8212;&#8202;it is a pathological, political one.</strong></p><p>Cultures like this sow the seeds of doubt about the development team&#8217;s effectiveness and, over the long-term, turns into mistrust of the development organization as whole&#8212;a perception all engineering leaders should strive to change.</p><h3>Effects of a good intake&nbsp;process</h3><p>If intake processes become necessary after growth, how does it actually help?</p><ul><li><p>It helps individual developers be more effective.</p></li><li><p>It allows for effective planning across the entire organization.</p></li><li><p>It provides signals that can be acted upon.</p></li><li><p>It helps ensure prioritization is explicit and obvious.</p></li></ul><h4>It helps individual developers be more effective.</h4><p>At some point in their career, every software developer will have someone in another department asks them for a favor. The initial request is often small&#8202;&#8212;&#8202;perhaps it a &#8220;really quick&#8221; text change, or a small fix for a bug that&#8217;s been bothering them for a long time. The ask might be made in a passing comment in the hallway or via a short email:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IWVZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc238a904-0e0e-48a2-b618-da3b2aa50a5c_800x580.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IWVZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc238a904-0e0e-48a2-b618-da3b2aa50a5c_800x580.png 424w, https://substackcdn.com/image/fetch/$s_!IWVZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc238a904-0e0e-48a2-b618-da3b2aa50a5c_800x580.png 848w, https://substackcdn.com/image/fetch/$s_!IWVZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc238a904-0e0e-48a2-b618-da3b2aa50a5c_800x580.png 1272w, https://substackcdn.com/image/fetch/$s_!IWVZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc238a904-0e0e-48a2-b618-da3b2aa50a5c_800x580.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IWVZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc238a904-0e0e-48a2-b618-da3b2aa50a5c_800x580.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c238a904-0e0e-48a2-b618-da3b2aa50a5c_800x580.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IWVZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc238a904-0e0e-48a2-b618-da3b2aa50a5c_800x580.png 424w, https://substackcdn.com/image/fetch/$s_!IWVZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc238a904-0e0e-48a2-b618-da3b2aa50a5c_800x580.png 848w, https://substackcdn.com/image/fetch/$s_!IWVZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc238a904-0e0e-48a2-b618-da3b2aa50a5c_800x580.png 1272w, https://substackcdn.com/image/fetch/$s_!IWVZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc238a904-0e0e-48a2-b618-da3b2aa50a5c_800x580.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Every developer has dealt with the dreaded forwarded request at some point&#8202;&#8212;&#8202;possibly hundreds.</figcaption></figure></div><p>The developer does it, because <em>&#8220;Why not?&#8221;</em> &#8212;it&#8217;s only going to take 10 minutes. The next day, they get another request, which they dutifully do. Then, another&#8230;.and another&#8230;. and another. Soon, others are also making requests because they heard that&#8217;s how things get done. The developer doesn&#8217;t say no. They just start working late or slow down on their other tasks. Ah, the curse of being reliable.</p><p>This is the invisible hand of hidden work. It drags on teams causing immeasurable amounts of inefficiency and distraction. the hidden work is impossible to accurately plan for because it happens in the shadows of people&#8217;s individual inboxes and water-cooler conversations.</p><p><strong>Having an effective intake process shines a spotlight on hidden work.</strong> It doesn&#8217;t mean that this hidden work never gets done or is never prioritized&#8202;&#8212;&#8202;it just means that<em> everyone is aware of it</em>, not just the people in the conversation.</p><p>High visibility lets you account for all of the hidden work in your planning, ensuring resourcing, prioritization, and scheduling are appropriate.</p><h4>It allows for effective planning across the entire organization.</h4><p>For external teams operating in an environment without an intake process, making a request may feel like &#8220;tossing something into a black hole&#8221;. When will it be done? <em>Who knows</em>. Will it get done? <em>Roll a dice. </em>Will you be told when anything happens on it? <em>Probably not.</em></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WKgA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1cc813-b078-473b-9eae-c60a4c3b7bd5_800x261.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WKgA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1cc813-b078-473b-9eae-c60a4c3b7bd5_800x261.png 424w, https://substackcdn.com/image/fetch/$s_!WKgA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1cc813-b078-473b-9eae-c60a4c3b7bd5_800x261.png 848w, https://substackcdn.com/image/fetch/$s_!WKgA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1cc813-b078-473b-9eae-c60a4c3b7bd5_800x261.png 1272w, https://substackcdn.com/image/fetch/$s_!WKgA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1cc813-b078-473b-9eae-c60a4c3b7bd5_800x261.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WKgA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1cc813-b078-473b-9eae-c60a4c3b7bd5_800x261.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c1cc813-b078-473b-9eae-c60a4c3b7bd5_800x261.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WKgA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1cc813-b078-473b-9eae-c60a4c3b7bd5_800x261.png 424w, https://substackcdn.com/image/fetch/$s_!WKgA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1cc813-b078-473b-9eae-c60a4c3b7bd5_800x261.png 848w, https://substackcdn.com/image/fetch/$s_!WKgA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1cc813-b078-473b-9eae-c60a4c3b7bd5_800x261.png 1272w, https://substackcdn.com/image/fetch/$s_!WKgA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1cc813-b078-473b-9eae-c60a4c3b7bd5_800x261.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Without visibility from an intake process, the status of a request is a&nbsp;mystery.</figcaption></figure></div><p>Operating in a zero-information environment like that can only lead to tragedy. For example, Sales may commit something with a key customer believing a request they submitted weeks ago had been completed, when in reality it may not even have been started! When they find out a week before it is due that it hasn&#8217;t even been looked at yet, it causes a fire in engineering to rush and get it out, or an unhappy key account.</p><p>Incidents like this build frustration in the organization and ultimately hurts cross-functional collaboration.</p><p>An effective intake process importantly makes status and progress visible to the requestor, providing clarity and improving cross-departmental collaboration and trust.</p><p>This clarity promotes better synchronization as dependable intake cycles can be planned with in mind, especially important when collaborating with departments that have longer cycles, such as Marketing and Sales for go-to-market initiatives.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!me8I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba89399-27ed-4616-8dc1-68863510798a_800x338.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!me8I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba89399-27ed-4616-8dc1-68863510798a_800x338.png 424w, https://substackcdn.com/image/fetch/$s_!me8I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba89399-27ed-4616-8dc1-68863510798a_800x338.png 848w, https://substackcdn.com/image/fetch/$s_!me8I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba89399-27ed-4616-8dc1-68863510798a_800x338.png 1272w, https://substackcdn.com/image/fetch/$s_!me8I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba89399-27ed-4616-8dc1-68863510798a_800x338.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!me8I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba89399-27ed-4616-8dc1-68863510798a_800x338.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cba89399-27ed-4616-8dc1-68863510798a_800x338.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!me8I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba89399-27ed-4616-8dc1-68863510798a_800x338.png 424w, https://substackcdn.com/image/fetch/$s_!me8I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba89399-27ed-4616-8dc1-68863510798a_800x338.png 848w, https://substackcdn.com/image/fetch/$s_!me8I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba89399-27ed-4616-8dc1-68863510798a_800x338.png 1272w, https://substackcdn.com/image/fetch/$s_!me8I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba89399-27ed-4616-8dc1-68863510798a_800x338.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">With visibility, cross-functional activities can occur in a timely&nbsp;manner.</figcaption></figure></div><h4>It provides signals that can be acted&nbsp;upon.</h4><p>Finally, an intake process helps maximize the long-term effectiveness of the development team by providing opportunities to collect trailing and leading indicators of how the team is doing.</p><p>It provides you an opportunity to get insight and take action based on the kinds of requests you are getting, or how long things are taking.</p><ul><li><p>Suddenly getting an influx of bug requests? You may have a quality issue.</p></li><li><p>Getting an influx of data asks? Perhaps it&#8217;s time to expand the data science team.</p></li><li><p>Cycle time suddenly skyrocked? Perhaps requirements are not defined well-enough.</p></li></ul><p>Whatever the case, you can&#8217;t get these signals unless you&#8217;re looking for them.</p><h4>It helps ensure prioritization is explicit and&nbsp;obvious</h4><p>Without an effective intake process, prioritization is often dictated by the person with the most acronyms in their title or the squeakiest wheel.</p><p>or smaller, less influential members of your startup, it&#8217;s hard to get prioritization and they may feel like nobody has their back. This is a problem that customer success and operations teams often have, despite being the front-line for user contact and the first-impression of your company many people get.</p><p>I&#8217;ve seen situations where companies were spending tens of thousands of dollars in salaries to solve something that could have been permanently resolved with just 10 minutes of developer time. Savings like this would never have been prioritized or even remembered to be addressed had they not been explicitly tracked.</p><h3><strong>How do you implement an intake&nbsp;process?</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nsLb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a57098a-28f2-4e73-80ea-e1196addaa03_450x643.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nsLb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a57098a-28f2-4e73-80ea-e1196addaa03_450x643.png 424w, https://substackcdn.com/image/fetch/$s_!nsLb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a57098a-28f2-4e73-80ea-e1196addaa03_450x643.png 848w, https://substackcdn.com/image/fetch/$s_!nsLb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a57098a-28f2-4e73-80ea-e1196addaa03_450x643.png 1272w, https://substackcdn.com/image/fetch/$s_!nsLb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a57098a-28f2-4e73-80ea-e1196addaa03_450x643.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nsLb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a57098a-28f2-4e73-80ea-e1196addaa03_450x643.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a57098a-28f2-4e73-80ea-e1196addaa03_450x643.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nsLb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a57098a-28f2-4e73-80ea-e1196addaa03_450x643.png 424w, https://substackcdn.com/image/fetch/$s_!nsLb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a57098a-28f2-4e73-80ea-e1196addaa03_450x643.png 848w, https://substackcdn.com/image/fetch/$s_!nsLb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a57098a-28f2-4e73-80ea-e1196addaa03_450x643.png 1272w, https://substackcdn.com/image/fetch/$s_!nsLb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a57098a-28f2-4e73-80ea-e1196addaa03_450x643.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Implementing a new intake process is just about the same as implementing any process change in a company:</p><div class="paywall-jump" data-component-name="PaywallToDOM"></div><ul><li><p>Define the desired effects</p></li><li><p>Define the inputs</p></li><li><p>Define the process</p></li><li><p>Define the outputs</p></li><li><p>Release and drive adoption</p></li><li><p>Monitor, improve, extract</p></li></ul><h3>Define the desired&nbsp;effects</h3><p>Every process should have a purpose for existence. We must understand the impact we want our process to have on our environment, and then design the process to achieve that impact. If the effects aren&#8217;t needed, the process isn&#8217;t needed, and only a truthful examination of your context will determine that.</p><p>We addressed some of the desired effects above, but to restate them:</p><ul><li><p>We want to help individual developers be more effective in the face of multiple streams of requests <em><strong>by giving them a process with which to manage those requests</strong></em><strong>.</strong></p></li><li><p>We want to improve planning across the entire organization <em><strong>by collecting, centralizing, and articulating all of the requests that would otherwise be hidden</strong></em><strong>.</strong></p></li><li><p>We want to make prioritization an explicit conversation<strong> </strong><em><strong>by making it obvious what will get bumped if something else gets prioritized.</strong></em></p></li><li><p>We want to identify long-term trends and act upon them <em><strong>by</strong></em><strong> </strong><em><strong>collecting, organizing, and analyzing the data we need during our day-to-day work.</strong></em></p></li></ul><p>Remember: always know what you&#8217;re trying to accomplish first before implementing a process. You don&#8217;t want to become a process-heavy bureaucracy&#8202;&#8212;&#8202;you want to be a nimble, but organized team.</p><h3>Define the&nbsp;inputs</h3><p>The inputs to the intake process are the intake requests themselves. In order to figure out the inputs, you&#8217;ll want to ask yourself two questions:</p><ul><li><p>What kinds of requests will you intake?</p></li><li><p>What specific information does a request need to be fulfilled?</p></li></ul><h3>What kinds of requests will you&nbsp;intake?</h3><p>In general, the following categories are a good place to start:</p><ul><li><p><strong>Bug&#8202;</strong>&#8212;&#8202;errors caused by defects in programming</p></li><li><p><strong>Change</strong>&#8202;&#8212;&#8202;work needed due to a missing or incorrect requirements, or a change in environment</p></li><li><p><strong>Enhancements</strong>&#8202;&#8212;&#8202;a small addition to existing functionality</p></li><li><p><strong>Feature</strong>&#8202;&#8212;&#8202;new functionality</p></li><li><p><strong>Task</strong>&#8202;&#8212;&#8202;a task that requires an engineer&#8217;s involvement (eg. running a script, setting up an environment, or grabbing data)</p></li></ul><p>I personally found the additional following categories useful through my career:</p><ul><li><p><strong>Data</strong>&#8202;&#8212;&#8202;a request to fetch data for BI, analytics, operational use, etc.</p></li><li><p><strong>Debt</strong>&#8202;&#8212;&#8202;a piece of technical debt</p></li><li><p><strong>Maintenance&#8202;</strong>&#8212;&#8202;an activity that is required for continuing operations (eg. server updates)</p></li></ul><p>Further categorization can be beneficial, but always balance it with the complexity costs. Keep it as simple as possible to promote adoption first, and then layer in evolutions.</p><h3>What specific information does a request need to be fulfilled?</h3><p>Once you know the kinds of issues you&#8217;ll intake, you&#8217;ll want to come up with a basic set of information you want to gather.</p><p>These might include:</p><ul><li><p>Summary of the problem / request</p></li><li><p>Steps to reproduce a problem, if applicable</p></li><li><p>Identifiers that would be helpful (eg. email addresses, IDs)</p></li><li><p>Due date / Urgency</p></li><li><p>Importance / Priority</p></li><li><p>Scope of Impact</p></li><li><p>Stakeholders involved</p></li></ul><h4>Don&#8217;t ask for too much information</h4><p>If a requestor has to provide 100 pieces of information just to file a request, they&#8217;re less likely to report it using the process you provide and instead fall back on the easier method of privately messaging an engineer.</p><p>You don&#8217;t want too heavy a gating mechanism for intake as the alternative will decrease engineering productivity and leads to untracked work which makes accurate planning more difficult and throws off forecasts.</p><p>The flip side of asking for less information is that yes, whoever triages may need to spend extra time hunting down information. I consider it a small price to pay, but your context will provide the clearest answer.</p><h4>Create templates or&nbsp;forms</h4><p>If possible, create pre-made templates or forms that people can just fill out. This will help guide the way they structure their intake requests to better match the format you desire.</p><p>Be sure, however, to leave it open-ended. If you create a form that is too strict or hard to use, people will take the easy way out.</p><h4><strong>Make sure it matches your&nbsp;team</strong></h4><p>Some teams are filled with developers who love to talk with stakeholders and understand problems. These teams benefit from open-ended problem statements that leave freedom for initiative and flexibility.</p><p>Other teams are filled with task-takers who just want to go heads down and get exactly what they need told to them. These teams need exact details that are well defined and researched.</p><p>Make sure you don&#8217;t give orders to your problem-solvers and make sure you don&#8217;t give ambiguous problems to your solution-implementers (unless you&#8217;re specifically trying to change the culture, but that&#8217;s a topic for another day).</p><h3>Define the&nbsp;process</h3><p>Once you define the inputs, you&#8217;ll want to define the intake process itself. The answers to these questions will depend on the context of your startup.</p><h3>What are the stages a request will go&nbsp;through?</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YjK9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df406bb-97e1-44cf-aa1e-e49d77911257_800x315.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YjK9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df406bb-97e1-44cf-aa1e-e49d77911257_800x315.png 424w, https://substackcdn.com/image/fetch/$s_!YjK9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df406bb-97e1-44cf-aa1e-e49d77911257_800x315.png 848w, https://substackcdn.com/image/fetch/$s_!YjK9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df406bb-97e1-44cf-aa1e-e49d77911257_800x315.png 1272w, https://substackcdn.com/image/fetch/$s_!YjK9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df406bb-97e1-44cf-aa1e-e49d77911257_800x315.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YjK9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df406bb-97e1-44cf-aa1e-e49d77911257_800x315.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0df406bb-97e1-44cf-aa1e-e49d77911257_800x315.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YjK9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df406bb-97e1-44cf-aa1e-e49d77911257_800x315.png 424w, https://substackcdn.com/image/fetch/$s_!YjK9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df406bb-97e1-44cf-aa1e-e49d77911257_800x315.png 848w, https://substackcdn.com/image/fetch/$s_!YjK9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df406bb-97e1-44cf-aa1e-e49d77911257_800x315.png 1272w, https://substackcdn.com/image/fetch/$s_!YjK9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df406bb-97e1-44cf-aa1e-e49d77911257_800x315.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Requests should have a clear pipeline that tells you at a glance how your issue is&nbsp;doing.</figcaption></figure></div><p>You&#8217;ll want a manageable pipeline that a request can go through, depending on your development lifecycle.</p><p>I recommend statuses that start simple&#8202;&#8212;&#8202;a sample &#8220;happy path&#8221; is below:</p><ul><li><p><strong>Requested&#8202;</strong>&#8212;&#8202;the request was requested by the requestor</p></li><li><p><strong>Discussing</strong>&#8202;&#8212;&#8202;the request is being discussed by the development org</p></li><li><p><strong>Prioritized</strong>&#8202;&#8212;&#8202;the request has been prioritized for development</p></li><li><p><strong>In Progress</strong>&#8202;&#8212;&#8202;the request is actively being worked on</p></li><li><p><strong>Done</strong>&#8202;&#8212;&#8202;the request has been fulfilled</p></li></ul><p>I also recommend having some sad paths to handle the realities that not everything will be worked on:</p><ul><li><p><strong>Needs Information&#8202;</strong>&#8212;&#8202;the request does not have enough information to execute</p></li><li><p><strong>Iceboxed&#8202;</strong>&#8212;&#8202;the request is not going to be worked on</p></li><li><p><strong>Deprioritized&#8202;</strong>&#8212;&#8202;the request was previously prioritized or in progress, but is now being deprioritized</p></li></ul><p>A key thing to remember when designing the stages: you don&#8217;t have to add every detail of the lifecycle of the request&#8202;&#8212;&#8202;only those that are relevant to the requestor.</p><p>For example, if you have a code review stage in your development process, you don&#8217;t need to add it as a stage to your intake process&#8202;&#8212;&#8202;it can still be considered &#8220;in progress&#8221;. That&#8217;s because the fact it is in code review is irrelevant to the requestor and from their perspective it just isn&#8217;t done yet.</p><p>The primary audience for intake is the requestor, not the development team.</p><h3>How often will the intake be&nbsp;curated?</h3><p>It&#8217;s important to ensure that you are managing and curating the intake queue at a speed that is relevant to your operating context. The speed with which you perform the &#8220;intake loop&#8221; is the intake&#8217;s operating tempo.</p><p>An intake process that responds to requests every 2 weeks is not likely to be effective in an environment where the situation changes daily. Likewise, an intake process that you curate daily is not an efficient use of your time if everyone interacts with it monthly. Use appropriate timelines for the situation.</p><p><strong>I recommend starting with a daily cycle</strong> to curate the bugs, fires, and smaller requests. Add in a larger weekly cycle to curate and prioritize the product-related asks with the product team.</p><p>What you shouldn&#8217;t do is check back only once every 2 week sprint. The rate at which requests come in is likely going to overwhelm you and frustrate stakeholders. Stick to a tempo that&#8217;s at longest weekly.</p><h3>What are the expectations?</h3><p>Expectations should be clear and well defined for both requestors and the intake team.</p><p>In general, I recommend at least these things:</p><ul><li><p>Establish a response-time SLA</p></li><li><p>Appoint a single responsible, empowered stakeholder</p></li><li><p>Keep communications on or near the ticket</p></li></ul><h4>Establish a response-time SLA</h4><p>Establish response-time expectations with people who interact with the intake process. I recommend an SLA of 48-hours to start for any new intake item, and a 24-hour SLA for any back-and-forth Q&amp;A needed to establish clarity.</p><p>An important thing to note: this is a response SLA, not a resolution SLA. The response can be &#8220;no movement&#8221; or &#8220;we&#8217;re still investigating&#8221; or &#8220;we&#8217;ll get back to you&#8221;. Sometimes the answer can be &#8220;we will discuss this in our next cycle&#8221;.</p><p>The important part is that everyone is aware of who has the responsibility to move the ball forward, and whether effort is being placed towards moving it forward or not.</p><h4>Appoint a single responsible, empowered stakeholder</h4><p>I also recommend, if possible, that all requestors must appoint a single stakeholder responsible for communicating in a timely manner with the intake manager, answering any questions necessary to complete the issue.</p><p>This individual must be empowered to make decisions and be the voice of authority for the stakeholder, and should be responsible for coordinating with their department. This helps wrangling differing opinions easier.</p><h4>Keep communications on or near the&nbsp;ticket</h4><p>One of the challenges of obtaining context for a ticket is the fact that the conversation happens in dozens of places&#8202;&#8212;&#8202;email threads, meetings, private messages, etc.</p><p>Try your best to get agreement to document the requirements and asks within the ticket itself, or a link from the ticket to whatever central document repository is being used. If a decision is made, it should be recorded before being considered finalized.</p><p>In an ideal world&#8202;&#8212;&#8202;all the context necessary should be obtainable by anyone who starts at the ticket.</p><h3>What tool should I&nbsp;use?</h3><p>There&#8217;s a plethora of project management tools out there. I recommend using one that:</p><ul><li><p>Your entire organization can easily adopt or already uses</p></li><li><p>Supports adding custom data points, such as estimates or tags</p></li><li><p>Supports adding your own pipeline stages</p></li><li><p>Supports having multiple pipelines to allow for multi-team intake</p></li><li><p>Supports raw data extraction so you can slice and dice in excel</p></li></ul><p>I&#8217;ve found the newer version (and the really old versions) of JIRA to be an excellent tool for organizations, even if it is a bit heavy on the administration side. Tools like Asana, Smartsheet, and Favro can work as well, although their simplicity makes it harder to extract insights and feel a but clunky at times.</p><p>Avoid using a tool that only your engineers can use, unless your intake is specifically for engineers. You want your intake publicly visible and accessible, and using a tool that 90% of your company can&#8217;t use defeats the purpose of the intake process, and will lead to a lot of administrative overhead caused by copying tickets back and forth from system to system.</p><h3>What about the old&nbsp;stuff?</h3><p>There&#8217;s a possibility that there&#8217;s already many items in your organization&#8217;s backlog&#8202;&#8212;&#8202;added on by months or years of chaos. I&#8217;ve seen backlogs tens of thousands of requests deep&#8202;&#8212;&#8202;a dream wishlist of things that will never be done.</p><p><strong>I recommend throwing it out.</strong></p><p>The knowledge captured in those tickets is likely outdated, not particularly fleshed out, or no longer relevant to your organization. It is knowledge debt that acts as cruft and defocuses from the actual important items. It would take significant time to go and sort through it all&#8202;&#8212;&#8202;time you don&#8217;t have. Throw it out.</p><p>Yes, it is painful. Don&#8217;t worry&#8202;&#8212;&#8202;the important stuff will come back on its own.</p><h4>If you must, keep some as&nbsp;examples</h4><p>You&#8217;re probably already aware of some items you need to do. For the stuff you don&#8217;t throw out, you can rewrite in an ideal way and put these into the intake as examples of what you want the intake items to look like.</p><h3>There&#8217;s many more questions you&#8217;ll want to&nbsp;answer</h3><p>These aren&#8217;t the only questions, but they form a great conversation starter as you think about the process design:</p><ul><li><p>How will people submit requests to the intake?</p></li><li><p>How will a new request be prioritized?</p></li><li><p>What happens if a request is picked up to be worked on?</p></li><li><p>What happens if a request is de-prioritized?</p></li><li><p>What happens if a request is broken up?</p></li><li><p>What happens if a request is a bigger piece of work than expected?</p></li><li><p>What happens when a request is released and done?</p></li><li><p>What are the expectations on the development team once a new request comes in?</p></li><li><p>Who&#8217;s going to be responsible for sorting through and responding to new intake requests?</p></li><li><p>Once an intake request comes in, who&#8217;s going to ensure it gets prioritized or discussed?</p></li></ul><h3>Releasing a new intake&nbsp;process</h3><p>So, you understand your goal, you&#8217;ve defined the inputs, and you&#8217;ve designed the process. Now you&#8217;re ready to have people start using it and contributing to it.</p><p>The good news is that it&#8217;s as easy as having people start asking you for stuff, which most people are quite willing to do.</p><p>The bad news is that not everyone will want to follow a process to do the asking, and you&#8217;ll have to do things to remove any friction against following it.</p><h4>Put it in one&nbsp;place</h4><p>Good intakes are centralized. A requestor shouldn&#8217;t have to hop onto 10 different tools or chase down a bunch of random links. Every single person should be able to see everything that everyone has requested in one, single location. Make it as obvious as possible.</p><p>I&#8217;ve had a lot of success making subdomains or forms specifically for internal intake such as<code>intake.companyname.com</code>.</p><h4>Communicate it</h4><p>As I&#8217;ve written about in the past, <a href="https://blog.usejournal.com/how-to-communicate-effectively-as-a-leader-ad49d3f081cc">repetition is the key to effective communication</a>. When you release your intake process, communicate it until you&#8217;re tired of hearing yourself, and then communicate it some more.</p><p>At minimum, people should know:</p><ul><li><p>the fact there is a new intake process</p></li><li><p>how to use the intake process</p></li><li><p>where to find the intake process</p></li><li><p>what the benefits of using the intake process are</p></li><li><p>what the costs of not using the intake process are</p></li></ul><p>Send a link to every single team in the company and make sure they know where to find it. Send emails. Send instant messages. Mention it in conversations. Do an announcement at the next all-hands.</p><h4>Redirect everyone to&nbsp;it</h4><p>Even after you release your intake process, people will still not use it&#8202;&#8212;&#8202;either due to forgetfulness, lack of time, or lack of desire.</p><p>Be patient, and redirect everyone to use the intake process. Every time you see an email come in asking to take engineering time to do something&#8202;&#8212;&#8202;ask them to make an intake ticket. If you see a Slack message that&#8217;ll require development effort, ask them to file an intake ticket with the necessary details.</p><h4>Instruct others to redirect them,&nbsp;too</h4><p>The weakest link in the intake process are the people who say yes when asked out-of-band. Oftentimes when releasing a new intake process, some engineers on the team do not necessarily want to be the ones who have to say no. Perhaps they truly do think they have enough time to do small requests.</p><p>By this point you should have already sold the benefits of an intake process to the engineering team. Remind the engineers that they should present a unified front and redirect <em>all requests</em> to intake.</p><p>Note: that doesn&#8217;t mean they can&#8217;t work on it or they shouldn&#8217;t ever do anything someone else asks. It just means that it has to be recorded. As an aside, engineers benefit because now they have an excuse for saying no that allows them to save face&#8202;&#8212;&#8202;&#8220;my manager says we have to follow the intake process&#8221;.</p><h4>Stay on top of&nbsp;it</h4><p>You should either fully expect to be doing all of the intake curation and administration yourself for the first month or two, or find an ally who is really gung-ho about it. I&#8217;ve had success with both, but your mileage may vary.</p><p>Over time, as the intake process gets adopted, you can start shifting the curation burden to the developers (which is a minimal left to their day-to-day) and the team leads.</p><p>In the mean time&#8202;&#8212;&#8202;check the intake queue several times a day. Be responsive. Follow up with people.</p><h4>Don&#8217;t drop the&nbsp;ball</h4><p>The beginnings of an intake process are incredibly fragile. You need to have people trust it and accept the increased friction in making a request with the benefit of having increased visibility and a better response rate. Sometimes going the extra mile to ensure a request is fulfilled for an underserved stakeholder group makes sense, even if it isn&#8217;t a priority one.</p><h4>Don&#8217;t use it as an excuse to not do something important</h4><p>Sometimes truly important things will come outside of the process. Do your best to put it into the process (such as writing a ticket after the fact and pointing people to it), but don&#8217;t let the process prevent you from doing the important things. Remember: your organization is not here to work for the process, the process is here to work for your organization.</p><h3>Dealing with the non-adopters</h3><p>Some people just won&#8217;t use your intake process when you release it. They may still continue passing along email threads, direct messaging people, etc. Guilty parties are often the three-letter acronyms (CEOs, CFOs, CMOs, etc.) or frequent requestors who have already seen success in accomplishing their goals without using the process.</p><p>There&#8217;s a few strategies you can use&#8202;&#8212;&#8202;both carrot and stick.</p><h4>Carrots</h4><p>Make the issues for them whenever they make a request, and point them to the link to that specific request. Tell them you&#8217;ll add any status updates to that ticket and that they should provide any information on the ticket itself so it doesn&#8217;t get lost.</p><p>If they start using the intake process, I would try to accelerate / prioritize their ask, even if it is technically &#8220;low priority&#8221; as a reward for them following the process. As it becomes routine over time, you should have to use fewer and fewer carrots.</p><h4>Sticks</h4><p>Tell them that you can&#8217;t do anything they write a ticket and they commit to a single stakeholder, a response SLA, or whatever it is you need. Then, don&#8217;t do anything that doesn&#8217;t meet those requirements.</p><p>This is the brute-force method, and can likely cause a lot of squabbling. However, it is a highly effective forcing function. If you have the political clout to weather a managerial escalation or two, it&#8217;s a very rapid way to start some great conversations surrounding the importance of the intake process (a small tip for managing up and out).</p><p>The important caveat here: have a short-term memory. Even if they don&#8217;t follow the intake process 50 times, as soon as they do at least once, reward them for it! Don&#8217;t let grudges get in the way of organizational effectiveness. The tit-for-tat strategy in game theory provides a good model for this.</p><h4>A final&nbsp;option</h4><p>If you do have a couple stragglers who simply adamantly refuse to adopt the intake process, you have two choices:</p><ul><li><p>Don&#8217;t do what they ask, ever.</p></li><li><p>Make the tickets yourself.</p></li></ul><p>If you do end up having to make their tickets yourself&#8202;&#8212;&#8202;don&#8217;t despair! You still get the benefits of tracking and conscious prioritization for the effort.As an added bonus, you can say that you&#8217;re project managing the stragglers&#8217; projects and get a sweet bonus.</p><h3>Monitor, Improve,&nbsp;Extract</h3><p>After a while, you should have an intake process that is being curated and used by most of the company. Now, you&#8217;re ready to start improving things and extracting the long-term benefits.</p><p>At minimum, you should have enough information to know:</p><ul><li><p>How big is the queue?</p></li><li><p>How fast are items coming in?</p></li><li><p>How fast are items being responded to or resolved?</p></li><li><p>What kinds of requests are we receiving / completing?</p></li><li><p>Are certain stakeholder groups over-represented in requests?</p></li></ul><h4>Operational Efficiencies</h4><p>If you follow lean principles or queue management theories at all, you can apply them highly effectively to the intake process to min-max effectiveness and manage towards things like improved cycle time or smaller queue sizes.</p><p>If you use a tool that can track when items move from phase to phase, you can do rapid analysis to identify key metrics like Cycle Time and Lead Time. Pairing that data with data on dates of deployments and releases can enrich the insights you get by helping you identify specific projects that may have caused issues.</p><h4>CFDs</h4><p><a href="https://kanbanzone.com/2019/power-of-cumulative-flow-diagram/">Cumulative Flow Diagrams</a> can tell you whether bottlenecks are forming, the rate of change of the inflow and outflow, and more. They are a great way to help manage team work execution.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FNJ2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac550d80-add9-4f09-8188-11d0b00f00b7_800x315.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FNJ2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac550d80-add9-4f09-8188-11d0b00f00b7_800x315.png 424w, https://substackcdn.com/image/fetch/$s_!FNJ2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac550d80-add9-4f09-8188-11d0b00f00b7_800x315.png 848w, https://substackcdn.com/image/fetch/$s_!FNJ2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac550d80-add9-4f09-8188-11d0b00f00b7_800x315.png 1272w, https://substackcdn.com/image/fetch/$s_!FNJ2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac550d80-add9-4f09-8188-11d0b00f00b7_800x315.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FNJ2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac550d80-add9-4f09-8188-11d0b00f00b7_800x315.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac550d80-add9-4f09-8188-11d0b00f00b7_800x315.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FNJ2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac550d80-add9-4f09-8188-11d0b00f00b7_800x315.png 424w, https://substackcdn.com/image/fetch/$s_!FNJ2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac550d80-add9-4f09-8188-11d0b00f00b7_800x315.png 848w, https://substackcdn.com/image/fetch/$s_!FNJ2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac550d80-add9-4f09-8188-11d0b00f00b7_800x315.png 1272w, https://substackcdn.com/image/fetch/$s_!FNJ2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac550d80-add9-4f09-8188-11d0b00f00b7_800x315.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">CFDs can tell you whether bottlenecks are forming at specific&nbsp;phases.</figcaption></figure></div><h4>Category Trends</h4><p>Categorization of the types of requests you are getting can provide actionable insights into your development effectiveness and acts as a good trailing indicator that can inform hiring or development strategies.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tedj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d5c8478-5b19-4d77-92ba-2e0fff931bd4_800x402.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tedj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d5c8478-5b19-4d77-92ba-2e0fff931bd4_800x402.png 424w, https://substackcdn.com/image/fetch/$s_!tedj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d5c8478-5b19-4d77-92ba-2e0fff931bd4_800x402.png 848w, https://substackcdn.com/image/fetch/$s_!tedj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d5c8478-5b19-4d77-92ba-2e0fff931bd4_800x402.png 1272w, https://substackcdn.com/image/fetch/$s_!tedj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d5c8478-5b19-4d77-92ba-2e0fff931bd4_800x402.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tedj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d5c8478-5b19-4d77-92ba-2e0fff931bd4_800x402.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d5c8478-5b19-4d77-92ba-2e0fff931bd4_800x402.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tedj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d5c8478-5b19-4d77-92ba-2e0fff931bd4_800x402.png 424w, https://substackcdn.com/image/fetch/$s_!tedj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d5c8478-5b19-4d77-92ba-2e0fff931bd4_800x402.png 848w, https://substackcdn.com/image/fetch/$s_!tedj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d5c8478-5b19-4d77-92ba-2e0fff931bd4_800x402.png 1272w, https://substackcdn.com/image/fetch/$s_!tedj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d5c8478-5b19-4d77-92ba-2e0fff931bd4_800x402.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Simple charts like above can reveal important trends&#8202;&#8212;&#8202;in this case, a rapid development of features led to a significant increase in bug requests.</figcaption></figure></div><p>There&#8217;s a surprisingly large amount of thinking that goes into something as small as setting up an intake process. The hidden complexities can have second and third order effects that can make or break team effectiveness.</p><p><strong>It&#8217;s thinking worth doing.</strong></p><p>Getting an intake process <em>juuuuuust </em>right for your organization is a journey&#8212; use this post as a starting point to help guide the conversations to be had, not as a concrete dogma.</p>]]></content:encoded></item></channel></rss>