<?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[Engineering Land]]></title><description><![CDATA[The world's #engineering channel. News, how-tos and deep dives for software engineers, managers, designers, and other makers.]]></description><link>https://newsletter.engineering.land</link><image><url>https://substackcdn.com/image/fetch/$s_!-_dn!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30aea71c-c4d4-42f1-85d9-33d29617f62d_608x608.png</url><title>Engineering Land</title><link>https://newsletter.engineering.land</link></image><generator>Substack</generator><lastBuildDate>Wed, 08 Apr 2026 19:56:46 GMT</lastBuildDate><atom:link href="https://newsletter.engineering.land/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Marcelo Wiermann]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[engineering.land@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[engineering.land@substack.com]]></itunes:email><itunes:name><![CDATA[Marcelo Wiermann]]></itunes:name></itunes:owner><itunes:author><![CDATA[Marcelo Wiermann]]></itunes:author><googleplay:owner><![CDATA[engineering.land@substack.com]]></googleplay:owner><googleplay:email><![CDATA[engineering.land@substack.com]]></googleplay:email><googleplay:author><![CDATA[Marcelo Wiermann]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The Garage Team: 3 Engineers who can GTD and GTM]]></title><description><![CDATA[Three types of engineer who can help startups speed run any new project - if supported correctly]]></description><link>https://newsletter.engineering.land/p/the-garage-team-3-engineers-who-can</link><guid isPermaLink="false">https://newsletter.engineering.land/p/the-garage-team-3-engineers-who-can</guid><dc:creator><![CDATA[Marcelo Wiermann]]></dc:creator><pubDate>Sun, 16 Jul 2023 09:42:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5qdU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a93992-0ff5-440d-8c47-af54e746e6b9_638x658.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_!5qdU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a93992-0ff5-440d-8c47-af54e746e6b9_638x658.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5qdU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a93992-0ff5-440d-8c47-af54e746e6b9_638x658.png 424w, https://substackcdn.com/image/fetch/$s_!5qdU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a93992-0ff5-440d-8c47-af54e746e6b9_638x658.png 848w, https://substackcdn.com/image/fetch/$s_!5qdU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a93992-0ff5-440d-8c47-af54e746e6b9_638x658.png 1272w, https://substackcdn.com/image/fetch/$s_!5qdU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a93992-0ff5-440d-8c47-af54e746e6b9_638x658.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5qdU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a93992-0ff5-440d-8c47-af54e746e6b9_638x658.png" width="638" height="658" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94a93992-0ff5-440d-8c47-af54e746e6b9_638x658.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:658,&quot;width&quot;:638,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:620920,&quot;alt&quot;:&quot;&quot;,&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!5qdU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a93992-0ff5-440d-8c47-af54e746e6b9_638x658.png 424w, https://substackcdn.com/image/fetch/$s_!5qdU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a93992-0ff5-440d-8c47-af54e746e6b9_638x658.png 848w, https://substackcdn.com/image/fetch/$s_!5qdU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a93992-0ff5-440d-8c47-af54e746e6b9_638x658.png 1272w, https://substackcdn.com/image/fetch/$s_!5qdU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a93992-0ff5-440d-8c47-af54e746e6b9_638x658.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">The birthplace of Apple</figcaption></figure></div><p>The first six to twelve months and the first five to ten people will make or break your new project. With so little time and so few people, every one of them counts.</p><p>Let's meet your garage team&#8212;the three engineering types that hold the potential to create something extraordinary.</p><div><hr></div><p><em>NOTE: this post is directed at early stage projects and founders. If you are an engineer, however, you might find interesting learning about these types of successful startup engineers and whether you fit (or could fit) into any one of them. Read on!</em></p><div><hr></div><h1>The Garage</h1><p>The garage - a symbol of Silicon Valley and the birthplace of groundbreaking companies like Apple.</p><p>Startups can sprout from garages, cramped apartments, small offices above Chinese restaurants, or any other unlikely space. These places may not be glamorous, but they offer affordability and a sense of resourcefulness that defines the startup spirit.</p><p>When you consider the limited resources, lack of established company reputation, and constrained physical space, it becomes clear that your team for these new projects won't necessarily consist of your typical FAANG employee.</p><p>But fear not! By doing it right, you can assemble an extraordinary garage band of misfits, rebels, and troublemakers&#8212;people who perceive the world through a different lens.</p><h2>&#129302; The Coding Machine</h2><p>Every garage team needs at least one coding machine. These are <a href="https://newsletter.engineering.land/p/engineering-levels-a-simple-framework">early to mid career</a>, no-nonsense engineers who get things done - fast. These green-loving heroes rejoice seeing green tests passing, green code reviews, and green deployments.</p><p>They're happiest when they're knee-deep in their code editors, ready to rock and roll. They don&#8217;t like endless theoretical discussions, careful planning, or anything keeping them from getting things done. PMs love them.</p><p>However, their always-be-shipping attitude can sometimes lead to an escalating technical debt, an unstable user experience, and a codebase that's hard to build upon.</p><h3>Supporting them: keep the momentum rolling</h3><p>Create an environment that lets them shine. Ditch those never-ending "synch" meetings, marathon standups, and red tape. Make sure they always have a good product backlog to pull from or at least a clear sense of direction.</p><p>Pro tip: Pair them up with a seasoned colleague. Without effective leadership, they may prioritize immediate tasks over critical, long term problem-solving. That's when you end up with tech debt that could kill your team&#8217;s momentum.</p><p>It's important to acknowledge that these individuals are often the unsung heroes within companies. While they may not seek the spotlight like their flashier and more ambitious counterparts, they are the reliable workhorses who consistently deliver results.</p><p>Make no mistake though - having a solid core of these individuals will ensure that you always have plenty of <em>oomph</em> available on tap, should you know how to use it. So find them, support them, and give them the credit they&#8217;re due. They won&#8217;t always ask for it.</p><h2>&#10084;&#65039;&#8205;&#128293; The High Potential</h2><p>These are your limit breakers. They defy expectations. These individuals are bright, hardworking, and endlessly curious. They possess an incredible ability to learn and excel in almost anything they set their minds to.</p><p>Mostly younger, high potentials pack a punch beyond their years. They often outperform others in remarkable ways, fueled by their sheer effort and brilliance.</p><p>They are incredibly flexible. They will learn how to build platforms, design high throughput APIs, basic data engineering, handle payments, and so on. The team needs it, they got it covered.</p><p>High potentials love to learn. They are at their happiest when they are getting things done and learning. Too much red tape or repetitive tasks and you risk disengaging them.</p><p>Their lack of experience can lead to an escalating tech debt, even worse than coding machines. Don&#8217;t be surprised if high potentials randomly come up with a solution to a major, possibly unknown, problem that they developed over the weekend, with no input or prompting from anyone. While these solutions often work, their technical quality can be hit-or-miss.</p><p>PMs love them too.</p><h3>Supporting them: push and pull</h3><p>Supporting high potentials is a constant game of push and pull.</p><p>Push them hard with big challenges where they can learn new things and grow. Given them context and make sure that they know what the next big challenge is. Give them the tools they need, remove blockers, and they will impress you.</p><p>Pull them back when they are over-doing it (ex: too many all nighters). High potentials need a limiter. Otherwise, they will burn bright and fast. Next thing you know, they resigned and went on an Appalachian trail hike to &#8220;find themselves&#8221;, &#8220;connect with nature&#8221;, and &#8220;recharge&#8221;. It&#8217;s that sudden.</p><p>Create a lean environment that they can thrive in and pair them with a seasoned colleague who they can learn from.</p><p>Unlike coding machines, who find joy in shipping multiple REST APIs and gradually improving, high potentials can easily grow bored and disengage.</p><p>Supporting high potentials can be demanding as they constantly push boundaries and expect a lot from their leaders. Stay one step ahead and be ready to meet their demands. If you can manage that, their accomplishments will leave you truly impressed.</p><h2>&#128526; The Tech Lead</h2><p>Imagine this scene: your team is gathered around a whiteboard, grappling with a challenging problem for hours. They're stumped. Your high potentials have scoured Stack Overflow and devised an, um, interesting solution. Your coding machines have mostly stopped listening, fired up their laptops, and are ready to commit some half-baked code.</p><p>And then, in walks the Tech Lead. They take a glance at the whiteboard and exclaim, "Oh, that's a cool problem, I&#8217;ve seen it before!&#8221;, and proceed to thoroughly solve it while getting the buy-in of most folks in the room. In 20 minutes.</p><p>The Tech Lead has a unique combination of experience, soft and hard skills, coaching ability, and unwavering resilience under pressure.</p><p>They are seasoned engineers who have tackled a wide array of problems&#8212;queues, CDNs, stream processing, platforms, you name it.</p><p>The key term is &#8220;real world experience&#8221;, not theoretical knowledge. There&#8217;s a big difference.</p><p>These "been there, done that" individuals can save teams weeks, if not months, of costly trial and error and technical debt by swiftly proposing well-designed, functional solutions.</p><p>A good Tech Lead knows how to navigate the strengths of both coding machines and high potentials. They strike a balance, guiding their growth while leveraging their expertise.</p><p>Now, a word of caution: don't assume that any successful senior engineer from a renowned company automatically fits the Tech Lead description. These exceptional individuals possess a unique blend of technical skills, soft skills, ability to thrive under pressure and ambiguity, and a healthy dose of pragmatism. The link below explains the type well.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:128176248,&quot;url&quot;:&quot;https://www.thecaringtechie.com/p/so-you-want-to-be-a-tech-lead&quot;,&quot;publication_id&quot;:341480,&quot;publication_name&quot;:&quot;Musings Of A Caring Techie&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf5b345b-fff0-4b91-a3d6-9e394fda0510_1280x1280.png&quot;,&quot;title&quot;:&quot;So you want to be a Tech Lead&quot;,&quot;truncated_body_text&quot;:&quot;Be we jump into the article, I wanted to let you know I had the honor to be a guest on the &#8220;The Elevate - Women in Tech&#8221; podcast hosted by the lovely Kellie Kwarteng. We delve into my tech career progression, from my school years all the way to moving to California to work in Silicon Valley. &#128170;&quot;,&quot;date&quot;:&quot;2023-06-14T12:25:12.532Z&quot;,&quot;like_count&quot;:21,&quot;comment_count&quot;:4,&quot;bylines&quot;:[{&quot;id&quot;:4332862,&quot;name&quot;:&quot;Irina Stanescu&quot;,&quot;handle&quot;:&quot;thecaringtechie&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/321918c5-41fa-4bf8-bf6a-c8711783d74d_1242x1213.jpeg&quot;,&quot;bio&quot;:&quot;Staff Software Engineer turned hands-on leader and leadership coach. Ex-Google, ex-Uber, currently at an early stage startup. \n\nI write a bi-weekly newsletter for leaders and ICs about leadership, tech culture and building a thriving career.&quot;,&quot;profile_set_up_at&quot;:&quot;2021-04-26T22:53:28.565Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:262680,&quot;user_id&quot;:4332862,&quot;publication_id&quot;:341480,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:341480,&quot;name&quot;:&quot;Musings Of A Caring Techie&quot;,&quot;subdomain&quot;:&quot;thecaringtechie&quot;,&quot;custom_domain&quot;:&quot;www.thecaringtechie.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;A newsletter about humans, leadership, and the tech industry based on my experience at companies from Big Tech (Google, Uber) to early-stage startups.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/df5b345b-fff0-4b91-a3d6-9e394fda0510_1280x1280.png&quot;,&quot;author_id&quot;:4332862,&quot;theme_var_background_pop&quot;:&quot;#67bdfc&quot;,&quot;created_at&quot;:&quot;2021-04-20T02:08:08.146Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:&quot;Irina Stanescu from The Caring Techie&quot;,&quot;copyright&quot;:&quot;Irina Stanescu&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://www.thecaringtechie.com/p/so-you-want-to-be-a-tech-lead?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!Tq-9!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf5b345b-fff0-4b91-a3d6-9e394fda0510_1280x1280.png" loading="lazy"><span class="embedded-post-publication-name">Musings Of A Caring Techie</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">So you want to be a Tech Lead</div></div><div class="embedded-post-body">Be we jump into the article, I wanted to let you know I had the honor to be a guest on the &#8220;The Elevate - Women in Tech&#8221; podcast hosted by the lovely Kellie Kwarteng. We delve into my tech career progression, from my school years all the way to moving to California to work in Silicon Valley. &#128170;&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">3 years ago &#183; 21 likes &#183; 4 comments &#183; Irina Stanescu</div></a></div><h3>Supporting them: create a partnership</h3><p>Alignment on the macro and accountability on the micro&#8212;these are the foundations of supporting a Tech Lead.</p><p>Create a "highly aligned, loosely coupled" environment. Tech Leads thrive when they have sufficient context and guidance to understand what success looks like, coupled with the freedom to execute.</p><p>So partner with them: establish responsibility and accountability, and let them solve the toughest problems for you.</p><p>They should be able to lead small groups of engineers, including coding machines and high potentials, to conquer challenging projects while fostering growth.</p><p>Tech Leads excel at crafting solutions that work well and take near future into consideration. However, be sure to challenge them if you spot signs of over-engineering. Their wealth of knowledge can sometimes blind them to simple, effective solutions that are good enough in the right context.</p><h1>What&#8217;s Next</h1><p>Whether you find yourself in a humble garage or an unconventional workspace, remember that greatness can arise from the most unexpected places.</p><p>The coding machines, with their unwavering focus and rapid delivery, lay the foundation for productivity.</p><p>The high potentials, with their boundless curiosity and ability to learn anything, push boundaries and drive innovation.</p><p>The Tech Lead, with their wealth of real-world experience, problem-solving prowess, and effective soft skills, guides the team to well-crafted, efficient solutions, and happy users.</p><p>Supporting these extraordinary individuals requires work. Create an environment that allows the coding machines to shine, free from unnecessary bureaucracy and with clear direction. Nurture the high potentials, providing them with challenging opportunities to grow. Forge a partnership with the Tech Lead, aligning on the big picture while entrusting them with solving the toughest problems.</p><p>Finding such great people can be a challenge. I <a href="https://newsletter.engineering.land/p/how-to-hire-great-engineering-without">wrote about tech hiring in the past</a>, so that should help you get started.</p><p>Now go out there and build something great!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading #engineering! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Beyond LIKE: Creating Magic-like Semantic Search Experiences]]></title><description><![CDATA[How agile teams can leverage LLMs, Vector Databases, and friends to quickly launch cutting-edge semantic search experiences for fame & profit]]></description><link>https://newsletter.engineering.land/p/beyond-like-creating-magic-like-semantic</link><guid isPermaLink="false">https://newsletter.engineering.land/p/beyond-like-creating-magic-like-semantic</guid><dc:creator><![CDATA[Marcelo Wiermann]]></dc:creator><pubDate>Thu, 06 Jul 2023 16:22:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/26f9a3e7-4a88-43fb-af92-cde4b16b6d22_1686x765.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_!p-oA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8db7c209-acfb-4a9e-a81a-423c964663dd_1493x576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p-oA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8db7c209-acfb-4a9e-a81a-423c964663dd_1493x576.png 424w, https://substackcdn.com/image/fetch/$s_!p-oA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8db7c209-acfb-4a9e-a81a-423c964663dd_1493x576.png 848w, https://substackcdn.com/image/fetch/$s_!p-oA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8db7c209-acfb-4a9e-a81a-423c964663dd_1493x576.png 1272w, https://substackcdn.com/image/fetch/$s_!p-oA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8db7c209-acfb-4a9e-a81a-423c964663dd_1493x576.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p-oA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8db7c209-acfb-4a9e-a81a-423c964663dd_1493x576.png" width="1456" height="562" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8db7c209-acfb-4a9e-a81a-423c964663dd_1493x576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:562,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:111335,&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_!p-oA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8db7c209-acfb-4a9e-a81a-423c964663dd_1493x576.png 424w, https://substackcdn.com/image/fetch/$s_!p-oA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8db7c209-acfb-4a9e-a81a-423c964663dd_1493x576.png 848w, https://substackcdn.com/image/fetch/$s_!p-oA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8db7c209-acfb-4a9e-a81a-423c964663dd_1493x576.png 1272w, https://substackcdn.com/image/fetch/$s_!p-oA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8db7c209-acfb-4a9e-a81a-423c964663dd_1493x576.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>It&#8217;s remarkable how so many things are made better with great search. Google made it easy for normal folks to find whatever they needed online, no matter how obscure. IDEA&#8217;s fuzzy matching and symbol search helped programmers forget the directory structure of their code bases. AirTag added advanced spatial location to my cat. A well-crafted discovery feature can help add that &#8220;wow&#8221; factor that iconic, habit forming products have.</p><p>In this post I&#8217;ll cover how a fast-moving team can leverage Large Language Models (LLMs), Vector Databases, Machine Learning, and other goodies to create a wow-inspiring search and discovery experience with startup money and (lack of) time.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.engineering.land/subscribe?"><span>Subscribe now</span></a></p><h1>Semantic Search</h1><p><em>Semantic Search</em> is a search method for surfacing highly relevant results based on the <strong>meaning</strong> of the query, context, and content. It goes beyond simple keyword indexing or filtering. It allows users to find things more naturally and with better support nuance than highly sophisticated but rigid traditional relevancy methods. In practice, it feels like the difference between asking a real person or talking to a machine.</p><p>Tech companies from all over the world are racing to add these capabilities to their existing products. Instacart <a href="https://tech.instacart.com/how-instacart-uses-machine-learning-driven-autocomplete-to-help-people-fill-their-carts-9bc56d22bafb">published an extensive article</a> on how they added semantic deduplication to their search experience. Examples of companies implementing some form of semantic search include eBay, Shopee, Ikea, Walmart, and many others.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!r5Im!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29048338-3131-4556-b38f-13682c440d7d_700x393.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r5Im!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29048338-3131-4556-b38f-13682c440d7d_700x393.png 424w, https://substackcdn.com/image/fetch/$s_!r5Im!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29048338-3131-4556-b38f-13682c440d7d_700x393.png 848w, https://substackcdn.com/image/fetch/$s_!r5Im!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29048338-3131-4556-b38f-13682c440d7d_700x393.png 1272w, https://substackcdn.com/image/fetch/$s_!r5Im!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29048338-3131-4556-b38f-13682c440d7d_700x393.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r5Im!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29048338-3131-4556-b38f-13682c440d7d_700x393.png" width="700" height="393" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29048338-3131-4556-b38f-13682c440d7d_700x393.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:393,&quot;width&quot;:700,&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;:false,&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_!r5Im!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29048338-3131-4556-b38f-13682c440d7d_700x393.png 424w, https://substackcdn.com/image/fetch/$s_!r5Im!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29048338-3131-4556-b38f-13682c440d7d_700x393.png 848w, https://substackcdn.com/image/fetch/$s_!r5Im!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29048338-3131-4556-b38f-13682c440d7d_700x393.png 1272w, https://substackcdn.com/image/fetch/$s_!r5Im!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29048338-3131-4556-b38f-13682c440d7d_700x393.png 1456w" sizes="100vw"></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">Source: Instacart</figcaption></figure></div><p>The reason for this rush towards semantic search is simple: more relevant results = happier customers = more money. Discovery, relevancy, and trustworthiness are some of the hardest problems to solve in e-commerce, and an entire ecosystem exists to help companies solve them.</p><p>Many companies working on semantic search today solve this problem using <em>document embeddings</em> - a way of representing meaning as vectors. Since semantic search alone may not be able to provide enough relevant hits, traditional full text indexing is used as a backup method. A feedback loop is added to track user interactions and use them to provide super relevant results through result re-ranking.</p><p>This method has three key processes: <strong>indexing</strong>, <strong>querying</strong>, and <strong>tracking</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_!u0cX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc502234a-e79b-49ee-bea8-e440be8b2187_2016x943.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u0cX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc502234a-e79b-49ee-bea8-e440be8b2187_2016x943.png 424w, https://substackcdn.com/image/fetch/$s_!u0cX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc502234a-e79b-49ee-bea8-e440be8b2187_2016x943.png 848w, https://substackcdn.com/image/fetch/$s_!u0cX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc502234a-e79b-49ee-bea8-e440be8b2187_2016x943.png 1272w, https://substackcdn.com/image/fetch/$s_!u0cX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc502234a-e79b-49ee-bea8-e440be8b2187_2016x943.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u0cX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc502234a-e79b-49ee-bea8-e440be8b2187_2016x943.png" width="1456" height="681" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c502234a-e79b-49ee-bea8-e440be8b2187_2016x943.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:681,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:147550,&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_!u0cX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc502234a-e79b-49ee-bea8-e440be8b2187_2016x943.png 424w, https://substackcdn.com/image/fetch/$s_!u0cX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc502234a-e79b-49ee-bea8-e440be8b2187_2016x943.png 848w, https://substackcdn.com/image/fetch/$s_!u0cX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc502234a-e79b-49ee-bea8-e440be8b2187_2016x943.png 1272w, https://substackcdn.com/image/fetch/$s_!u0cX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc502234a-e79b-49ee-bea8-e440be8b2187_2016x943.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">Document indexing.</figcaption></figure></div><p><strong>Indexing</strong> is done by converting a document&#8217;s content to an embeddings vector through a text-to-vector encoder (ex: OpenAI&#8217;s <em>Embeddings</em> API) and inserting it into a Vector Database (ex; Qdrant, Milvus, Pinecone, etc.). Documents are also indexed in a traditional full text search engine (ex: Elasticsearch).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!azew!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69106962-dcf4-402b-8349-c8fe84d66f6c_1867x1556.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!azew!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69106962-dcf4-402b-8349-c8fe84d66f6c_1867x1556.png 424w, https://substackcdn.com/image/fetch/$s_!azew!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69106962-dcf4-402b-8349-c8fe84d66f6c_1867x1556.png 848w, https://substackcdn.com/image/fetch/$s_!azew!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69106962-dcf4-402b-8349-c8fe84d66f6c_1867x1556.png 1272w, https://substackcdn.com/image/fetch/$s_!azew!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69106962-dcf4-402b-8349-c8fe84d66f6c_1867x1556.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!azew!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69106962-dcf4-402b-8349-c8fe84d66f6c_1867x1556.png" width="1456" height="1213" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/69106962-dcf4-402b-8349-c8fe84d66f6c_1867x1556.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1213,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:218396,&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_!azew!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69106962-dcf4-402b-8349-c8fe84d66f6c_1867x1556.png 424w, https://substackcdn.com/image/fetch/$s_!azew!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69106962-dcf4-402b-8349-c8fe84d66f6c_1867x1556.png 848w, https://substackcdn.com/image/fetch/$s_!azew!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69106962-dcf4-402b-8349-c8fe84d66f6c_1867x1556.png 1272w, https://substackcdn.com/image/fetch/$s_!azew!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69106962-dcf4-402b-8349-c8fe84d66f6c_1867x1556.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">Query and feedback loop.</figcaption></figure></div><p><strong>Querying</strong> relies on encoding incoming queries into vectors (preferably using the same encoder as the previous step) and querying the vector database using them. These results are then combined with traditional full text results and re-ranked for relevancy. This combination is usually referred to as &#8220;hybrid search&#8221;. Search re-ranking is usually a complex problem, and often relies on a mix of machine learning and heuristics.</p><p><strong>Tracking</strong> involves capturing important user interactions - ex: clicking on results, liking items, etc. - and using these events to update the machine learning models involved in re-ranking. This provides a feedback loop that uses user input to continuously improve relevancy.</p><h1>MVP</h1><p>Most companies should not copy the architectures of large tech behemoths, startups least of all. The realities are just too different. That&#8217;s not to say that we can&#8217;t borrow a few tricks from them to implement a reasonably good solution with non-infinite budget and time.</p><p>The approach I&#8217;m going to explore here is based on mixing semantic search and full text results, re-ranking them for increased relevancy, and tracking user feedback to improve search quality. This is a combination of <em>hybrid search</em> (full text + semantic) and <em><a href="https://opensearch.org/blog/ltr-with-opensearch-and-metarank/">learn-to-rank</a></em> (closed loop re-ranking).</p><p>Vector similarity search will be addressed by <a href="https://qdrant.tech">Qdrant</a>. Qdrant is as <a href="https://qdrant.tech/benchmarks">fast</a> vector database with a wonderful developer experience. Getting started with it was a breeze, the company recently raised a <a href="https://techcrunch.com/2023/04/19/qdrant-an-open-source-vector-database-startup-wants-to-help-ai-developers-leverage-unstructured-data/">healthy investment round</a>, and the team is actively responding to community feedback and improving the product. A great system to start your vector journey with, especially considering some of the alternatives.</p><p>I am also using <a href="https://platform.openai.com/docs/guides/embeddings">OpenAI&#8217;s Embeddings API</a> to encode text into embeddings. OpenAI&#8217;s <code>text-embedding-ada-002</code> model is quite good, but there are other players in the market today. You can also checkout <a href="https://cohere.com">Cohere</a> or even self-hosted models, like <a href="https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2">all-MiniLM-L6-v2</a>. I recommend starting with cloud-hosted ones for simplicity though.</p><p>Our full text search part will be done by <a href="https://elastic.co">ElasticSearch</a> (ES). ES is a mature, batteries-included search system with many capabilities. Interestingly, Elastic seems to be <a href="https://www.elastic.co/what-is/vector-search">deeply interested in vector search</a>. Definitely something to keep an eye on.</p><p>Re-ranking will be handled by <a href="https://metarank.ai">Metarank</a>. Search re-ranking is a <strong>hard</strong> problem, and I&#8217;m surprised that there is a relatively easy to use open source solution available. The re-ranking part is somewhat complex (especially when you get to fine-tuning), so I would recommend that you first get the basic indexing and search working and add re-ranking on top.</p><p><em>NOTE: the reason why we usually need to combine semantic search and full text results is that semantic search may not return enough hits. Your specific results may vary, so feel free to experiment!</em></p><h2>Indexing</h2><p>The first step is to <strong>index items</strong> for search. Items could be anything - products, locations, sellers, images, etc. Items are stored in the main database (MongoDB in this example), which serves as the source of truth.</p><p>To index items we will push changes (inserts, updates, and deletions) into a <strong>Kafka</strong> topic, which will then be consumed by multiple processors. Redis queues would work too. This is a pull-type architecture and it is quite robust in production. You could call each system directly from the Items API, but this can easily lead to partially indexed items.</p><p>Three processors consume this topic:</p><ul><li><p><strong>Full Text Indexer</strong>: updates the full text index (ElasticSearch in our example).</p></li><li><p><strong>Semantic Indexer</strong>: assembles text strings from item changes (ex: product titles + description), encodes them into vector embeddings, and saves them to the vector database (Qdrant).</p></li><li><p><strong>Item Ranking Updater</strong>: updates Metarank&#8217;s item metadata.</p></li></ul><p>Note that none of these systems will generally contain the full item data, which is usually unnecessary (and costly).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4sj9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590fd4c4-cc3a-4b10-a106-92d8e4363267_1298x1050.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4sj9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590fd4c4-cc3a-4b10-a106-92d8e4363267_1298x1050.png 424w, https://substackcdn.com/image/fetch/$s_!4sj9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590fd4c4-cc3a-4b10-a106-92d8e4363267_1298x1050.png 848w, https://substackcdn.com/image/fetch/$s_!4sj9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590fd4c4-cc3a-4b10-a106-92d8e4363267_1298x1050.png 1272w, https://substackcdn.com/image/fetch/$s_!4sj9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590fd4c4-cc3a-4b10-a106-92d8e4363267_1298x1050.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4sj9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590fd4c4-cc3a-4b10-a106-92d8e4363267_1298x1050.png" width="1298" height="1050" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/590fd4c4-cc3a-4b10-a106-92d8e4363267_1298x1050.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1050,&quot;width&quot;:1298,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:184817,&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_!4sj9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590fd4c4-cc3a-4b10-a106-92d8e4363267_1298x1050.png 424w, https://substackcdn.com/image/fetch/$s_!4sj9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590fd4c4-cc3a-4b10-a106-92d8e4363267_1298x1050.png 848w, https://substackcdn.com/image/fetch/$s_!4sj9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590fd4c4-cc3a-4b10-a106-92d8e4363267_1298x1050.png 1272w, https://substackcdn.com/image/fetch/$s_!4sj9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590fd4c4-cc3a-4b10-a106-92d8e4363267_1298x1050.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">Item indexing.</figcaption></figure></div><h2>Querying</h2><p>This is where things get interesting.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WHbQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5941fa90-936f-41a6-8baa-761cb647c008_2166x1222.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WHbQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5941fa90-936f-41a6-8baa-761cb647c008_2166x1222.png 424w, https://substackcdn.com/image/fetch/$s_!WHbQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5941fa90-936f-41a6-8baa-761cb647c008_2166x1222.png 848w, https://substackcdn.com/image/fetch/$s_!WHbQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5941fa90-936f-41a6-8baa-761cb647c008_2166x1222.png 1272w, https://substackcdn.com/image/fetch/$s_!WHbQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5941fa90-936f-41a6-8baa-761cb647c008_2166x1222.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WHbQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5941fa90-936f-41a6-8baa-761cb647c008_2166x1222.png" width="1456" height="821" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5941fa90-936f-41a6-8baa-761cb647c008_2166x1222.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:821,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:220380,&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_!WHbQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5941fa90-936f-41a6-8baa-761cb647c008_2166x1222.png 424w, https://substackcdn.com/image/fetch/$s_!WHbQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5941fa90-936f-41a6-8baa-761cb647c008_2166x1222.png 848w, https://substackcdn.com/image/fetch/$s_!WHbQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5941fa90-936f-41a6-8baa-761cb647c008_2166x1222.png 1272w, https://substackcdn.com/image/fetch/$s_!WHbQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5941fa90-936f-41a6-8baa-761cb647c008_2166x1222.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">Querying</figcaption></figure></div><p>Our Search API works in four major processes:</p><ul><li><p><strong>Search</strong>: the first step consists in sending the query to our two providers - Full Text (ElasticSearch) and Semantic (Qdrant).</p><ul><li><p>Notice that the semantic search provider needs to first convert the query into vector embeddings much like the semantic indexer.</p></li><li><p>This is a good step to perform some pre-filtering, like simple criteria (ex: category IDs), geographical radius, etc.</p></li></ul></li><li><p><strong>Re-ranking</strong>: once the search service collects all hits it routes the full set to the Result Re-ranker, which re-orders them for relevancy <a href="https://docs.metarank.ai/introduction/quickstart">using Metarank</a>.</p><ul><li><p>Metarank does not work without some initial data. You can solve this cold start problem by having a simple ranker as a fallback. I had good results with just adding the top 3 semantic hits at the top and the full text ones after. This generally doesn&#8217;t look half bad, and it&#8217;s just for a little while as real users start using the system. For a more sophisticated approach, check out this <a href="https://www.pinecone.io/learn/metarank">amazing article</a> by Metarank&#8217;s own co-founder.</p></li></ul></li><li><p><strong>Result Generation</strong>: search hits do not generally contain all item information. In order to return a complete human-readable result set we will &#8220;hydrate&#8221; our ranked hit list into a ranked item list.</p><ul><li><p>This is a good place to cache the result list with a relatively short TTL. This helps a lot with things like <strong>pagination</strong> and <strong>sorting</strong>.</p></li><li><p>You may also want to store <strong>search session</strong> metadata here. This is usually <strong>not</strong> the same as a user session. This allows you to group search and result queries later for analysis and ML, and is a parameter that we can pass to Metarank to improve ranking relevancy.</p></li></ul></li><li><p><strong>Result Tracking</strong>: once we have a fully hydrated and paginated set of results we will update Metarank with the exact list of items we are showing users.</p><ul><li><p>This could also be accomplished from the frontend if we want to keep this API simple and fast.</p></li></ul></li></ul><p><em>NOTE: I mapped the different components for the sake of clarity. If you are operating in a small team or startup I would not recommend going around creating tons of micro services!</em></p><h2>Tracking</h2><p>We need to track how users interact with our results so that we can create a <em>learn-to-rank</em> feedback loop. Examples of tracked interactions include viewing results, clicking them, liking them, etc. The least interaction you should track are result clicks.</p><p>This is accomplished by sending these events to a lightweight tracking API, which quickly pushes them to a Kafka topic (a Redis queue or similar would work as well). Since not all data is available in the front end, we may want to first enrich them with internal metadata. Finally, this enriched result is shipped to Metarank (directly reading from Kafka or through its HTTP API) and to a data lake for future analysis.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VtKY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14edd22b-a617-4cc9-9e42-98c8321870aa_1807x546.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VtKY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14edd22b-a617-4cc9-9e42-98c8321870aa_1807x546.png 424w, https://substackcdn.com/image/fetch/$s_!VtKY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14edd22b-a617-4cc9-9e42-98c8321870aa_1807x546.png 848w, https://substackcdn.com/image/fetch/$s_!VtKY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14edd22b-a617-4cc9-9e42-98c8321870aa_1807x546.png 1272w, https://substackcdn.com/image/fetch/$s_!VtKY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14edd22b-a617-4cc9-9e42-98c8321870aa_1807x546.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VtKY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14edd22b-a617-4cc9-9e42-98c8321870aa_1807x546.png" width="1456" height="440" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/14edd22b-a617-4cc9-9e42-98c8321870aa_1807x546.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:440,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:154546,&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_!VtKY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14edd22b-a617-4cc9-9e42-98c8321870aa_1807x546.png 424w, https://substackcdn.com/image/fetch/$s_!VtKY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14edd22b-a617-4cc9-9e42-98c8321870aa_1807x546.png 848w, https://substackcdn.com/image/fetch/$s_!VtKY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14edd22b-a617-4cc9-9e42-98c8321870aa_1807x546.png 1272w, https://substackcdn.com/image/fetch/$s_!VtKY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14edd22b-a617-4cc9-9e42-98c8321870aa_1807x546.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">Interaction tracking.</figcaption></figure></div><p>I am also keeping this at a high level since building such data pipelines by hand nowadays is usually not recommended, especially to small teams. There are plenty of great tools available (ex: Segment, Rudderstack, Fivetran, dbt, Snowplow, etc.) that can help you build a strong data pipeline or plug Metarank into an existing one. For example, here is a chart showing Metarank&#8217;s native integration with Snowplow:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BaLa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3982dd47-a81b-4fc2-99ff-ecec1bacda3c_971x431.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BaLa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3982dd47-a81b-4fc2-99ff-ecec1bacda3c_971x431.png 424w, https://substackcdn.com/image/fetch/$s_!BaLa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3982dd47-a81b-4fc2-99ff-ecec1bacda3c_971x431.png 848w, https://substackcdn.com/image/fetch/$s_!BaLa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3982dd47-a81b-4fc2-99ff-ecec1bacda3c_971x431.png 1272w, https://substackcdn.com/image/fetch/$s_!BaLa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3982dd47-a81b-4fc2-99ff-ecec1bacda3c_971x431.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BaLa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3982dd47-a81b-4fc2-99ff-ecec1bacda3c_971x431.png" width="971" height="431" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3982dd47-a81b-4fc2-99ff-ecec1bacda3c_971x431.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:431,&quot;width&quot;:971,&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_!BaLa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3982dd47-a81b-4fc2-99ff-ecec1bacda3c_971x431.png 424w, https://substackcdn.com/image/fetch/$s_!BaLa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3982dd47-a81b-4fc2-99ff-ecec1bacda3c_971x431.png 848w, https://substackcdn.com/image/fetch/$s_!BaLa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3982dd47-a81b-4fc2-99ff-ecec1bacda3c_971x431.png 1272w, https://substackcdn.com/image/fetch/$s_!BaLa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3982dd47-a81b-4fc2-99ff-ecec1bacda3c_971x431.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">Native Metarank and Snowplow integration. Source: metarank.ai</figcaption></figure></div><p><em>NOTE: This is an optional step, and adds quite a bit of complexity to the system. I suggest you implement this only if you are committed to implementing a full blown learn-to-rank system.</em></p><h1>What&#8217;s Next</h1><p>Creating great search experiences has never been easier. Semantic hybrid search is a solid first step into providing search results beyond <code>LIKE</code>. Customers are slowly but surely becoming used to this increased level of relevancy, which raises the bar for everyone.</p><p>Luckily for small teams, the tooling ecosystem is developing fast.</p><p>Many search tools are striving for convergence. Elasticsearch has a working (but slow) vector search function. Qdrant added lots of filtering capabilities (like match and geo-radius). Metarank ships with a <a href="https://docs.metarank.ai/reference/overview/recommendations/semantic">semantic similarity</a> recommendation model. There may soon come a time where we have a simple, batteries-included system that can do a good job across the board from the get go.</p><p>You can also forgo much of this work and use <a href="https://www.algolia.com/products/neuralsearch/">Algolia NeuralSearch</a> if you have a small number of items, a moderate traffic app (ex: B2B SaaS dashboard), just want to ship a POC fast and see how users respond, or infinite money. It&#8217;s a powerful, fully hosted solution from a company that knows search deeply.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wdTY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41374df5-621e-4368-bc3f-000cb78d4498_1486x767.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wdTY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41374df5-621e-4368-bc3f-000cb78d4498_1486x767.png 424w, https://substackcdn.com/image/fetch/$s_!wdTY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41374df5-621e-4368-bc3f-000cb78d4498_1486x767.png 848w, https://substackcdn.com/image/fetch/$s_!wdTY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41374df5-621e-4368-bc3f-000cb78d4498_1486x767.png 1272w, https://substackcdn.com/image/fetch/$s_!wdTY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41374df5-621e-4368-bc3f-000cb78d4498_1486x767.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wdTY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41374df5-621e-4368-bc3f-000cb78d4498_1486x767.png" width="1456" height="752" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41374df5-621e-4368-bc3f-000cb78d4498_1486x767.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:752,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:841932,&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_!wdTY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41374df5-621e-4368-bc3f-000cb78d4498_1486x767.png 424w, https://substackcdn.com/image/fetch/$s_!wdTY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41374df5-621e-4368-bc3f-000cb78d4498_1486x767.png 848w, https://substackcdn.com/image/fetch/$s_!wdTY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41374df5-621e-4368-bc3f-000cb78d4498_1486x767.png 1272w, https://substackcdn.com/image/fetch/$s_!wdTY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41374df5-621e-4368-bc3f-000cb78d4498_1486x767.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">Source: Algolia</figcaption></figure></div><p>There are many ways to get started, and few excuses to keep giving your users a <em>meh</em> search experience!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading #engineering! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Landing Your First (or Third) Awesome Software Engineering Job, Part 1]]></title><description><![CDATA[Getting that awesome software engineering gig you really want can be hard. Competition is tough, interviewing is exhausting, and you may feel that you don&#8217;t have a lot to show if you are at the beginning of your career. Missing good opportunities despite all the hard work you put into your craft is a horrible feeling. And this is not limited to first-timers - most folks are not &#8220;interview savvy&#8221; until they get burned multiple times.]]></description><link>https://newsletter.engineering.land/p/landing-your-first-or-third-awesome</link><guid isPermaLink="false">https://newsletter.engineering.land/p/landing-your-first-or-third-awesome</guid><dc:creator><![CDATA[Marcelo Wiermann]]></dc:creator><pubDate>Sat, 03 Jun 2023 16:00:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cf0e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e81991-0a27-4b7f-a786-e7084ca00524_1484x613.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_!cf0e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e81991-0a27-4b7f-a786-e7084ca00524_1484x613.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cf0e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e81991-0a27-4b7f-a786-e7084ca00524_1484x613.png 424w, https://substackcdn.com/image/fetch/$s_!cf0e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e81991-0a27-4b7f-a786-e7084ca00524_1484x613.png 848w, https://substackcdn.com/image/fetch/$s_!cf0e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e81991-0a27-4b7f-a786-e7084ca00524_1484x613.png 1272w, https://substackcdn.com/image/fetch/$s_!cf0e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e81991-0a27-4b7f-a786-e7084ca00524_1484x613.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cf0e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e81991-0a27-4b7f-a786-e7084ca00524_1484x613.png" width="1456" height="601" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8e81991-0a27-4b7f-a786-e7084ca00524_1484x613.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:601,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:150161,&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_!cf0e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e81991-0a27-4b7f-a786-e7084ca00524_1484x613.png 424w, https://substackcdn.com/image/fetch/$s_!cf0e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e81991-0a27-4b7f-a786-e7084ca00524_1484x613.png 848w, https://substackcdn.com/image/fetch/$s_!cf0e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e81991-0a27-4b7f-a786-e7084ca00524_1484x613.png 1272w, https://substackcdn.com/image/fetch/$s_!cf0e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e81991-0a27-4b7f-a786-e7084ca00524_1484x613.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></p><p>Getting that awesome software engineering gig you really want can be <strong>hard</strong>. Competition is tough, interviewing is exhausting, and you may feel that you don&#8217;t have a lot to show if you are at the beginning of your career. Missing good opportunities despite all the hard work you put into your craft is a horrible feeling. And this is not limited to first-timers - most folks are not &#8220;interview savvy&#8221; until they get burned multiple times.</p><p>I see many talented, hard working folks struggling to break into tech or to find a role they are happy with. It doesn&#8217;t have to be this way. You can do it. Got it? Good. Let&#8217;s get to work.</p><div><hr></div><p><em><strong>Note to Managers</strong>: while this post is geared towards individual contributors (ICs), I think that you can learn something valuable here too. You can make better hiring decisions by understanding the challenges of modern engineering recruiting from the candidate&#8217;s perspective and creating great interview prep resources for your company. Or just send them this post.</em></p><p><em><strong>This is a multi-part series</strong>. I will cover the entire tech hiring process, end-to-end.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.engineering.land/subscribe?"><span>Subscribe now</span></a></p><h1>The Challenge</h1><blockquote><p>&#8220;People don&#8217;t want to buy a quarter-inch drill, they want a quarter-inch hole.&#8221;</p><p>&#8211; Theodore Levitt</p></blockquote><p>In true <em>Moneyball</em> fashion, companies don&#8217;t &#8220;buy&#8221; engineers, they buy results. Companies want to solve customer problems, ship reasonably good products that don&#8217;t break too often, and make lots of money. Your amazing coding skills and captivating personality are, essentially, means of accomplishing that.</p><p>Recruiting is time, money, and people intensive, not to mention risky. Hiring a developer takes tens to hundreds of <em>people.hours</em> in most companies, and a bad hire can set a project back significantly. To make things worse, most engineering job posts get hundreds, even thousands, of applicants. This means that the time per applicant that staff will dedicate to your post is going to be rather short.</p><p>Many inexperienced applicants believe that recruiting is a perfect process designed to accurately assess their skills and generate deterministic, objective results. This is not true.</p><p>Tech hiring processes are indeed designed to screen for functional competency. They are also designed for cost efficiency (i.e. in terms of people, time, and money), to screen for several desirable traits (ex: teamwork, delivering results, working under pressure, specific cultural values, etc.), to scale to many applicants, and to minimize risk (which is why folks with unconventional backgrounds have such a hard time interviewing).</p><p>Trade-offs include candidate experience and decision quality. They are also driven by real people, further complicating the whole thing. Finally, many tech companies simply don&#8217;t know how to hire engineers, which adds a whole new degree of fun.</p><p>Interviewing is a stressful process. Not everyone will be nice. Some folks may be downright disrespectful or unprepared. Dealing with interviewers who clearly don&#8217;t want to be there or recruiters who ghost candidates is nobody&#8217;s idea of a good time.</p><h2>Anatomy of the Tech Hiring Process</h2><p>I&#8217;ve <a href="https://newsletter.engineering.land/p/how-to-hire-great-engineering-without">written about the general tech hiring process</a> before. They can vary heavily from company to company, but they generally look 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_!rvBw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99bf7900-d93c-403c-8236-ce9657f671fd_2076x797.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rvBw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99bf7900-d93c-403c-8236-ce9657f671fd_2076x797.png 424w, https://substackcdn.com/image/fetch/$s_!rvBw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99bf7900-d93c-403c-8236-ce9657f671fd_2076x797.png 848w, https://substackcdn.com/image/fetch/$s_!rvBw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99bf7900-d93c-403c-8236-ce9657f671fd_2076x797.png 1272w, https://substackcdn.com/image/fetch/$s_!rvBw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99bf7900-d93c-403c-8236-ce9657f671fd_2076x797.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rvBw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99bf7900-d93c-403c-8236-ce9657f671fd_2076x797.png" width="1456" height="559" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99bf7900-d93c-403c-8236-ce9657f671fd_2076x797.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:559,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157448,&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_!rvBw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99bf7900-d93c-403c-8236-ce9657f671fd_2076x797.png 424w, https://substackcdn.com/image/fetch/$s_!rvBw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99bf7900-d93c-403c-8236-ce9657f671fd_2076x797.png 848w, https://substackcdn.com/image/fetch/$s_!rvBw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99bf7900-d93c-403c-8236-ce9657f671fd_2076x797.png 1272w, https://substackcdn.com/image/fetch/$s_!rvBw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99bf7900-d93c-403c-8236-ce9657f671fd_2076x797.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>The first step is the <strong>CV Screening</strong>. This is where a good CV and customized cover letter will help you. Your goal here is to get to a call. This stage includes:</p><ul><li><p><strong>Recruiter CV Screening</strong>: first screening, done by tech recruiters. They won&#8217;t dive too deep. They are looking for basic fitness (ex: programming language or years of experience) or red flags (ex: lots of typos, obviously false info, irrelevant background). Has 100&#8217;s of CVs to review.</p></li><li><p><strong>Hiring Manager CV Screening</strong>: usually your future (engineering) manager. Will look a bit deeper and decide on go/no go for an interview. Has 10&#8217;s of CVs to review.</p></li></ul><p>If you clear the CV Screening then you really are in the game. The next stage is the <strong>Screening Calls</strong>, where you will speak with the recruiter and, hopefully, the hiring manager.</p><p>You won&#8217;t dive too deep here - these calls tend to last 30mins or so. Good screeners will be looking for basic fitness and strong red flags (i.e. deal breakers). Whether screeners share notes with other interviewers varies from company to company. You may get a take-home test from some companies. The goal here is to get to the Deep Dive (a.k.a. on site).</p><p>The final stage is the <strong>Deep Dive</strong>. This is it - the bulk of the interview process happens here. This will take anywhere from 2h to 3 days, with 3-5 1h interviews being common. Common interviews are:</p><ul><li><p><strong>Software Engineering Fundamentals</strong>: this is your typical &#8220;coding interview&#8221;. You will be asked to solve technical problems, varying from Hacker Rank to debugging. You will review your take-home test here if you had one. Be prepared to bring your A-game in terms of algorithms, data structures, programming language knowledge, and basic problem solving.</p></li><li><p><strong>Systems Design</strong>: this is a personal favorite of mine. Here you will solve a real problem with real specs by designing a system that a company (preferably the one you&#8217;re speaking with) could reasonably implement. Think questions like &#8220;design Google Maps&#8221;, or &#8220;design Uber&#8220;, etc. The complexity of the challenge will be fine tuned to the role&#8217;s skill level requirements. Good candidates will ask clarifying questions and use their system design knowledge to create a solution taking into account scale, efficiency, implementation difficulty, trade-offs, etc.</p></li><li><p><strong>Behavioral</strong>: interview focused on understanding how you work within a team, how you operate under pressure, how you own and learn from past mistakes, how you communicate with stakeholders, etc. This is a soft skills focused interview, and many engineers make the mistake of dismissing it. This is a mistake. This interview is as important as the hard-skills focused ones.</p></li><li><p><strong>Bar Raiser (optional)</strong>: the Bar Raiser is an interesting interview. Bar Raisers tend to be very senior folks with specific training to really dig and find your limits. Good bar raisers are uncomfortable - you&#8217;re being pushed, after all. They cover hard and soft skills, and can even factor in notes from previous rounds. Not all companies do Bar Raisers, and they tend to be reserved for more senior roles, but watch out for them! Bar Raisers are highly regarded folks and their opinions hold a lot of sway.</p></li><li><p><strong>Skip Level (optional)</strong>: good news, you are likely one foot into the door (but don&#8217;t let up, you&#8217;re not there yet). This is a call with the boss of your future boss (or even the company founder). It&#8217;s not very structured, but the interviewer expects lots of questions and enthusiasm. They will be doing a sanity check, watching out for red flags other interviewers might have missed, and selling the position hard (they like you, after all). Good candidates will have plenty of questions about the company, product, team, career development prospects, and other relevant topics. Pro-tip: leave questions like vacation policy and bonus payment schedule to your recruiter or offer call.</p></li></ul><p>Assuming everything went well, you will get get an offer. Congratulations! Usually there will be a call to go over the offer details, key dates, contract specifics, etc. It tends to be pretty straightforward. </p><p><em><strong>NOTE</strong>: while this process can vary a lot from company to company, preparing for this standard will usually leave you over-prepared. There&#8217;s no such thing as overkill in interviewing IMHO.</em></p><h1>Before the Interview</h1><blockquote><p>&#8220;Every battle is won before it is fought.&#8221;</p><p>- Sun Tzu</p></blockquote><p>The road to getting an offer starts before any interview is scheduled. There is no hack, shortcut, or silver bullet that will replace preparation and strategic hard work.</p><p>Recruiting is a complex, multi-dimensional process. Shockingly, companies don&#8217;t usually prepare their employees to interview elsewhere. Universities and boot camps generally don&#8217;t do a stellar job either. Preparing is on you. You need two things to be fully prepared: strong <strong>functional</strong> skills and <strong>interview</strong> skills.</p><p>Functional skills - i.e. what you need to do the job - can be divided into hard and soft skills.</p><p>Hard skills include solid software engineering fundamentals, knowledge of core tools and processes (ex: Javascript and Agile), and the ability to solve real problems by designing good solutions, taking into account reasonable business and non-functional requirements. This is usual the easy part for most engineers.</p><p>Soft skills include knowing how to constructively deliver results, individually and as a member of a team; having a growth mindset, constantly learning; communicating effectively, adapting for the audience; being able to self-manage, manage up, and help others. These can be hard to grok for engineers, but are essential.</p><p>Interview skills - i.e. you can convince others that you can do the job - revolve around communications, sales, self-control, and time management. Remember, tech hiring is a risky proposition for companies and you have a limited time budget to prove you can do the job. They won&#8217;t hire otherwise good candidates if the risk is deemed too high, which almost always happens when that candidate interviews badly.</p><p>Cue the training montage!</p><h2>Tenets</h2><p>Let&#8217;s start by establishing a few tenets. Explaining and proving each one is a post in itself so, for now, take these as self-evident truths.</p><p><strong>Competency != offer</strong>. Recruiting is an imperfect process, as are the people involved in it. Just being competent will not, unfortunately, guarantee your success. This can be incredibly frustrating, especially if you end up missing an opportunity that you were super excited about and felt like a perfect fit.</p><p><strong>It&#8217;s a numbers game</strong>. Most folks need to apply to 50+ jobs before succeeding. These numbers can be lower if you are an amazing and really well-prepared candidate. It&#8217;s easy to get discouraged after applying dozens of times without any success. Keep calm. Power through.</p><p><strong>Treat each opportunity as the last job on earth</strong>. Many folks who hear the &#8220;it&#8217;s a numbers game&#8221; spiel end up blasting fifty low-effort, generic applications to every role with &#8220;Software&#8221; in the title. It&#8217;s important to read through every description, tailor your application accordingly, write a custom cover letter when possible, prepare a high quality resume, etc. The person screening your application will likely invest 10-30 seconds doing a first scan, and low-effort / generic applications easily stand out (in a bad way). Respond all emails ASAP and be on time for all calls. Being late is not a major issue if you have a good reason, but it doesn&#8217;t look good.</p><p><strong>Always be selling</strong>. Make no mistake, recruiting is a sales process. The product: you. Keep that in mind at every stage of the process. Be polite. Focus on the positive impact you will bring to the company. Show how you&#8217;ve learned from past wins and mistakes. Do a bit of subtle self promotion too (I know, it&#8217;s hard). You want the best non-fictional version of you to come across at all times.</p><p><strong>Failing to prepare = preparing to fail</strong>. I think we covered this already, but let me reiterate: preparation is key to success if you want that awesome role. <strong>Build a schedule and stick to it</strong>. Preparing will require discipline and hard work. Motivation alone is not enough.</p><p><strong>Learn, iterate, and move on</strong>. Chances are you will fail most of the time. That&#8217;s fine. Don&#8217;t take that personally. Learn from the process, figure out what you can do better, and move on.</p><h2>Preparing</h2><p>First, establish a baseline for the role you are seeking. The job description is the first place to look. I also <a href="https://newsletter.engineering.land/p/engineering-levels-a-simple-framework">wrote on engineering levels</a> before, so you can use that to figure out what skill levels and scopes are behind the JD.</p><p>There is no such thing as being over-prepared for interviewing. If you follow these practices with discipline and dedication, you will be ready (and likely learn a lot in the process). It may take a month or six, but it will happen.</p><h3>Fundamentals &amp; System Design</h3><p>Let&#8217;s start with the more technically-oriented rounds: Software Engineering Fundamentals and System Design.</p><p>Solid software engineering fundamentals include:</p><ul><li><p><strong>Data structures</strong>: knowing basic data structures (ex: maps, arrays, lists, etc.), when to use them, etc.</p></li><li><p><strong>Algorithms</strong>: knowing how to effectively manipulate data and perform work in a variety of scenarios (ex: sorting, looping, searching, filtering, etc.)</p></li><li><p><strong>Tooling</strong>: knowing how to effectively use tools relevant to the target company. Ex: Javascript, AWS, something SQL, etc.</p></li><li><p><strong>Software Design</strong>: techniques and principles to reliably, efficiently, and effectively solve common software problems, like business logic encapsulation and data access. Think Design Patterns, SOLID, Domain-driven Design, TDD, etc. At a more granular level, this includes service objects, repositories, REST, MVC, web components, etc.</p></li><li><p><strong>Development &amp; Operations</strong>: practical skills engineers rely on to develop, build, distribute, operate, and troubleshoot applications. This includes source control, package management, basic deployment and ops (ex: SSH, PaaS, maybe some Kubernetes, etc), application monitoring (ex: using DataDog), debugging, and incident management.</p></li><li><p><strong>Problem Solving</strong>: ability to effectively use all of the above to solve problems, taking into account efficiency, requirements, and constraints.</p></li></ul><p>Start by grinding your way through online code challenges. Setup a regular schedule to solve a couple every day. This can be tedious and frustrating, but it will help you build a good foundation in terms of data structures, algorithms, programming language (part of tooling), and basic problem solving. I strongly recommend using an interview prep platform if you can. My go-to recommendation is <a href="https://www.algoexpert.io">Algoexpert</a>, but there are several options online.</p><p>The best way to develop strong tooling, software design, development &amp; operations, and more complex problem solving is to implement real world applications. If you had a chance of doing this professionally then great! Reflect on what you did, what you learned, and what you think you could do better. You could even re-implement parts of it to test out these concepts.</p><p>Fear not if you didn&#8217;t have a chance of building good practical knowledge. The next best thing to on-the-job-training here is to find interesting or common business problems and build fully fledged applications around them. These can vary from simple TODO and chat applications to cloning Google Maps. You would be surprised how much you can learn if you take this exercise seriously!</p><div><hr></div><p><em><strong>EDIT</strong>: for a fantastic example of the above, check out <a href="https://blog.pragmaticengineer.com/an-educational-side-project/">this blog post</a> from the great Pragmatic Engineer. I love the overkill :)</em></p><div><hr></div><p>Moving on to System Design. I love System Design. This is the ability to solve real-world problems from user to server. This interview will assess:</p><ul><li><p><strong>Requirements Gathering</strong>: the first step to designing a real world system is to accurately and comprehensively understand what problem we are solving and who we are solving it for (a.k.a. the user). These are then translated into clear business and technical requirements and constraints. Bonus: mapping the <em>jobs to be done</em>.</p></li><li><p><strong>Domain Modeling</strong>: translating the problem, requirements, and constraints to a representation of concepts, relationships, and workflows. Good systems tend to stem from well designed domains.</p></li><li><p><strong>System Components</strong>: these are the basic building blocks of any system. Ex: HTTP APIs, load balancers, background workers, stream processors, databases, block storage, etc.</p></li><li><p><strong>System Patterns</strong>: how you can combine components together to solve problems, when to use them effectively, and the difficulties and trade-offs associated. Ex: CRUD HTTP APIs, pub-sub, work queues, event streams, lambda data architecture, database sharding, two-phase commit transactions, etc. This also includes the basics necessary to &#8220;stitch&#8221; components together, like networking protocols, encryption, etc.</p></li><li><p><strong>Infrastructure &amp; Operations</strong>: how to deploy and run the system at the scale necessary. Ex: S3, Kubernetes, Data Dog, Jenkins, etc.</p></li></ul><p>The best way to build system design skills is to, well, build systems. If you have previous experience building complex systems, go back with a critical eye and understand why things were done a certain way and what could be improved.</p><p>You can create proof-of-concept applications solving problems that require non-trivial design patterns (or at least ones you are not familiar with). Building a chat app will help you learn about pub-sub, web sockets, and data bootstrapping. Building a click tracking app will help you learn about high throughput APIs, event streaming, background workers, and analytics.</p><p>I strongly recommend checking out interview prep platforms with good system design sections if you can. Algoexpert is a great choice here too. They have tons of system design videos simulating real interview conditions. I&#8217;m not affiliated with them by the way, just love their work. Way to go, Clement.</p><p>Finally, there are tons of great system design resources online, many available for free. I&#8217;ll link some at the end of this section.</p><p><em><strong>NOTE</strong>: many large tech companies put a lot of emphasis on abstract tech challenge, but startups and younger/nimbler companies really want real world skills.</em></p><h3>Behavioral</h3><p>Moving on to the Behavioral interview, a decidedly soft-skills-focused round. This is where many engineers with strong hard skills tend to slip.</p><p>Sadly, many engineers take too long to understand the importance of soft skills. They are absolutely essential to getting things done in most work environments. The reason is that most businesses are marathons, not a sprints. A &#8220;10X engineer&#8221; with terrible soft skills can deliver a POC or address really complex tickets in record speed while killing morale and efficiency for everyone else. Savvy managers know how to deal with them, but nobody likes working with a jerk long term.</p><p>Some of the main soft skill clusters employers seek are:</p><ul><li><p><strong>Self-Management &amp; Delivering Results</strong>: having strong technical skills is great, but knowing how to apply them to solve problems and deliver results is what employers want. This includes creative problem solving, self-management, working backwards from the desired end-result, and others.</p></li><li><p><strong>Teamwork</strong>: unless you work in a vacuum, you need people to get things done. These can be colleagues, your manager, stakeholders, customers, and others. This cluster includes interpersonal skills, a positive (but not naive) attitude, empathy, and others.</p></li><li><p><strong>Communications</strong>: the ability to effectively get your point across, gather information efficiently, have difficult conversations in a mature way, etc. One key point many engineers take years to learn: adapting for the audience (i.e. what matters to your colleagues may not matter to the Product Manager).</p></li><li><p><strong>Business</strong>: the vast majority of employers want to make money. This means solving real problems to someone for some reason (a.k.a. providing value to customers). Closely related to delivering results. This includes knowing who your customers are, what problems you are solving for them, why those problems are important, what challenges they are currently facing with your solution, etc. Extra bonus points if you remember business KPIs and <em>jobs-to-be-done</em>.</p></li><li><p><strong>Ownership &amp; Growth</strong>: do you take ownership for your wins and your mistakes? Or do you push blame onto others? Do you go the extra mile to identify and fix problems, showing initiative? Do you focus on negatives, or do you learn from your mistakes and move on?</p></li><li><p><strong>Leadership</strong>: leadership does not mean authority. Great engineers, even straight out of college, know how to lead by influence and drive an important project forward. The best &#8220;high potentials&#8221; are those who are also great leaders IMHO. Managers love engineers with high ownership and leadership skills as they tend to be &#8220;fire-and-forget&#8221;, being able to operate in an ambiguous environment with little to no oversight. </p></li></ul><p>It&#8217;s not easy to prepare soft skills outside of real world experience. Worse, employers are really looking for the practical application of these skills, not theoretical answers. This is hard for first-time candidates or those who did not have good experiences so far. That doesn&#8217;t mean that you can&#8217;t prepare or shine. I will write a post dedicated to this in the future, but let&#8217;s focus on a few things you can do right now.</p><p>Self-reflection is your first option. You can reflect on past experiences through the lenses STAR framework. <a href="https://www.mindtools.com/ah3yoie/star-method">STAR</a> stands for &#8220;<em>Situation, Task, Action, and Results</em>&#8221; and provides a way to organize past experiences and analyze them. Example:</p><ul><li><p><strong>Situation</strong>: Our website was slow, which caused significant customer frustration and lowered our conversion rates.</p></li><li><p><strong>Task</strong>: I had to fix the website load speed.</p></li><li><p><strong>Action</strong>: First, I looked at our monitoring and logging to figure out why the website was slow. I noticed that we didn&#8217;t have all the data, so I implemented Solution X to figure out what the issue was. The problem turned out to be our CDN - as in, it did not exist. So I proceeded to setup a CDN with global edge locations to serve our compiled website.</p></li><li><p><strong>Result</strong>: We reduced the website load time by X%. More importantly, I learned that the number of customer complaints reduced significantly, but I do not have the real numbers here with me.</p></li><li><p><strong>Learnings (BONUS)</strong>: I learned that it is really important to have good website monitoring. I think that we could have solved this issue much earlier if we knew what the problem was. Since then, I try to setup really good monitoring from day one when creating or changing anything.</p></li></ul><p><strong>Create a storybook</strong> in STAR format covering as many of the soft skill clusters as you can. I cannot emphasize this enough. This is the key to confidently answering questions like &#8220;<em>tell me about a time that&#8230;</em>&#8221; without replying with &#8220;<em>uh&#8230;hmmm&#8230;well there was this, uh, time that &lt;insert badly remembered semi relevant rambling here&gt;</em>&#8221;.</p><p>By writing down this storybook you will be able to reflect on past experiences through a new perspective - possibly even identifying learnings that you did not see at the time. You don&#8217;t need to write The Lord of the Rings here - 5-20 stories should be sufficient. And for gods sake they should all be true. Good behavioral interviewers are excellent BS detectors.</p><p>Oh, and make sure to include mistakes too so you can crush the dreaded &#8220;<em>tell me about a time you made a mistake</em>&#8221; question. Here&#8217;s an example of how to talk about a mistake in a constructive way:</p><ul><li><p><strong>Situation</strong>: We had to deploy a new website for a product launch.</p></li><li><p><strong>Task</strong>: I was tasked with setting it up and making sure that the website was online on date X.</p></li><li><p><strong>Action</strong>: we were on a tight schedule, so I used a static website generator and NodeJS to compile and serve it.</p></li><li><p><strong>Result</strong>: I was able to push the website live on time, but something was off. The site was slow for many users and we got a lot of complaints.</p></li><li><p><strong>Follow Up (BONUS)</strong>: I added some monitoring and figured out that, while serving with nodejs worked, it was not efficient given our request load, and we had users from all around the world coming in.</p></li><li><p><strong>Fix (BONUS)</strong>: I quickly added a CDN in front of our website with plenty of edge locations, which fixed the issue instantly.</p></li><li><p><strong>Learnings</strong>: I will be more careful in the future when considering the launch plan parameters. Just working is not necessarily enough. Also, I should add monitoring on day one so that I can quickly capture problems.</p></li></ul><p>There you go. That story could have been a major disaster at first, but you were able to communicate it truthfully while remaining reasonably positive and showing that you learned from the experience. This also works even if you were not the one who fixed the issue by the way.</p><p><em>&#8220;But Marcelo, I don&#8217;t have any experience, this is my first job! What can I do??&#8221;</em> I hear you say. That&#8217;s alright. You can put together a storybook with situations from your college, open source projects, hackathons, etc. Just make sure that they are relevant to the job (i.e. nobody wants to hear about your last minute beer run in STAR format). If your Behavioral interviewer insist on &#8220;real world situation&#8221;, you can politely remind them that this is your first job.</p><div><hr></div><p><em><strong>NOTE</strong>: some folks might think that this is cheating or manipulation. It is not. Employers have a bias towards not hiring if the team is not sure about the candidate. A great engineer that interviews badly will not build that confidence and will not get the job 90%+ of the time. I would much rather interview a clearly well-prepared candidate and make a confident decision than go through a painful one hour call with an ill-prepared candidate. It&#8217;s just the way it is.</em></p><div><hr></div><p>Another way of preparing is by seeking mentoring or coaching. Many people find it hard to self-reflect at the best of times, and early-career folks may not have the experience to do so objectively and thoroughly. There are great options online to connect with mentors. An example is <a href="https://www.mentoring-club.com">The Mentoring Club</a>, where experienced professionals mentor folks like you for free. I serve as a <em>pro-bono</em> mentor there.</p><p>Finally, there are books and YouTube. There are tons of interview tips or, even better, simulated interview videos there (not as many books though). Many of them are created by companies themselves. Why? Because companies want to hire you for your functional skills, not your interview skills. Managers <strong>hate</strong> to pass up on potentially good candidates that failed the interview.</p><h3>All Other Rounds</h3><p>I will not cover the other rounds in the prep stage (screening, bar raiser, etc.). Your core preparation will target the <em>Software Engineering Fundamentals</em>, <em>System Design</em>, and <em>Behavioral</em> rounds. This is your foundation. The other rounds will largely rely on this foundation, exploring different facets in different ways. The key is in <em>how</em> you go through them, which I will cover on Part 2.</p><h3>Additional Resources</h3><p>Other great sources of information are books, blog posts, open sample codebases, online courses, and YouTube. I like them and you can learn a lot from them, but I wouldn&#8217;t rely just on passive learning. You have to learn by doing.</p><ul><li><p><a href="https://www.youtube.com/@Fireship">Fireship</a>: great YouTube channels with &#8220;high intensity coding tutorials&#8221;.</p></li><li><p><a href="https://blog.bytebytego.com">ByteByteGo</a>: my go-to newsletter for systems design of all shapes and sizes.</p></li><li><p><a href="https://www.mentoring-club.com/">Mentoring Club</a></p></li><li><p>Interview preparation platforms:</p><ul><li><p><a href="https://www.algoexpert.io">Algoexpert</a></p></li><li><p><a href="https://www.hackerrank.com">HackerRank</a></p></li><li><p><a href="https://www.tryexponent.com">Exponent</a></p></li></ul></li><li><p>Books:</p><ul><li><p>&#8220;<a href="https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/">Cracking the Coding Interview</a>&#8221;, by <em>Gayle Laakmann McDowell</em>.</p></li><li><p>&#8220;<a href="https://www.amazon.com/System-Design-Interview-insiders-Second/dp/B08CMF2CQF">System Design Interview</a>&#8221;, by <em>Alex Xu</em>.</p></li><li><p>&#8220;<a href="https://www.amazon.com/Domain-Driven-Design-Distilled-Vaughn-Vernon/dp/0134434420">Domain Driven Design Distilled</a>&#8220;, by <em>Vaughn Vernon</em>.</p></li><li><p>&#8220;<a href="https://www.amazon.com/Answering-Behavioral-Questions-Amazon-Interviews/dp/B0B4QSYLCL">Answering Behavioral Questions in Amazon Interviews</a>&#8221;, <em>by Jennifer Scupi</em>.</p></li></ul></li><li><p>Videos:</p><ul><li><p>&#8220;<a href="https://youtu.be/6p1m2nCE7jE">Amazon Interview Questions</a>&#8221;, by Exponent</p></li></ul></li><li><p>Online courses: Udemy, Coursera, etc.</p></li></ul><h1>Key Takeaways</h1><ul><li><p><strong>Companies buy results, not work</strong>. They have a problem to solve. Your skills are a means to an end. The goal of the entire process is to answer this one question: can you deliver the results the company wants?</p></li><li><p><strong>Tech hiring is not perfect</strong>. This is a human and time-bound process. Things will be messy. Don&#8217;t assume that competency is enough.</p></li><li><p><strong>You need functional and interview skills</strong>. Functional skills prove you can do the job. Interview skills convince others of that fact.</p></li><li><p><strong>Preparation is critical</strong>. Most people don&#8217;t breeze through a strong tech hiring process, and all the great jobs are behind one. Prepare by working smart and hard. Build a schedule, and stick to it. There&#8217;s no such thing as overkill.</p></li><li><p><strong>You can make it</strong>. Folks land great jobs (or first jobs) all the time. You can do it, if you do the work. It may take a week, a month, or an year, but you&#8217;ll make it.</p></li></ul><h1>What&#8217;s Next</h1><p>I will cover the rest of the tech hiring process on Part 2, including how to run the interviews, what to do (and not to do) afterwards, and how to close the deal. There is nothing preventing you from starting today, however. Happy prepping!</p><p></p><div><hr></div><p><em>If you think someone in your network would like this, then</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/p/landing-your-first-or-third-awesome?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.engineering.land/p/landing-your-first-or-third-awesome?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p><em>Want to join the conversation?</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/p/landing-your-first-or-third-awesome/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.engineering.land/p/landing-your-first-or-third-awesome/comments"><span>Leave a comment</span></a></p><p><em>Thanks for reading, I hope you liked it! For more content like, feel free to</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.engineering.land/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Engineering Levels: A Simple Framework for Startups]]></title><description><![CDATA[How to deploy engineering levels and supercharge your engineering teams]]></description><link>https://newsletter.engineering.land/p/engineering-levels-a-simple-framework</link><guid isPermaLink="false">https://newsletter.engineering.land/p/engineering-levels-a-simple-framework</guid><dc:creator><![CDATA[Marcelo Wiermann]]></dc:creator><pubDate>Thu, 25 May 2023 13:12:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7WiZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F572bdf7e-aeb2-44bd-8741-4b097818112f_3927x2297.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_!7WiZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F572bdf7e-aeb2-44bd-8741-4b097818112f_3927x2297.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7WiZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F572bdf7e-aeb2-44bd-8741-4b097818112f_3927x2297.png 424w, https://substackcdn.com/image/fetch/$s_!7WiZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F572bdf7e-aeb2-44bd-8741-4b097818112f_3927x2297.png 848w, https://substackcdn.com/image/fetch/$s_!7WiZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F572bdf7e-aeb2-44bd-8741-4b097818112f_3927x2297.png 1272w, https://substackcdn.com/image/fetch/$s_!7WiZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F572bdf7e-aeb2-44bd-8741-4b097818112f_3927x2297.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7WiZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F572bdf7e-aeb2-44bd-8741-4b097818112f_3927x2297.png" width="1456" height="852" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/572bdf7e-aeb2-44bd-8741-4b097818112f_3927x2297.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:852,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3350811,&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_!7WiZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F572bdf7e-aeb2-44bd-8741-4b097818112f_3927x2297.png 424w, https://substackcdn.com/image/fetch/$s_!7WiZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F572bdf7e-aeb2-44bd-8741-4b097818112f_3927x2297.png 848w, https://substackcdn.com/image/fetch/$s_!7WiZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F572bdf7e-aeb2-44bd-8741-4b097818112f_3927x2297.png 1272w, https://substackcdn.com/image/fetch/$s_!7WiZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F572bdf7e-aeb2-44bd-8741-4b097818112f_3927x2297.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>Helping engineers perform and developing their careers is not easy.  Startups tend to have very little structure to begin with, so managers and engineers often find themselves reinventing this wheel while pushing it uphill. But there&#8217;s a trick from established companies that can help: engineering levels.</p><p>Whether you are a first time tech exec tuning your engineering team, an engineering manager who wants to do right by their team, or an engineer who wants to grow professionally and look great doing it, read on. This one is for you.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading #engineering! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h1>A Brief Introduction</h1><p>Engineering levels are one of the fundamental building blocks of finely tuned tech companies. You will find them in FAANGs, established companies and startups built or managed by experienced tech execs. I personally experienced them at Delivery Hero and Amazon, supported their launch at AutoScout24, and designed the framework from the ground up at multiple startups.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TBeK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e07be34-5798-426d-a4a1-589eff0e0ee8_1786x885.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TBeK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e07be34-5798-426d-a4a1-589eff0e0ee8_1786x885.png 424w, https://substackcdn.com/image/fetch/$s_!TBeK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e07be34-5798-426d-a4a1-589eff0e0ee8_1786x885.png 848w, https://substackcdn.com/image/fetch/$s_!TBeK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e07be34-5798-426d-a4a1-589eff0e0ee8_1786x885.png 1272w, https://substackcdn.com/image/fetch/$s_!TBeK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e07be34-5798-426d-a4a1-589eff0e0ee8_1786x885.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TBeK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e07be34-5798-426d-a4a1-589eff0e0ee8_1786x885.png" width="1456" height="721" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/4e07be34-5798-426d-a4a1-589eff0e0ee8_1786x885.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:721,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127653,&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_!TBeK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e07be34-5798-426d-a4a1-589eff0e0ee8_1786x885.png 424w, https://substackcdn.com/image/fetch/$s_!TBeK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e07be34-5798-426d-a4a1-589eff0e0ee8_1786x885.png 848w, https://substackcdn.com/image/fetch/$s_!TBeK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e07be34-5798-426d-a4a1-589eff0e0ee8_1786x885.png 1272w, https://substackcdn.com/image/fetch/$s_!TBeK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e07be34-5798-426d-a4a1-589eff0e0ee8_1786x885.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">Engineering levels at different companies (source: <a href="https://levels.fyi">levels.fyi</a>)</figcaption></figure></div><p>Engineering levels establish clear win criteria for engineers at different stages of their careers. This provides four key benefits:</p><ul><li><p><strong>Performance management</strong>: managers can assess where contributors currently fall into their assessed level, set clear expectations ahead of time and help them close any gaps over a reasonable time frame (often a quarter).</p></li><li><p><strong>Career development</strong>: there is a clear path between a person&#8217;s current capabilities and the next step in their development journey. Managers and contributors can identify concrete development action items and track development progress over time.</p></li><li><p><strong>Fair compensation and promotions</strong>: having a well understood common measurement stick helps with providing fair, unbiased assessments to contributors of all backgrounds.</p></li><li><p><strong>Staff planning</strong>: knowing what you can expect from people at different career stages allows managers to reasonably plan their staffing needs based on capacity gaps and project needs.</p></li></ul><p>These benefits are not limited to individual contributors (ICs). In fact, many tech companies have a levels structure (or &#8220;tracks&#8221;) for engineering management, product management, program management, and many other tracks.</p><p>Building an engineering levels framework and launching it is not trivial. The specifics on the engineering levels of these companies are not, usually, publicly available information. You can probably find a high level description of them, but anything more specific is hard to come by.</p><p>To solve this I created a foundational framework that you can adapt. You can use it to kickstart your engineering career program and evolve it as you gain more experience.</p><p><strong>Note to individual contributors</strong>: keep reading as this will give you a deeper understanding of why your company might have a similar framework in place, how it works, and how you can use it to improve. If your company doesn&#8217;t have this system in place and you would like the benefits that this mechanism brings, send this post to your manager. We are usually pretty cool people.</p><h1>Reference Engineering Levels Framework</h1><p>Our reference framework is based on five distinct levels - Level 1 (L1) through Level 5 (L5). This model works well for organizations of a single team up to a few hundred engineers. After that point, you would need more levels (like Google&#8217;s Fellow), or finer grained levels (like &#8220;Senior Staff Engineer&#8221;).</p><p>We are going to focus on the <em>Individual Contributor (IC)</em> track. There is a distinct track for engineering managers, which I will cover separately.</p><h2>The Five Levels</h2><p>The five levels in this framework are:</p><ul><li><p><strong>Associate Engineer (L1)</strong>: the tech track&#8217;s entry point. Zero to minimal industry experience, but a mountain of willingness to learn.</p></li><li><p><strong>Engineer (L2)</strong>: the foundation of most teams. Moderate amount of industry experience. Can do most jobs. Needs support for complex tasks.</p></li><li><p><strong>Senior Engineer (L3)</strong>: the keystone of most teams. Lots of industry experience and a wide array of skillsets. Tends to be a subject matter expert in one or more areas. Enables teams to deliver on projects of any complexity by supporting L1s and L2s when needed.</p></li><li><p><strong>Staff Engineer (L4)</strong>: fundamental to delivering on critical and/or cross team projects, often working closely with engineering managers, stakeholders and engineering teams. Excellent individual contributor skills. Leads by influence. Tends to be a subject matter expert in multiple areas, having served in many teams and solved many different problems. Coding starts to take a backseat to experimentation, coordination, planning and support. Helps create an engineering vision and strategy for the group.</p></li><li><p><strong>Principal Engineer (L5)</strong>: critical to setting a medium and long term engineering strategy for the organization or division. Has a deep understanding of technical and business matters. Expected to interact often with directors and other executives, identify large scale problems and/or opportunities on their own (and address them) or own a critical project. Good communication, leadership and management skills. Codes little or not at all, and only on specific situations. </p></li></ul><h2>Definitions</h2><p>The <strong>Title</strong> serves as a reference point and can vary from company to company. What company A looks for in a &#8220;Senior Engineer&#8221; can differ significantly from Company B&#8217;s version.</p><p>The <strong>Scope</strong> represents the degree of responsibility at the organizational, product or architecture level. In this framework, the target scopes are a single <strong>team</strong>, a <strong>group</strong> of teams, and an <strong>organization</strong> (major division or the entire company).</p><p>Scopes can be further categorized into <strong>normal</strong> and <strong>high stakes</strong>. High stake teams, groups and organizations are usually in charge of a core system or platform that many teams rely upon, a mission-critical function or even a very important project. Ex: Infrastructure, Payments, Authentication, etc.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9zqz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c99628-00ac-4ad5-94db-bc1ebd97fcfe_2434x859.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9zqz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c99628-00ac-4ad5-94db-bc1ebd97fcfe_2434x859.png 424w, https://substackcdn.com/image/fetch/$s_!9zqz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c99628-00ac-4ad5-94db-bc1ebd97fcfe_2434x859.png 848w, https://substackcdn.com/image/fetch/$s_!9zqz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c99628-00ac-4ad5-94db-bc1ebd97fcfe_2434x859.png 1272w, https://substackcdn.com/image/fetch/$s_!9zqz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c99628-00ac-4ad5-94db-bc1ebd97fcfe_2434x859.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9zqz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c99628-00ac-4ad5-94db-bc1ebd97fcfe_2434x859.png" width="1456" height="514" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/c7c99628-00ac-4ad5-94db-bc1ebd97fcfe_2434x859.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:514,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:436312,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&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_!9zqz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c99628-00ac-4ad5-94db-bc1ebd97fcfe_2434x859.png 424w, https://substackcdn.com/image/fetch/$s_!9zqz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c99628-00ac-4ad5-94db-bc1ebd97fcfe_2434x859.png 848w, https://substackcdn.com/image/fetch/$s_!9zqz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c99628-00ac-4ad5-94db-bc1ebd97fcfe_2434x859.png 1272w, https://substackcdn.com/image/fetch/$s_!9zqz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c99628-00ac-4ad5-94db-bc1ebd97fcfe_2434x859.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">Level Scopes</figcaption></figure></div><p><strong>Expectations</strong> can be divided into two main categories - <strong>Inputs</strong> and <strong>Outputs</strong>. Inputs represent the <em>capabilities</em>, <em>skills</em> and <em>behaviors</em> an engineer displays. These are good predictors of someone&#8217;s ability to deliver results and generate impact. That&#8217;s what we want at the end of the day.</p><p>Outputs represent the <em>results</em> and <em>impact</em> an engineer generates. Results (a.k.a. outcomes) are closely linked with how reliably and how well a person executes tasks and projects of increasing complexity.</p><p>Impact represents the net effect of everything a person does. This includes the impact of the projects they tackle, the problems they set out to solve, and even how positively (or negatively) they affect those around them. Think of impact as <em>solving the problem</em> vs <em>doing the task</em>.</p><p>Be careful when using impact in performance management. An individual&#8217;s impact is heavily influenced by circumstances outside of their control (ex: the team&#8217;s product roadmap). Ex: a senior engineer responsible for a major site reliability project must not only execute several complex tasks (results) but, also, interpret their results, iterate on the plan and coordinate at multiple levels to ultimately achieve the end goal of increasing reliability (impact).</p><p>Finally, each level also has a reference experience band, in total years of software engineering experience, that a person at that level <strong>typically</strong> has. This is not a hard and fast rule (more on this later)!</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hl_Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1a4769-0ce6-404e-bd0e-be3b22e156ed_2809x609.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hl_Z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1a4769-0ce6-404e-bd0e-be3b22e156ed_2809x609.png 424w, https://substackcdn.com/image/fetch/$s_!Hl_Z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1a4769-0ce6-404e-bd0e-be3b22e156ed_2809x609.png 848w, https://substackcdn.com/image/fetch/$s_!Hl_Z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1a4769-0ce6-404e-bd0e-be3b22e156ed_2809x609.png 1272w, https://substackcdn.com/image/fetch/$s_!Hl_Z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1a4769-0ce6-404e-bd0e-be3b22e156ed_2809x609.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hl_Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1a4769-0ce6-404e-bd0e-be3b22e156ed_2809x609.png" width="1456" height="316" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/5c1a4769-0ce6-404e-bd0e-be3b22e156ed_2809x609.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:316,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:500258,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&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_!Hl_Z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1a4769-0ce6-404e-bd0e-be3b22e156ed_2809x609.png 424w, https://substackcdn.com/image/fetch/$s_!Hl_Z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1a4769-0ce6-404e-bd0e-be3b22e156ed_2809x609.png 848w, https://substackcdn.com/image/fetch/$s_!Hl_Z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1a4769-0ce6-404e-bd0e-be3b22e156ed_2809x609.png 1272w, https://substackcdn.com/image/fetch/$s_!Hl_Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1a4769-0ce6-404e-bd0e-be3b22e156ed_2809x609.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Experience Bands</figcaption></figure></div><h2>Diving Deeper</h2><p>The degree of <strong>autonomy</strong> and <strong>impact</strong> increases the further up the ladder we go. The work also changes focus from from individual contribution to higher level design, coordination, coaching, strategy and communications.</p><p>Reality will not always line up perfectly with this framework. It should not be used as a substitute for good judgement. It&#8217;s important to understand the letter and the spirit behind these levels. Examples:</p><ul><li><p><strong>high potentials</strong>: folks with strongly skewed skillsets (ex: strong tech skills, bad interpersonal skills).</p></li><li><p><strong>strong demand for a certain role</strong>: pushing someone underprepared into larger roles (ex: an L3 supporting a group like an L4, or an L2 tackling major tasks without L3 support).</p></li><li><p><strong>small organization size</strong>: not enough &#8220;room&#8221; to provide upwards mobility, increasing the risk of pushing high performers out of the organization.</p></li></ul><p>I will cover these situations in the implementation and maintenance phases in more detail.</p><h3>Associate Engineers (L1)</h3><p><strong>Associate Engineers</strong> are the entry point in the professional software engineering career. They often have 0-3 years of industry experience. Most are fresh out of college, but you might see a few older folks who are changing career tracks.</p><h4>Scope</h4><p>L1s do better in <strong>normal (i.e. non-high-stakes) teams</strong>.</p><p>L1s are expected to introduce production-breaking bugs from time to time. They seem to be able to do this despite sophisticated checks and balances and processes, so just expect that to happen every now and then.</p><p>Accept that things will break and place them in an environment where they can safely learn from their mistakes.</p><h4>Capabilities, Skills &amp; Behaviors</h4><p>They should be curious, take feedback well, be humble and have a solid foundation of software engineering basics to build upon. This includes data structure fundamentals, basic algorithms, common system and design patterns, well known tools, etc.</p><p>Many L1s coming out of top universities or well known companies might have an overdeveloped ego. Look out for difficulties in taking feedback well, learning new things, an &#8220;I already know this&#8221; attitude or an over-eagerness to introduce new tools or practices without learning more about the <em>status quo</em>.</p><h4>Results &amp; Impact</h4><p>They should be able to execute simple tasks without supervision, and tackle medium-level work with L2+ support. Look for clean, well tested code that is not necessarily optimized or well designed at the system level.</p><p>They should be able to handle basic on-call duties, but do not expect them to handle major incidents. If you can, schedule their on-call duties together with L2s and L3s. They can still help if an incident happens and they will have a valuable learning experience.</p><p>Finally, look for L1s who are growing fast into L2s. That should be their ultimate goal.</p><h3>Engineers (L2)</h3><p><strong>Engineers (L2)</strong> - are the foundation of most teams. L2s tend to have 2-6 years of experience and a solid understanding of how to craft software in &#8220;the real world&#8221;. Good L2s will likely build &amp; run the majority of your products - be it by themselves or with the support or L3+ folks.</p><p>Common names for L2s are &#8220;professional engineers&#8221;, &#8220;full engineers&#8221;, &#8220;competent engineers&#8221;, and others.</p><h4>Scope</h4><p>L2s can make up the bulk of normal teams and some can do well in high stakes ones. They should have a working knowledge of their team&#8217;s (technical) domain and how it fits within the group.</p><p>Good L2s will also have a basic understanding of who their customers are, which problems they are solving and how the business works. The best ones learn &#8220;why&#8221; they need to implement Feature A and use that knowledge to drive design and implementation decisions.</p><h4>Capabilities, Skills &amp; Behaviors</h4><p>L2s should have a deeper and wider understanding of the fundamental skills they cultivated as L1s. The main difference, however, is knowing how they all come together in the real world and work in practice.</p><p>At this level they also should have a deeper understanding of tools and techniques required by your SDLC. This includes source control, releasing, deploying, CI/CD, monitoring, tech ops (in your stack), etc. This includes &#8220;business&#8221; tools too, like OKRs and KPIs.</p><h4>Results &amp; Impact</h4><p>L2s can design and execute tasks up to medium complexity with little to no support, and tackle complex tasks or projects with L3+ support. A team with a good balance of L2s and L3s working together can be very effective.</p><p>L2s should also serve as Incident Commander of minor incidents. This will enable them to lead bigger ones in the future.<br></p><h3>Senior Engineers (L3)</h3><p><strong>Senior Engineers (L3)</strong> tend to have 5-12+ years of experience and that shows in their degree of maturity. A hallmark of good L3s is that they are the most capable and reliable individual contributors in most organizations, requiring the least amount of support to get the job done.</p><p>L3 is the widest and most difficult level to clear in my opinion, with the second half band being much harder than the first. This is where supporting others starts to become a significant part of the job, and that requires developing a whole different skillset.</p><h4>Scope</h4><p>Most teams should have at least one L3. L3s can also serve as the foundation of high stakes teams.</p><p>Good L3s will have an excellent understanding of their team&#8217;s domain, a good knowledge of what other teams do and how the organization works.</p><p>Most L3s will be subject-matter experts in one or more non-trivial areas. Ex: you might have an L3 who knows everything about Payments.</p><h4>Capabilities, Skills &amp; Behaviors</h4><p>L3s have an excellent command of software engineering and systems design skills in real world settings. They can choose the right design patterns for a given problem, identify operational and security concerns, take cost into consideration, etc.</p><p>L3s are effective communicators - they can write clean documentation, effectively align on requirements with stakeholders and implementation details with colleagues, know when to bring relevant facts into a discussion, etc. L3s should be particularly good at adjusting for the audience, leaving technical or non-relevant details out when desirable.</p><p>L3s should be able to lead by influence, not authority. They have many responsibilities in supporting and leading others, but not formal authority to compel action (which is not normally desirable anyway). They should be able to engage stakeholders and teammates constructively, have &#8220;strong opinions weakly held&#8221;, be able to disagree and commit, etc.</p><p>L3s are great at managing up, and have a deep enough understanding of how delivering software works that they can work effectively with engineering managers as partners. This, coupled with leading by influence, often makes L3s serve as &#8220;tech leads&#8221; of their teams. Many Engineering Managers come from an L3 background.</p><p>Great tech companies can develop an &#8220;L3 Mafia&#8221;. Their L3s understand really well what each team does and build a good rapport between themselves. They usually know who to DM when they need some information, a minor change, help during an incident, or anything else that crosses team boundaries - often without needing the support from managers. Good managers would do well to encourage and help build such networks.</p><p>Finally, L3s should be good at asking for feedback regularly and responding to it in a mature way.</p><h4>Results &amp; Impact</h4><p>L3s can design and implement tasks of all sizes as individual contributors or as leaders of a small task force of L1-L3s with minimal to no support. They are as close to &#8220;fire and forget&#8221; as you can get.</p><p>L3s should also be able to onboard L1-L3s and mentor L1s and L2s. In fact, mentoring, supporting and leading others effectively are some of the most critical skills an L3 needs to master before becoming an L4.</p><p>Good L3s can serve as Incident Commanders of critical incidents. They also tend to be &#8220;pulled in&#8221; into incidents as subject matter experts.</p><h3>Staff Engineers (L4) and Principal Engineers (L5)</h3><p><strong>Staff Engineers (L4)</strong> and <strong>Principal Engineers (L5)</strong> are roles where the degree of autonomy, responsibility, and ownership increase significantly, making these levels quite different from the L1-L3 range.</p><p>L4s and L5s share many characteristics with the Management track -  so much so that, in many companies, the <em>Individual Contributor</em> and <em>Management</em> tracks converge at one point.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XKs_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1631ad4-e6cc-4921-8298-183225aa0d3e_2311x560.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XKs_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1631ad4-e6cc-4921-8298-183225aa0d3e_2311x560.png 424w, https://substackcdn.com/image/fetch/$s_!XKs_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1631ad4-e6cc-4921-8298-183225aa0d3e_2311x560.png 848w, https://substackcdn.com/image/fetch/$s_!XKs_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1631ad4-e6cc-4921-8298-183225aa0d3e_2311x560.png 1272w, https://substackcdn.com/image/fetch/$s_!XKs_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1631ad4-e6cc-4921-8298-183225aa0d3e_2311x560.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XKs_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1631ad4-e6cc-4921-8298-183225aa0d3e_2311x560.png" width="1456" height="353" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1631ad4-e6cc-4921-8298-183225aa0d3e_2311x560.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:353,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:118673,&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_!XKs_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1631ad4-e6cc-4921-8298-183225aa0d3e_2311x560.png 424w, https://substackcdn.com/image/fetch/$s_!XKs_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1631ad4-e6cc-4921-8298-183225aa0d3e_2311x560.png 848w, https://substackcdn.com/image/fetch/$s_!XKs_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1631ad4-e6cc-4921-8298-183225aa0d3e_2311x560.png 1272w, https://substackcdn.com/image/fetch/$s_!XKs_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1631ad4-e6cc-4921-8298-183225aa0d3e_2311x560.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Example of IC and management tracks converging.</figcaption></figure></div><p>As these levels have significantly different mechanics from the previous ones, I will cover them separately in future posts.</p><h1>What&#8217;s Next</h1><p>This simple framework should be enough to get started in most organizations. Naturally, you should adapt it to the reality of your company. Implementing it and using it to drive hiring, career development, promotions, and other key processes can be challenging in reality, so I will write about these topics in future posts.</p><p>I will also cover the <strong>Engineering Management</strong> and <strong>Product Management</strong> tracks in the next posts.</p><p>In the meantime, happy leveling!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading #engineering! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Weekend Reads #4: Non-Typical Backgrounds, the Faroes and McKinsey]]></title><description><![CDATA[Great lessons from expected and unexpected places]]></description><link>https://newsletter.engineering.land/p/weekend-reads-4-non-typical-backgrounds</link><guid isPermaLink="false">https://newsletter.engineering.land/p/weekend-reads-4-non-typical-backgrounds</guid><dc:creator><![CDATA[Marcelo Wiermann]]></dc:creator><pubDate>Sat, 27 Aug 2022 15:11:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!UfiA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F230d6c2d-3781-4eac-b75a-ab468f77ffb6_7180x4254.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_!UfiA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F230d6c2d-3781-4eac-b75a-ab468f77ffb6_7180x4254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UfiA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F230d6c2d-3781-4eac-b75a-ab468f77ffb6_7180x4254.png 424w, https://substackcdn.com/image/fetch/$s_!UfiA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F230d6c2d-3781-4eac-b75a-ab468f77ffb6_7180x4254.png 848w, https://substackcdn.com/image/fetch/$s_!UfiA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F230d6c2d-3781-4eac-b75a-ab468f77ffb6_7180x4254.png 1272w, https://substackcdn.com/image/fetch/$s_!UfiA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F230d6c2d-3781-4eac-b75a-ab468f77ffb6_7180x4254.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UfiA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F230d6c2d-3781-4eac-b75a-ab468f77ffb6_7180x4254.png" width="1456" height="863" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/230d6c2d-3781-4eac-b75a-ab468f77ffb6_7180x4254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:863,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2096254,&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_!UfiA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F230d6c2d-3781-4eac-b75a-ab468f77ffb6_7180x4254.png 424w, https://substackcdn.com/image/fetch/$s_!UfiA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F230d6c2d-3781-4eac-b75a-ab468f77ffb6_7180x4254.png 848w, https://substackcdn.com/image/fetch/$s_!UfiA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F230d6c2d-3781-4eac-b75a-ab468f77ffb6_7180x4254.png 1272w, https://substackcdn.com/image/fetch/$s_!UfiA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F230d6c2d-3781-4eac-b75a-ab468f77ffb6_7180x4254.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></p><p><a href="https://newsletter.pragmaticengineer.com/p/nivia-henry">From a Non-Traditional Background to Director of Software Engineering at Spotify</a> <em>by Gergely Orosz and Nivia Henry</em></p><p>I don&#8217;t have much patience for theory and much prefer learning by doing. Learning from the real experiences of great people comes in close second. This is the story of how Nivia became a Director of Software Engineering at Spotify. That, by itself, would already be a story. What makes this a great story are her unusual background, the challenges she overcame and the lessons she learned along the way.</p><p>Tech is a wonderful industry where folks from all walks of life and backgrounds can find opportunity, myself included (I&#8217;m a terrible physicist).</p><div><hr></div><p><a href="https://www.theb1m.com/video/faroe-islands-worlds-first-undersea-roundabout">Inside the World&#8217;s First Undersea Roundabout</a> <em>by Jaden Urbi</em></p><p>I often forget that great lessons don&#8217;t have to come from business or tech articles - or even be directly related to them. This week I learned that the Faroe Islands, a tiny island country of 50K people in the North Atlantic, has underground tunnels. A lot of them.</p><p>What makes this especially interesting is how quickly they build them. A recent, major project took about 4 years to construct, and I saw estimates that a similar project in, say, NYC would take 15 years or more. They can make decisions quickly and run circles around much larger communities exactly because they are so small.</p><p>If you work at a startup where decisions take waaaay too long, remember the Faroes - being small can be a major super power if you use it right!</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.engineering.land/subscribe?"><span>Subscribe now</span></a></p><p></p><div><hr></div><p><a href="https://theengineeringmanager.substack.com/p/what-are-leading-and-lagging-indicators">What are leading and lagging indicators?</a> <em>by James Stanier</em></p><p>I&#8217;ve learned the concept of leading and lagging indicators a while ago and I&#8217;ve treated it as pretty day to day topics since then. I&#8217;m helping improve how we execute OKRs at my current company and the topic came up.</p><p>Even outside of the context of OKRs, knowing what leading and lagging indicators are is a deceptively simple skill - it helps you identify and plan for what you actually want to achieve (usually lagging indicators) and use the right numbers to tell if you&#8217;re going in the right direction (leading indicators).</p><p>This is a good, non-jargon-y, down to earth introduction to the topic.</p><div><hr></div><p><a href="https://blog.cleancoder.com/uncle-bob/2016/06/10/MutationTesting.html">Mutation Testing</a> <em>by Robert C. Martin (Uncle Bob)</em></p><p>I have a confession to make - I&#8217;ve never done &#8220;proper&#8221; TDD. <em>Sigh,</em> feels great getting that off my chest. Back when I served as an engineer, I usually wrote tests after writing a small piece of code and went back and forth a little. I found writing lots of tests upfront to be super boring TBH. You should still do tests properly, goes without saying but Uncle Bob knows a lot more about the subject than I do.</p><p>I never looked into mutation testing before, and this was a nice introduction to the subject. Many associate and professional engineers start trusting things like TDD and test coverage metrics with an almost religious zeal, forgetting that they&#8217;re not perfect. This could be a nice addition to your team&#8217;s arsenal towards not setting production on fire.</p><div><hr></div><p><a href="https://www.mckinsey.com/business-functions/mckinsey-digital/our-insights/tech-debt-reclaiming-tech-equity">Tech Debt: Reclaiming Tech Equity</a> <em>by Vishal Dalal,&nbsp;Krish Krishnakanthan,&nbsp;Bj&#246;rn M&#252;nstermann, and Rob Patenge</em></p><p>I chuckled a bit when I saw this. The content is good, but I thought it was funny seeing something about Tech Debt coming from McKinsey. The analogy with financial debt was particularly insightful, and definitely something I will bring up when convincing non-tech stakeholders why managing and paying down excessive tech debt is important (and why doing that might push Shiny Feature A back by a sprint or two).</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading #engineering! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/p/weekend-reads-4-non-typical-backgrounds?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.engineering.land/p/weekend-reads-4-non-typical-backgrounds?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Weekend Reads #3: Awesome Lessons from Interesting People]]></title><description><![CDATA[Learning from leaders and masters + a break from all the doom & gloom]]></description><link>https://newsletter.engineering.land/p/weekend-reads-3-awesome-lessons-from</link><guid isPermaLink="false">https://newsletter.engineering.land/p/weekend-reads-3-awesome-lessons-from</guid><dc:creator><![CDATA[Marcelo Wiermann]]></dc:creator><pubDate>Sat, 20 Aug 2022 08:04:14 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1519046904884-53103b34b206?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw2fHxiZWFjaHxlbnwwfHx8fDE2NjA4NjI0MzE&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080" 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://images.unsplash.com/photo-1519046904884-53103b34b206?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw2fHxiZWFjaHxlbnwwfHx8fDE2NjA4NjI0MzE&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1519046904884-53103b34b206?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw2fHxiZWFjaHxlbnwwfHx8fDE2NjA4NjI0MzE&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1519046904884-53103b34b206?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw2fHxiZWFjaHxlbnwwfHx8fDE2NjA4NjI0MzE&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1519046904884-53103b34b206?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw2fHxiZWFjaHxlbnwwfHx8fDE2NjA4NjI0MzE&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1519046904884-53103b34b206?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw2fHxiZWFjaHxlbnwwfHx8fDE2NjA4NjI0MzE&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1519046904884-53103b34b206?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw2fHxiZWFjaHxlbnwwfHx8fDE2NjA4NjI0MzE&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080" width="1080" height="720" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1519046904884-53103b34b206?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw2fHxiZWFjaHxlbnwwfHx8fDE2NjA4NjI0MzE&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;coconut tree near shore within mountain range&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&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="coconut tree near shore within mountain range" title="coconut tree near shore within mountain range" srcset="https://images.unsplash.com/photo-1519046904884-53103b34b206?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw2fHxiZWFjaHxlbnwwfHx8fDE2NjA4NjI0MzE&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1519046904884-53103b34b206?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw2fHxiZWFjaHxlbnwwfHx8fDE2NjA4NjI0MzE&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1519046904884-53103b34b206?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw2fHxiZWFjaHxlbnwwfHx8fDE2NjA4NjI0MzE&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1519046904884-53103b34b206?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw2fHxiZWFjaHxlbnwwfHx8fDE2NjA4NjI0MzE&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 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">Photo by <a href="https://unsplash.com/@elishavision">Elizeu Dias</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>I wanted to break a bit from the relative doom &amp; gloom of recent weeks. I found some interesting readings this week from people who are masters at what they do. Enjoy!</p><p></p><p><strong><a href="https://addyosmani.com/blog/software-engineering-soft-parts/">Software Engineering - The Soft Parts</a> </strong><em>by Addy Osmani</em></p><p>This is probably my favorite this week. It&#8217;s a deceptively simple and compact write-up that contains a lifetime of practical experience from Addy Osmani, a Sr. Staff Engineering Manager at Google.</p><p>It is rare that we get a glimpse into &#8220;the real deal&#8221;, and the lessons Addy shares about software engineering, engineering management, working with others, growing and other cool topics are invaluable to anyone in tech. I wished I had run into something like this 10 years ago!</p><p>Highly recommended, even if you are not in tech.</p><div><hr></div><p><strong><a href="https://martinfowler.com/articles/bottlenecks-of-scaleups/01-tech-debt.html">Bottleneck #01: Tech Debt</a></strong> <em>by Tim Cochran and Carl Nygard</em></p><p>I&#8217;m helping scaling and accelerating a fast growing startup team and the topic of managing tech debt came up. As with many successful startups, the team accelerated development early on in order to experiment faster and find product-market fit. As the product becomes more complex, the team grows and the company matures we need to manage our accrued tech debt well in order to maintain good speed.</p><p>Tech debt is usually &#8220;handwaved&#8221; as an almost arcane term and often mismanaged. This write-up provides clear guidelines for identifying, dealing with and managing tech debt in a sustainable and practical way. It also keeps in mind that that we need to ship features, provide a great use experience and generate revenue - i.e. this is not a purely technical exercise.</p><p>I recommend this one even if you are not a scale-up.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.engineering.land/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p><strong><a href="https://writingcooperative.com/the-anatomy-of-an-amazon-6-pager-fc79f31a41c9">The Anatomy of an Amazon 6-pager</a></strong> <em>by Jesse Freeman</em></p><p>Amazon is one of the most successful tech companies of all time. It is also one of the most &#8220;cult-y&#8221;, and you can often spot an ex-Amazon person in the workplace by the unique terms, techniques and ways of thinking they use. Amazon&#8217;s writing practices are particularly interesting to me.</p><p>Jesse served at Amazon for 5 years and walks us through the &#8220;6 pager&#8221; with much more authority than many other similar posts do. This is a document usually reserved to plan significant projects, changes, processes or other high stakes moves. More importantly, he provides a concrete example that he created - a rare find indeed.</p><div><hr></div><p><strong><a href="https://skamille.medium.com/the-product-culture-shift-441c31a3fdf1">The Product Culture Shift</a></strong> <em>by Camille Fournier</em></p><p>Camille is the author of <a href="https://www.amazon.com/Managers-Path-Leaders-Navigating-Growth/dp/1491973897">The Manager&#8217;s Path</a>, one of my favorite books in tech management (or management in general). In this article she addresses the topic of changing the culture of teams that are usually not directly involved in serving customers - usually infrastructure and internal platforms.</p><p>Picture an e-commerce company that, let&#8217;s say, handles deliveries for its merchants. Your team is growing, the product is becoming more complex and you provide merchants with multiple ways of selling and fulfilling their orders.</p><p>In order to keep the teams responsible for user facing features moving fast, your CTO decides to launch an internal infrastructure team (let&#8217;s say, an SRE team) and a logistics platform team, responsible for providing APIs to anyone building features around deliveries. Why is this hard? Quoting the author:</p><p><em>&#8220;Both of these shifts require going from a siloed, process, tech-focused mindset to a portfolio, usability, and customer-focused mindset. This is a hard transformation, and it&#8217;s easy for people who have spent their whole career building infrastructure to misunderstand what product and platform really mean.&#8221;</em></p><div><hr></div><p><strong><a href="https://www.newcomer.co/p/can-a-zebra-change-its-stripes">Can a Zebra Change Its Stripes?</a></strong> <em>By Eric Newcomer</em></p><p>This one is a head scratcher, but you might&#8217;ve heard that Adam Neumann, the (in)famous founder of WeWork, just raised $350M from Andreessen Horowitz (a16z) to build his new company, Flow.</p><p>Eric helps us get a look into how VC works and how some such decisions are made, especially those that leave the rest of us puzzled.</p><div><hr></div><p>That&#8217;s it for this week, I hope you enjoyed the list and has a chance to read at least a few of the recommendations.</p><p>I am working on some longer form, deep-dive articles by myself and in collaboration with a few friends, attacking problems from how to prepare for a tech deep-dive, deploying K8S in production, how engineering managers and product managers can collaborate better and a whole lot more.</p><p>If you have any topics that you want me to cover let me know, I&#8217;d be happy to help!</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.engineering.land/subscribe?"><span>Subscribe now</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Weekend Reads #2: Headwinds, Efficiency & Finding Something New]]></title><description><![CDATA[The tech industry is adapting and weathering the storm.]]></description><link>https://newsletter.engineering.land/p/weekend-reads-2-headwinds-efficiency</link><guid isPermaLink="false">https://newsletter.engineering.land/p/weekend-reads-2-headwinds-efficiency</guid><dc:creator><![CDATA[Marcelo Wiermann]]></dc:creator><pubDate>Sat, 13 Aug 2022 07:31:05 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1556711905-b3f402e1ff80?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxOXx8aGFyZCUyMHdvcmt8ZW58MHx8fHwxNjYwMDY4MTk4&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080" 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://images.unsplash.com/photo-1556711905-b3f402e1ff80?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxOXx8aGFyZCUyMHdvcmt8ZW58MHx8fHwxNjYwMDY4MTk4&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1556711905-b3f402e1ff80?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxOXx8aGFyZCUyMHdvcmt8ZW58MHx8fHwxNjYwMDY4MTk4&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1556711905-b3f402e1ff80?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxOXx8aGFyZCUyMHdvcmt8ZW58MHx8fHwxNjYwMDY4MTk4&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1556711905-b3f402e1ff80?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxOXx8aGFyZCUyMHdvcmt8ZW58MHx8fHwxNjYwMDY4MTk4&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1556711905-b3f402e1ff80?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxOXx8aGFyZCUyMHdvcmt8ZW58MHx8fHwxNjYwMDY4MTk4&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1556711905-b3f402e1ff80?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxOXx8aGFyZCUyMHdvcmt8ZW58MHx8fHwxNjYwMDY4MTk4&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080" width="1080" height="720" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1556711905-b3f402e1ff80?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxOXx8aGFyZCUyMHdvcmt8ZW58MHx8fHwxNjYwMDY4MTk4&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;black iPhone 7&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&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="black iPhone 7" title="black iPhone 7" srcset="https://images.unsplash.com/photo-1556711905-b3f402e1ff80?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxOXx8aGFyZCUyMHdvcmt8ZW58MHx8fHwxNjYwMDY4MTk4&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1556711905-b3f402e1ff80?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxOXx8aGFyZCUyMHdvcmt8ZW58MHx8fHwxNjYwMDY4MTk4&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1556711905-b3f402e1ff80?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxOXx8aGFyZCUyMHdvcmt8ZW58MHx8fHwxNjYwMDY4MTk4&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1556711905-b3f402e1ff80?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxOXx8aGFyZCUyMHdvcmt8ZW58MHx8fHwxNjYwMDY4MTk4&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 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">Photo by <a href="https://unsplash.com/es/@prateekkatyal">Prateek Katyal</a> on </figcaption></figure></div><h1>Software Engineering</h1><ul><li><p><a href="https://hackernoon.com/14-patterns-to-ace-any-coding-interview-question-c5bb3357f6ed">14 Patterns to Ace Any Coding Interview Question</a>: many may be job-hunting for different reasons right now and, if you&#8217;re an engineer, chances are that you&#8217;ll go through a coding interview. This is a solid read on patterns common to most such interviews.</p></li><li><p><a href="https://hackernoon.com/how-to-implement-trie-prefix-tree-blind-75-leetcode-questions">How to Implement Trie (Prefix Tree) - Blind 75 LeetCode Questions</a>: this is a good read on the Trie topic but, perhaps more than that, it&#8217;s a good intro into a popular series hosted at HackerNoon that covers many top LeetCode questions.</p></li><li><p><a href="https://hackernoon.com/making-your-code-look-pretty">Making your Code Look Pretty</a>: moving away from interviewing a bit, this is a topic dear to my heart. We tend to be logical folks as engineers (most of the time), and topics like aesthetics can fall through the cracks. That&#8217;s a shame considering that code is read more often than written, and a nicely laid out function is a gift to countless future colleagues. This one provides a good, actionable starting point.</p></li></ul><h1>Leadership &amp; Management</h1><ul><li><p><a href="https://aws.amazon.com/blogs/enterprise-strategy/two-pizza-teams-are-just-the-start-accountability-and-empowerment-are-key-to-high-performing-agile-organizations-part-2/">Two-Pizza Teams Are Just the Start, Part 2: Accountability and Empowerment Are Key to High-Performing Agile Organizations</a>: this is Part 2 in a great running series by AWS. I&#8217;ve often found that, amongst all of Big Tech, Amazon&#8217;s practices seem to be the easiest to translate to SMEs and startups, and the ones that end up being the most effective.</p></li><li><p><a href="https://www.linkedin.com/pulse/single-threaded-leadership-lessons-learned-amazon-alfons-staerk">Single Threaded Leadership - Lessons learned at Amazon</a>: single threaded leadership is a concept that many are unfamiliar with, and that I first learned about at Amazon. This is a short introduction to STL.</p></li></ul><h1>Business</h1><ul><li><p> <a href="https://www.fastcompany.com/90774729/metaverse-job-openings-are-down-81-as-facebook-apple-and-google-roll-back-hiring">&#8216;Metaverse&#8217; job openings are down 81% as Facebook, Apple, and Google roll back hiring</a>: even tech titans are feeling the economic headwinds, and their hiring decisions can often be used as a bellwether for much of our industry.</p></li><li><p><a href="https://www.cnbc.com/2022/07/31/google-ceo-to-employees-productivity-and-focus-must-improve.html">Google CEO tells employees productivity and focus must improve, launches &#8216;Simplicity Sprint&#8217; to gather employee feedback on efficiency</a>: I think that companies laying people off or reducing / freezing hiring are driven by two key factors - reduce costs / burn rate, and get more for their current people investments. Google is not alone in this conversation - I can see these undertones in many other companies that had inside leaks, including Meta.</p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/the-scoop-one-deep-layoff-or-death">The Scoop: One Deep Layoff or Death By a Thousand Cuts?</a>: as always the Pragmatic Engineer brings valuable inside info from interesting companies. The analysis on the different types of cut strategies employed is particularly noteworthy.</p></li></ul><p></p><h1></h1><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading #engineering! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Weekend Reads #1]]></title><description><![CDATA[What to read this weekend to stay up to speed with the World]]></description><link>https://newsletter.engineering.land/p/weekend-reads-1</link><guid isPermaLink="false">https://newsletter.engineering.land/p/weekend-reads-1</guid><dc:creator><![CDATA[Marcelo Wiermann]]></dc:creator><pubDate>Fri, 05 Aug 2022 18:31:22 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1532154984646-37dc46508066?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwyN3x8cmFpbiUyMHJhaW5ib3d8ZW58MHx8fHwxNjU5NzI0MTE0&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080" 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://images.unsplash.com/photo-1532154984646-37dc46508066?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwyN3x8cmFpbiUyMHJhaW5ib3d8ZW58MHx8fHwxNjU5NzI0MTE0&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1532154984646-37dc46508066?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwyN3x8cmFpbiUyMHJhaW5ib3d8ZW58MHx8fHwxNjU5NzI0MTE0&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1532154984646-37dc46508066?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwyN3x8cmFpbiUyMHJhaW5ib3d8ZW58MHx8fHwxNjU5NzI0MTE0&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1532154984646-37dc46508066?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwyN3x8cmFpbiUyMHJhaW5ib3d8ZW58MHx8fHwxNjU5NzI0MTE0&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1532154984646-37dc46508066?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwyN3x8cmFpbiUyMHJhaW5ib3d8ZW58MHx8fHwxNjU5NzI0MTE0&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1532154984646-37dc46508066?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwyN3x8cmFpbiUyMHJhaW5ib3d8ZW58MHx8fHwxNjU5NzI0MTE0&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080" width="1080" height="720" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1532154984646-37dc46508066?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwyN3x8cmFpbiUyMHJhaW5ib3d8ZW58MHx8fHwxNjU5NzI0MTE0&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;trees under rainbow&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&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="trees under rainbow" title="trees under rainbow" srcset="https://images.unsplash.com/photo-1532154984646-37dc46508066?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwyN3x8cmFpbiUyMHJhaW5ib3d8ZW58MHx8fHwxNjU5NzI0MTE0&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1532154984646-37dc46508066?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwyN3x8cmFpbiUyMHJhaW5ib3d8ZW58MHx8fHwxNjU5NzI0MTE0&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1532154984646-37dc46508066?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwyN3x8cmFpbiUyMHJhaW5ib3d8ZW58MHx8fHwxNjU5NzI0MTE0&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1532154984646-37dc46508066?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwyN3x8cmFpbiUyMHJhaW5ib3d8ZW58MHx8fHwxNjU5NzI0MTE0&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 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">Photo by <a href="https://unsplash.com/@quaritsch">Quaritsch Photography</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>We are going into a downturn. There's no question about it. Now's the time to figure out how we can get through these difficult times. This requires understanding what is going on in tech, tackling challenges that have not gone away with the downturn, and, even better, getting back on track by prioritizing work that generates impact.</p><p></p><ul><li><p><a href="https://www.businessinsider.com/popshop-live-lays-off-staff-after-struggling-to-raise-new-funding-2022-7">'We were burning through money like no one's business'</a>: the economic downturn surprised many tech companies. This article by Business Insider provides a cautionary tale on how overspending - and the consequences of it - can significantly impact a would-be unicorn.</p></li><li><p><a href="https://techcrunch.com/2022/05/19/yc-advises-founders-to-plan-for-the-worst/">YC advises founders to 'plan for the worst' amid market teardown</a>: this one is not exactly new, but it's a must-read for startups today. YC provides some of the most actionable, direct, and straightforward advice for companies preparing or going through a downturn. Must-read if you lead teams or companies or want to understand what's happening around you.</p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/oncall-compensation-f33">Oncall Compensation</a>: insightful article from the fantastic&nbsp;<a href="https://newsletter.pragmaticengineer.com/">The Pragmatic Engineer</a>, one of the top sources of engineering information available. On-call compensation is a topic I have always found a bit difficult to navigate - there are so many different views on the subject from startups, large companies, US vs. EU, etc.</p></li><li><p><a href="https://www.infoq.com/articles/spark-ux-revolution">How to Spark a Consumer-Grade UX revolution</a>: This is one of my articles recently published by the good folks at&nbsp;<a href="http://www.infoq.com/">InfoQ</a>. This article addresses how teams can kickstart a change towards consumer-grade UX without having to move the entire organization. This is interesting as, typically, such projects span multiple teams and are complex to coordinate and execute. But it doesn't have to be that way.</p></li></ul><p></p><p>All, things are not so great right now. But I believe that the industry will get over this sooner than you might think. Do your homework, understand what this status quo means for you and execute through it. See you on the other side!</p><p></p><p>PS: This is the first edition of what I hope to be a running series. I have gotten amazing feedback from many folks who&#8217;ve read my content. This feedback is fundamental to making this work, so please feel free to hit me up and let me know if you like this and how I can improve &#128526;. Thanks!</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.engineering.land/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[How to Hire Great Engineers Without Tech Hiring Experience]]></title><description><![CDATA[Discover, Engage, Select & Close on Great Engineers]]></description><link>https://newsletter.engineering.land/p/how-to-hire-great-engineering-without</link><guid isPermaLink="false">https://newsletter.engineering.land/p/how-to-hire-great-engineering-without</guid><dc:creator><![CDATA[Marcelo Wiermann]]></dc:creator><pubDate>Tue, 19 Jul 2022 18:40:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_PEF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf831d6-bb70-462f-ba56-419cd724e3a1_6000x3834.jpeg" 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_!_PEF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf831d6-bb70-462f-ba56-419cd724e3a1_6000x3834.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_PEF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf831d6-bb70-462f-ba56-419cd724e3a1_6000x3834.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_PEF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf831d6-bb70-462f-ba56-419cd724e3a1_6000x3834.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_PEF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf831d6-bb70-462f-ba56-419cd724e3a1_6000x3834.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_PEF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf831d6-bb70-462f-ba56-419cd724e3a1_6000x3834.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_PEF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf831d6-bb70-462f-ba56-419cd724e3a1_6000x3834.jpeg" width="1456" height="930" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/ddf831d6-bb70-462f-ba56-419cd724e3a1_6000x3834.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:930,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3225716,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&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_!_PEF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf831d6-bb70-462f-ba56-419cd724e3a1_6000x3834.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_PEF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf831d6-bb70-462f-ba56-419cd724e3a1_6000x3834.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_PEF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf831d6-bb70-462f-ba56-419cd724e3a1_6000x3834.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_PEF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fddf831d6-bb70-462f-ba56-419cd724e3a1_6000x3834.jpeg 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><em>Originally <a href="https://techcrunch.com/2022/03/17/how-to-hire-great-engineers-when-you-dont-have-any-technical-expertise/">published on TechCrunch</a> on March 17th, 2022.</em></p><p>You need to move fast. You have to build POCs, create MVPs, iterate relentlessly and keep systems alive when you finally get TechCrunched (and after). You need excellent engineers suited for a fast-paced startup environment to make that happen. Recruiting a winning engineering team can be daunting, especially for first-time or non-technical founders.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading #engineering! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Startup recruiting is different from larger companies. You are looking for different profiles, you are probably not as well known, you likely don&#8217;t have dedicated recruiters, you have stricter time constraints, and you certainly don&#8217;t have the same budget.</p><p>I served at multiple startups and established tech companies worldwide and hired over a hundred engineers. I found that recruiting great engineers has four main challenges: discovery, engagement, assessment, and hiring.</p><p>Finding good engineers (discovery) is a subject in itself and there is plenty of information on how to structure offers (hiring), so let&#8217;s focus on engaging &amp; assessing great candidates. I have identified a few startup-specific principles to engage and assess engineers that you can apply immediately - even if you do not have a technical background.&nbsp;</p><h1>Engagement</h1><p>You need to earn the attention of good candidates. Let&#8217;s skip the basics, like getting an introduction through your network or running engaging LinkedIn and StackOverflow ads.</p><p>You are targeting the top 25% engineers, which puts you in competition with the best recruiters in the industry. You have to go on the offensive. The good news is that engineers get hit by recruiters all the time, so they have become wary of them (sorry recruiters). You have an instant advantage as a founder or startup manager.</p><p>Think of your opening message as a pitch - you are selling the idea of working with you and making your startup happen. Make it interesting for them: talk about the magnitude of the problem you are solving and the impact they could have; tell them about the cutting edge tech you are using and how they will have the freedom to shape the company's future. Don&#8217;t overdo it, but don&#8217;t make it sound like they would be exchanging one cubicle for another, either.&nbsp;</p><p>Finally, remember that most of these folks are probably not looking for a job. If you approach them with a dry copy and pasted invitation to apply, your message will get fast-tracked to the bin. Look at their profiles, the communities they belong to, their interests, their skills, their backgrounds, who they follow, their GitHub profiles, etc. Learn what makes them tick, personalize your pitch accordingly and tell them why they are an excellent fit for your company - and vice-versa.</p><h1>Assessment</h1><p>Bad hiring choices early on can set a project back months - even permanently - and generate tons of technical debt. Experienced engineering managers are probably familiar with tech hiring, but non-technical founders and technical founders with no management experience should learn two ground rules first:</p><ul><li><p><strong>Move fast</strong>: contact candidates 48h max after interviews, promptly answer questions and finish all interviews in 2 weeks tops. This is one of the few advantages you have over recruiters and established companies.</p></li><li><p><strong>Be interesting</strong>: they are assessing you just as much as you are assessing them. Build upon your initial pitch as you get to know them better and keep selling.</p></li></ul><p>You also want to answer two fundamental questions: &#8220;can they functionally do the job and deliver results?&#8221; and &#8220;will they thrive at my company?&#8221;. You can do that using a screening call and, if they clear it, three one hour deep dive / onsite interviews. A good candidate pool results in a 20-30% screening clearing rate and 1% to 2.5% end-to-end conversion rate.</p><h2>Screening</h2><p>The screening round is a 30-45 minute call where you will decide if it makes sense for you and the candidate to invest more time in the process. Are they articulate and good listeners? Have they delivered significant projects in the last three years? What technologies did they employ? Do they know those projects technical and business KPIs? Do they know who the customers were and how their work affected them? Are they enthusiastic when referring to their work? What about your company interests them? Don't talk more than 20%-30% of the time - you don&#8217;t have time to dive deep here.</p><p>Finally, clarify what their individual contributions were versus their team's. Some engineers might inflate their achievements by focusing on team and company, even if they had a small part to play. Move forward to the next stage if you are 70% or so happy with their answers to avoid over-filtering.</p><h2>Software Engineering</h2><p>Good software engineers know more than just coding - they know how to create usable, scalable, secure software on spec, on time and on budget (mostly). Great ones can do so with one or more unknowns in the previous list.</p><p>If you have a good technical background you can check their software engineering fundamentals using a coding and problem solving interview. Startups should use real-world reference problems that cover basic data structures, scaling, design patterns, data manipulation and more. Avoid the synthetic exercises bigger companies use - you want someone who can deliver value on day one in a small team.</p><p>Ask the candidate to add caching to an API performing complex database calls; refactor a large service into smaller, cleaner ones; find bugs in non-trivial code; efficiently store and retrieve data based on a given use-case; etc. Good candidates should walk you through their thinking process and ask good questions in the process. Verify whether they command the language well, with some leeway for interview-grade pseudo-code.</p><p>If you are a non-technical founder and you can&#8217;t rely on a sr. engineer (employee, friend, mentor, advisor), look into third party selection services like automated code assessment platforms (ex: <a href="https://www.hackerrank.com/">HackerRank</a>, <a href="https://www.coderbyte.com/">Coderbyte</a>, and <a href="https://www.codility.com/">Codility</a>) and interview-as-a-service companies (ex: <a href="https://karat.com/">Karat</a>, <a href="https://www.expertlead.com/">expertlead</a> and <a href="https://geektastic.com/">Geektastic</a>).</p><p>Both work well, but senior startup engineers tend to prefer the latter. Speaking with good technical interviewers is a lot more engaging and accommodating of nuance than automated tests, to the point that many candidates might simply refuse to take them.</p><p>These services cost money, but you can balance that out by the time saved and the reduced hiring risk. They can also interview multiple candidates in parallel in case you have the (mythical) problem of too many good prospects.</p><p>Alternatively, you can learn the foundations via websites like <a href="https://www.algoexpert.io/">Algoexpert</a> (they have amazing basic data structure and systems design courses). Picking up the basics of a programming language like JS or Python is also easier than you might think, and that can help you understand better what makes great engineers great.</p><h2>Systems Design</h2><p>There are many engineers who are competent at solving narrow technical problems or writing great code but who cannot work backwards from a business problem towards a real world solution. Established companies can compensate by having different skill sets in a team. In a startup, you need flexible, pragmatic, skilled people who know how to create entire systems.</p><p>If you have a solid technical background this is the round where you ask questions like &#8220;<a href="https://interviewcamp.io/courses/101687/lectures/4014401">how would you design Uber</a>?&#8221; or &#8220;how would you implement Google Maps?&#8221;. Good candidates will ask lots of clarifying questions, like what is the target throughput, who are the users, what do they want to achieve, etc. Great candidates can figure most of that out from basic fundamental assumptions, like how much storage you need to power a Maps-like application for millions of users.</p><p>Ask them to design a concrete architecture diagram, make real choices for key components (ex: you want to hear &#8220;Kafka&#8221; and why, not just &#8220;pub/sub&#8221;) and walk you through their solution. It is important to pick a challenge that is somewhat related to what your company does, but make it clear that you are not just getting free consulting from your candidates.</p><p>Finishing the entire design is not important, but watch for signs that the candidate is over complicating their solution and offer hints to help them see it.</p><p>If you are not a technical person then interview-as-a-service companies can help. Make sure to specify what type of challenges you want them to use - you want engineers who can solve e-commerce related problems for your e-commerce startup.</p><p>Alternatively, study and use <a href="https://youtu.be/VJpfO6KdyWE">some design challenges online</a> and take the role of a non-technical product manager when interviewing. You might not be able to understand the finer technical details, but you can dig into requirements, pros and cons, what candidates miss and how much they understand the business needs. This is also representative of how you will actually work together.</p><h2>Values &amp; Capabilities</h2><p>In this round you want to explore the candidate&#8217;s ability to communicate, work in a team, understand business and customers, deal with difficult situations and deliver results.</p><p>Check their motivations and what they want to achieve. This can be the difference between sticking around through tough times (which is a given in startups) or jumping ship when the greenfield project feeling is over. What are their long term goals? What do they see in your company that they are not getting in their current role? What do they love about engineering?</p><p>Understand how they work and what they value. What were their biggest achievements and what did they learn from those experiences? What about their biggest misses - do they blame others or focus on lessons learned? Do they know how to give and receive constructive feedback without confrontation? Do they like to tell others what to do or collaborate? How did they handle high-stress situations, like a major outage or a make or break deadline?</p><p>Finally, check what they know about business. This is particularly important in startups - you want engineers who know that the goal is not to ship software, but to serve customers. Do they know who their customers were and what they cared about? What were their technical and business KPIs, and how did they correlate? What is the business model of their current company?</p><p>Once you have built a mental model of who they are, what they value and what they want to achieve, you can understand whether they would thrive at your company. Combined with the functional knowledge and real world problem solving skills you checked in the previous two rounds, you can make a confident decision to move ahead or not.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.engineering.land/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading #engineering! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>