<?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[Early-stage startup engineering]]></title><description><![CDATA[Early-stage startup engineering]]></description><link>https://juraj.blog</link><image><url>https://substackcdn.com/image/fetch/$s_!-Ks1!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e47a6e7-1685-49da-bd5e-cfb9f0e0affc_721x721.png</url><title>Early-stage startup engineering</title><link>https://juraj.blog</link></image><generator>Substack</generator><lastBuildDate>Tue, 14 Apr 2026 07:33:33 GMT</lastBuildDate><atom:link href="https://juraj.blog/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Juraj Masar]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[jurajmasar@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[jurajmasar@substack.com]]></itunes:email><itunes:name><![CDATA[Juraj Masar]]></itunes:name></itunes:owner><itunes:author><![CDATA[Juraj Masar]]></itunes:author><googleplay:owner><![CDATA[jurajmasar@substack.com]]></googleplay:owner><googleplay:email><![CDATA[jurajmasar@substack.com]]></googleplay:email><googleplay:author><![CDATA[Juraj Masar]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Building lasting value post-AI #startups ]]></title><description><![CDATA[It&#8217;s never been easier to build software products. But if it&#8217;s easy for you, it&#8217;s easy for the next guy, too.]]></description><link>https://juraj.blog/p/building-lasting-value-post-ai-startups</link><guid isPermaLink="false">https://juraj.blog/p/building-lasting-value-post-ai-startups</guid><dc:creator><![CDATA[Juraj Masar]]></dc:creator><pubDate>Tue, 09 Dec 2025 19:59:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Dd3W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aa29593-5463-4263-9c16-db0788a70891_2848x1504.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_!Dd3W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aa29593-5463-4263-9c16-db0788a70891_2848x1504.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dd3W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aa29593-5463-4263-9c16-db0788a70891_2848x1504.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Dd3W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aa29593-5463-4263-9c16-db0788a70891_2848x1504.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Dd3W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aa29593-5463-4263-9c16-db0788a70891_2848x1504.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Dd3W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aa29593-5463-4263-9c16-db0788a70891_2848x1504.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dd3W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aa29593-5463-4263-9c16-db0788a70891_2848x1504.jpeg" width="1456" height="769" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7aa29593-5463-4263-9c16-db0788a70891_2848x1504.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:769,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:638971,&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;:&quot;https://juraj.blog/i/181171610?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aa29593-5463-4263-9c16-db0788a70891_2848x1504.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Dd3W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aa29593-5463-4263-9c16-db0788a70891_2848x1504.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Dd3W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aa29593-5463-4263-9c16-db0788a70891_2848x1504.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Dd3W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aa29593-5463-4263-9c16-db0788a70891_2848x1504.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Dd3W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aa29593-5463-4263-9c16-db0788a70891_2848x1504.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></p><p>AI erased most product-level moats. So defensibility now comes from things that are intentionally hard to replicate.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://juraj.blog/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 Early-stage startup 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><ul><li><p>brand &amp; distribution</p></li><li><p>being a &#8220;compound startup&#8221;</p></li><li><p>vertical integration</p></li><li><p>migration pain</p></li></ul><h3>Brand &amp; distribution</h3><p>The obvious one. Having an existing distribution is a game changer. Think <a href="https://growthcasestudies.com/p/slack-vs-microsoft-teams">Microsoft pushing terrible MS Teams to their existing user base to beat Slack&#8217;s usage numbers</a>.</p><p>Building a trusted brand perceived to be building quality products is priceless today. Your brand&#8217;s reputation takes years to build yet it&#8217;s trivial to lose.</p><h3>Being a &#8220;compound startup&#8221;</h3><p>Launching multiple tightly integrated products solving different problems for the same customer. <em>Single product startups</em> might be easier to build and faster to grow initially, but they&#8217;re a lot more vulnerable to competitors too.</p><p>&#8220;Compound startups&#8221; leverage that billing, reporting, authentication, onboarding, support, data models are all shared across multiple products, and you only need to build them once.</p><p>Being &#8220;a compound startup&#8221; means you can use product bundling to your advantage: you can compete on margins where it hurts your competitor but it doesn&#8217;t hurt you. Every company now pays for 30+ SaaS vendors. The bar for being the 31st is higher than ever, but selling one more product to existing customers? Easy!</p><p>But man building a compound startup is complicated! Different products mean different customers constantly pull you in different directions. If you found building a single product difficult, multi-product is a different level.</p><div id="youtube2-dhmJGjHRSJM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;dhmJGjHRSJM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/dhmJGjHRSJM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Vertical integration</h3><p>How many new startups are building their own data centers today? Close to zero.<br>How many are hosting data in Supabase? Most.</p><p>There are things you can do with data in your own data center that you can&#8217;t do with Supabase. You can tailor your hardware to your software, not the other way around. You could optimize costs and capex/opex.</p><p>It&#8217;s an insane pain to host your own servers though. But that&#8217;s the point. <br>If it brings you a real benefit, it might be worth it even if super painful.</p><div id="youtube2-8iX_uJZ2QOc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;8iX_uJZ2QOc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/8iX_uJZ2QOc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Migration pain</h3><p>Can you make your product easy to onboard while being difficult to rip out?</p><p>I don&#8217;t care if a vendor sells me on a <em>slightly</em> better or a cheaper product if I need to change workflows of an existing team or migrate a ton of data. Switching costs are not just technical; they are social, operational, and political.</p><h2>The point is there&#8217;s &#8220;no quick wins&#8221; anymore</h2><p>If you launch an obvious &amp; easy to build idea today, you&#8217;ll wake up to 17 competitors on Product Hunt tomorrow. AI removed most &#8220;easy&#8221; moats. The only durable ones left are the hard ones.</p><p>Aiming to build a lasting business? It might be easier to work on a hard problem than an easy one today.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://juraj.blog/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 Early-stage startup 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[Startups are intense]]></title><description><![CDATA[It's general knowledge that founders work harder than most employees. How much harder, though? 50% more? Twice as much?]]></description><link>https://juraj.blog/p/startups-are-intense</link><guid isPermaLink="false">https://juraj.blog/p/startups-are-intense</guid><dc:creator><![CDATA[Juraj Masar]]></dc:creator><pubDate>Fri, 09 May 2025 03:48:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467d33d4-57b6-4680-8c3c-dc9289e256f8_1284x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let&#8217;s calculate the number of work hours per year.</p><p><strong>Assumptions</strong>:</p><ul><li><p>typical European 4 weeks paid time off</p></li><li><p>10 public holidays excluding weekends</p></li><li><p>and 5 sick days per year</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XPOZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b8e419c-e2ed-4662-959e-0262c86cb0d1_1276x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XPOZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b8e419c-e2ed-4662-959e-0262c86cb0d1_1276x608.png 424w, https://substackcdn.com/image/fetch/$s_!XPOZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b8e419c-e2ed-4662-959e-0262c86cb0d1_1276x608.png 848w, https://substackcdn.com/image/fetch/$s_!XPOZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b8e419c-e2ed-4662-959e-0262c86cb0d1_1276x608.png 1272w, https://substackcdn.com/image/fetch/$s_!XPOZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b8e419c-e2ed-4662-959e-0262c86cb0d1_1276x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XPOZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b8e419c-e2ed-4662-959e-0262c86cb0d1_1276x608.png" width="1276" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b8e419c-e2ed-4662-959e-0262c86cb0d1_1276x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:608,&quot;width&quot;:1276,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:110165,&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;:&quot;https://juraj.blog/i/163181595?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b8e419c-e2ed-4662-959e-0262c86cb0d1_1276x608.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XPOZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b8e419c-e2ed-4662-959e-0262c86cb0d1_1276x608.png 424w, https://substackcdn.com/image/fetch/$s_!XPOZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b8e419c-e2ed-4662-959e-0262c86cb0d1_1276x608.png 848w, https://substackcdn.com/image/fetch/$s_!XPOZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b8e419c-e2ed-4662-959e-0262c86cb0d1_1276x608.png 1272w, https://substackcdn.com/image/fetch/$s_!XPOZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b8e419c-e2ed-4662-959e-0262c86cb0d1_1276x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A typical employee in a corporate job putting in 6 work hours per day in a &#8216;chill mode&#8217; clocks about 1,356 hours per year.</p><p>What about 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_!pRwl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467d33d4-57b6-4680-8c3c-dc9289e256f8_1284x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pRwl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467d33d4-57b6-4680-8c3c-dc9289e256f8_1284x608.png 424w, https://substackcdn.com/image/fetch/$s_!pRwl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467d33d4-57b6-4680-8c3c-dc9289e256f8_1284x608.png 848w, https://substackcdn.com/image/fetch/$s_!pRwl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467d33d4-57b6-4680-8c3c-dc9289e256f8_1284x608.png 1272w, https://substackcdn.com/image/fetch/$s_!pRwl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467d33d4-57b6-4680-8c3c-dc9289e256f8_1284x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pRwl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467d33d4-57b6-4680-8c3c-dc9289e256f8_1284x608.png" width="1284" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/467d33d4-57b6-4680-8c3c-dc9289e256f8_1284x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:608,&quot;width&quot;:1284,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:129013,&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;:false,&quot;internalRedirect&quot;:&quot;https://juraj.blog/i/163181595?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467d33d4-57b6-4680-8c3c-dc9289e256f8_1284x608.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pRwl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467d33d4-57b6-4680-8c3c-dc9289e256f8_1284x608.png 424w, https://substackcdn.com/image/fetch/$s_!pRwl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467d33d4-57b6-4680-8c3c-dc9289e256f8_1284x608.png 848w, https://substackcdn.com/image/fetch/$s_!pRwl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467d33d4-57b6-4680-8c3c-dc9289e256f8_1284x608.png 1272w, https://substackcdn.com/image/fetch/$s_!pRwl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467d33d4-57b6-4680-8c3c-dc9289e256f8_1284x608.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></figure></div><p>With <a href="https://www.bloomberg.com/news/articles/2022-11-16/musk-refers-to-vacationing-as-an-email-with-a-view?embedded-checkout=true">vacations being &#8216;an email with a view'</a>, working on the weekends, public holidays, and Christmas Eve, <strong>founders put in 3-4x more work hours per year than the average corporate employee</strong>.</p><p>Essentially doing the work of at least 4 corporate employees.</p><h3><strong>&#8220;Ok Juraj, but I work smart, I don&#8217;t need to work hard&#8221;</strong></h3><p>Imagine a competitor of yours somewhere in the world who&#8217;s exactly like you. <br>But they operate in &#8216;Founder mode&#8217; while you&#8217;re working on your business in &#8216;Chill mode&#8217;. <br>They&#8217;ll run twice as many experiments per year as you will! How will you win?</p><h3><strong>&#8220;That just makes you a workaholic&#8221;</strong></h3><p>Sort of. Think of startups as a high-performance sport. Would you tell an Olympian chasing a gold medal &#8220;chill out you&#8217;re training too much!&#8221;. Most people wouldn&#8217;t.</p><h3><strong>&#8220;Ok, but input &#8800; output. You can&#8217;t be productive if you work for 12-16 hours a day&#8221; [*]</strong></h3><p>It&#8217;s the output of your effort that counts.</p><p>The more hours you put in, the faster you learn. The faster you see what works and what doesn&#8217;t. The faster you <a href="https://en.wikipedia.org/wiki/Outliers_(book)#:~:text=Gladwell%20explains%20that%20reaching%20the,a%20week%20for%2010%20years.">master a skill</a>.</p><p>The effort compounds. Since you&#8217;re a lot more experienced because of working more, you&#8217;re able to get *more* done in a single hour of work over time, not less.</p><h3><strong>It&#8217;s a marathon, but you sprint the entire time</strong></h3><p>YC preaches &#8216;eat, sleep, build product and talk to your users&#8217;. This is fun for 3 months, but imagine keeping this up for 10 years straight. You have to love the game, otherwise any sensible person would quit.</p><h3><strong>It&#8217;s actually good news: this is how you start</strong></h3><p>Do you want to start a business, but you don&#8217;t have savings?</p><p>This is how you get your break: <a href="https://youtu.be/EhqZ0RU95d4?si=JDAKwmndt1YhlvWP&amp;t=710">&#8220;Work 9-5, spend a couple hours with the family, and 7pm to 2am in the morning is plenty of time to do the damage. [</a>&#8230;<a href="https://youtu.be/EhqZ0RU95d4?si=JDAKwmndt1YhlvWP&amp;t=710">] Everybody has time. Stop watching fucking Lost.&#8221;</a></p><p>Just be self-aware and understand what it takes.</p><div id="youtube2-tRy1kIEAD0E" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;tRy1kIEAD0E&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/tRy1kIEAD0E?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>[*] the Better Stack team works regular hours</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://juraj.blog/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 Early-stage startup 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[Do we still need programmers?]]></title><description><![CDATA["Is AI coding moving too fast? Sonnet 3.7? Claude Code? Is 'vibe coding' already easier and more impactful than regular way of writing code?"]]></description><link>https://juraj.blog/p/ai-programming</link><guid isPermaLink="false">https://juraj.blog/p/ai-programming</guid><dc:creator><![CDATA[Juraj Masar]]></dc:creator><pubDate>Sun, 02 Mar 2025 16:39:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48d22dc-1d37-47f7-921b-bf19b1f9a9aa_1334x480.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A good friend asked me about this.</p><blockquote><p>&#8230;&#8220;Feels like opening iterative pull requests, waiting 10 mins for CI, and deploying a +10/-7 PR is already outdated&#8221;</p></blockquote><p> So are programmers already out of a job? Are the best practices for shipping software such as continuous integration and pull request reviews already irrelevant?</p><p>Here&#8217;s my 2 cents as of March 2025.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vP32!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c333ab3-ebf4-4004-89c9-315743419116_2960x2248.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vP32!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c333ab3-ebf4-4004-89c9-315743419116_2960x2248.png 424w, https://substackcdn.com/image/fetch/$s_!vP32!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c333ab3-ebf4-4004-89c9-315743419116_2960x2248.png 848w, https://substackcdn.com/image/fetch/$s_!vP32!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c333ab3-ebf4-4004-89c9-315743419116_2960x2248.png 1272w, https://substackcdn.com/image/fetch/$s_!vP32!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c333ab3-ebf4-4004-89c9-315743419116_2960x2248.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vP32!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c333ab3-ebf4-4004-89c9-315743419116_2960x2248.png" width="1456" height="1106" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c333ab3-ebf4-4004-89c9-315743419116_2960x2248.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1106,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1826122,&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;:&quot;https://juraj.blog/i/158219465?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c333ab3-ebf4-4004-89c9-315743419116_2960x2248.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vP32!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c333ab3-ebf4-4004-89c9-315743419116_2960x2248.png 424w, https://substackcdn.com/image/fetch/$s_!vP32!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c333ab3-ebf4-4004-89c9-315743419116_2960x2248.png 848w, https://substackcdn.com/image/fetch/$s_!vP32!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c333ab3-ebf4-4004-89c9-315743419116_2960x2248.png 1272w, https://substackcdn.com/image/fetch/$s_!vP32!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c333ab3-ebf4-4004-89c9-315743419116_2960x2248.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><h3>Day-to-day impact of LLMs on software engineering</h3><p>In the last 2 years alone, software engineering changed more drastically than in the prior 20 years.</p><p>Starting with the obvious, <strong>Claude Sonnet 3.7 is insanely good</strong> <strong>for 1. debugging errors, and 2. prototyping initial concepts. </strong>Stack Overflow &amp; internet forums are dead. Your marketer is no longer hiring $5 fiverr gigs, they create the scripts they need themselves with Claude. </p><p><strong><a href="https://devin.ai">Devin</a> is a great concept</strong>, <strong>but the error rate is still too high for most tasks.</strong> This is where we&#8217;re going though &#8212; <strong>you simply tag your virtual colleague in Slack</strong> and wait for them to open a pull request.</p><p><strong><a href="https://www.youtube.com/watch?v=A9BiNPf34Z4">Cursor&#8217;s CMD+K</a> with Claude Sonnet is the single most important practical change in day-to-day engineering workflows since GPT-3.</strong> </p><p><strong>If you&#8217;re a full-stack engineer and you haven&#8217;t incorporated CMD+K into your workflow <a href="https://tomtunguz.com/ai-impact-curves/">you will soon become irrelevant</a></strong>. (It&#8217;s fascinating that existing IDEs like JetBrains are struggling to keep up!)</p><p><strong>Starting a new project? <a href="https://www.youtube.com/watch?v=r5T3h0BOiWw">Cursor&#8217;s composer mode is useful</a>, too</strong>. Although it becomes impractical as you cross 5-10k lines of code and the dependencies become too complex.</p><h3>Where we&#8217;re going</h3><p><strong><a href="https://www.youtube.com/watch?v=VWvV2-XwBMM">SWE Agents by GitHub</a> will likely shake things up next</strong> thanks to their tight integration with GitHub pull requests &amp; having the entire codebase. </p><p><strong>New models come with very large context windows.</strong> <a href="https://www.sergey.fyi/articles/gemini-flash-2">Gemini Flash 2.0&#8217;s 1 million context window</a> means that <strong>entire small codebases can be now completely included in a single prompt</strong>, leading to higher quality answers &amp; insights.</p><h3>Needs of engineering teams are different to cool demos</h3><p><strong><a href="https://www.youtube.com/watch?v=afN8U7kAiLc">Most &#8216;AI coding&#8217; demos</a> focus on 1. single page visual demos, and are 2. built from scratch by the model. And 3. models make many mistakes</strong>, so you need multiple attempts of tweaking your prompt before it does what you need.</p><p><strong>Software engineering teams deal, on the other hand, with:</strong></p><ol><li><p>numerous internal microservices and many repositories</p></li><li><p>millions of lines of existing code</p></li><li><p>they optimize for not breaking things when adding new features</p></li></ol><p>This is why the Devin experience of simply asking an agent to implement a feature in a complex existing codebase is still just a dream today. <strong>And why CMD+K in Cursor remains the key game-changer for existing software engineering teams.</strong></p><p><strong>There&#8217;s one other notable use-case for engineering teams: <a href="https://docs.cursor.com/chat/overview">chatting with code</a>.</strong> Imagine you need to integrate with a poorly documented Go library although you never worked with Go. <strong>You can ask Cursor Chat to explain the parts of the code base relevant to you</strong>: e.g. ask about what&#8217;s the structure of the API payload the service expects. This works exceptionally well.</p><p><strong>I think there are many existing workflows still waiting to be disrupted by LLMs:</strong> automations for triaging bugs and feature requests, code review assistants, UI copywriting assistants, UI convention checkers, QA testing, and workflows for resolving infrastructure incidents faster, to name a few. <a href="https://betterstack.com/careers">We&#8217;re working on some of these at Better Stack</a>, so if this sounds like an interesting challenge, join us!</p><h3>So what makes human engineers relevant today?<br>Experience + Low error rate.</h3><p><strong>We still need full-stack engineers with 1. a lot of experience, and 2. low error rate.</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_!CNPV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48d22dc-1d37-47f7-921b-bf19b1f9a9aa_1334x480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CNPV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48d22dc-1d37-47f7-921b-bf19b1f9a9aa_1334x480.png 424w, https://substackcdn.com/image/fetch/$s_!CNPV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48d22dc-1d37-47f7-921b-bf19b1f9a9aa_1334x480.png 848w, https://substackcdn.com/image/fetch/$s_!CNPV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48d22dc-1d37-47f7-921b-bf19b1f9a9aa_1334x480.png 1272w, https://substackcdn.com/image/fetch/$s_!CNPV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48d22dc-1d37-47f7-921b-bf19b1f9a9aa_1334x480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CNPV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48d22dc-1d37-47f7-921b-bf19b1f9a9aa_1334x480.png" width="1334" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a48d22dc-1d37-47f7-921b-bf19b1f9a9aa_1334x480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:1334,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:56622,&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;:&quot;https://juraj.blog/i/158219465?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48d22dc-1d37-47f7-921b-bf19b1f9a9aa_1334x480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CNPV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48d22dc-1d37-47f7-921b-bf19b1f9a9aa_1334x480.png 424w, https://substackcdn.com/image/fetch/$s_!CNPV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48d22dc-1d37-47f7-921b-bf19b1f9a9aa_1334x480.png 848w, https://substackcdn.com/image/fetch/$s_!CNPV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48d22dc-1d37-47f7-921b-bf19b1f9a9aa_1334x480.png 1272w, https://substackcdn.com/image/fetch/$s_!CNPV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48d22dc-1d37-47f7-921b-bf19b1f9a9aa_1334x480.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><strong>Experience</strong> is both the soft <strong>intuition</strong> <strong>built from years of building and fixing complex systems</strong> as well as <strong>hard knowledge</strong> of the existing systems.</p><p><strong>By &#8220;error rate&#8221; I mean the guard rails an engineer needs around them to be able to ship production-ready features.</strong> </p><p>Does your company have an army of manual QA testers? Is every pull request introducing a new feature followed by several hotfixes? Both signify an environment with a high tolerance for errors. Devin is coming for your job soon.</p><p><strong>&#8220;Full-stack engineer&#8221; is the main software engineering role still relevant today.</strong> If you perceive yourself as just a &#8220;Ruby engineer&#8221; or just a &#8220;JavaScript engineer&#8221; then play with Claude, Cursor &amp; Devin and reconsider.</p><p>Thanks for reading! <a href="https://x.com/jurajmasar">Follow me on Twitter</a> &amp; subscribe below for future posts.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://juraj.blog/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 Early-stage startup 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[Startup compensation]]></title><description><![CDATA[We could pay you a million a month, but I&#8217;d need you to have a tangible impact on the business on your first day.]]></description><link>https://juraj.blog/p/startup-compensation</link><guid isPermaLink="false">https://juraj.blog/p/startup-compensation</guid><dc:creator><![CDATA[Juraj Masar]]></dc:creator><pubDate>Tue, 28 Jan 2025 18:12:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fmGn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aeb7dd2-6b61-43af-adac-9c279051cd63_1024x1024.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>In the long-term, every team member needs to create more value than they take home</strong> as compensation. Otherwise a business would not be economically viable.</p><p><strong>In the short-term, they don&#8217;t.</strong> The rest of the team subsidizes a new colleague when they&#8217;re getting up to speed during onboarding.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fmGn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aeb7dd2-6b61-43af-adac-9c279051cd63_1024x1024.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fmGn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aeb7dd2-6b61-43af-adac-9c279051cd63_1024x1024.heic 424w, https://substackcdn.com/image/fetch/$s_!fmGn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aeb7dd2-6b61-43af-adac-9c279051cd63_1024x1024.heic 848w, https://substackcdn.com/image/fetch/$s_!fmGn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aeb7dd2-6b61-43af-adac-9c279051cd63_1024x1024.heic 1272w, https://substackcdn.com/image/fetch/$s_!fmGn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aeb7dd2-6b61-43af-adac-9c279051cd63_1024x1024.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fmGn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aeb7dd2-6b61-43af-adac-9c279051cd63_1024x1024.heic" width="306" height="306" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8aeb7dd2-6b61-43af-adac-9c279051cd63_1024x1024.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:306,&quot;bytes&quot;:290208,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&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_!fmGn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aeb7dd2-6b61-43af-adac-9c279051cd63_1024x1024.heic 424w, https://substackcdn.com/image/fetch/$s_!fmGn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aeb7dd2-6b61-43af-adac-9c279051cd63_1024x1024.heic 848w, https://substackcdn.com/image/fetch/$s_!fmGn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aeb7dd2-6b61-43af-adac-9c279051cd63_1024x1024.heic 1272w, https://substackcdn.com/image/fetch/$s_!fmGn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aeb7dd2-6b61-43af-adac-9c279051cd63_1024x1024.heic 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><strong>So when does &#8220;short-term&#8221; end and &#8220;long-term&#8221; begin? </strong></p><p><strong>That depends on the introductory compensation.</strong></p><p><strong>The introductory compensation is the responsibility of the person joining the company.</strong> An experienced engineer with 2 mortgages, 3 kids and a dog has different expectations to a fresh grad.</p><p><strong>But the higher the introductory compensation, the higher the expectations. </strong>And thus the shorter &#8220;time to enough value created&#8221;.</p><p>We could pay you a million a month, but I&#8217;d need you to have a tangible impact on the business on your first day.</p><p><strong>The long-term compensation, on the flip-side, is the responsibility of the company.</strong> <strong>And</strong> <strong>it&#8217;s in the company&#8217;s best interest to aggressively increase comp when appropriate.</strong></p><p>Imagine you have a colleague who&#8217;s simply killing it: the last thing you want is for them to start thinking about leaving because of a different company offering them more $.</p><p><strong>At <a href="https://betterstack.com/careers">Better Stack</a>, we revisit the compensation of every team member twice a year.</strong> That doesn&#8217;t mean we automatically increase everyone&#8217;s comp every 6 months. It means <strong>the company opens up the conversation</strong> about your comp with regards to your performance, the company&#8217;s overall performance, and the outside market, so that you don&#8217;t have to.</p><p>It&#8217;s in our best interests to aggressively increase compensation when appropriate. In the past, we increased the comp of our colleagues by 50%+ in three consecutive bi-annual reviews &#8212; <strong>effectively increasing the comp by more than 3.4x within 18 months</strong>. But at the same time, for different colleagues, we left the comp unchanged over the same 2-3 consecutive reviews. Because the comp should be proportional to the real value people create.</p><p><strong>Large bigtech corporations typically have no clue about who is actually creating a ton of value and who is not. </strong>But a nimble startup with technical leadership can recognize it &amp; reward it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://juraj.blog/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 Early-stage startup engineering! Subscribe to receive new posts.</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[We’re hiring 42 engineers this year]]></title><description><![CDATA[Remember that time in high school when you were stuck with your math homework?]]></description><link>https://juraj.blog/p/we-are-hiring-42-engineers-this-year</link><guid isPermaLink="false">https://juraj.blog/p/we-are-hiring-42-engineers-this-year</guid><dc:creator><![CDATA[Juraj Masar]]></dc:creator><pubDate>Tue, 09 Apr 2024 16:34:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xdOF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb47a51b1-9f4b-4e90-9b52-75013d0c73da_1004x1003.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Remember that time in high school when you were stuck with your math homework?</p><p><strong>Imagine you&#8217;re tasked with deriving an equation for the very first time.</strong></p><p>You&#8217;re *really* focused on getting it done. You spend hours and hours thinking about how to solve the problem.</p><p>Yet, you eventually give up.</p><p><strong>Who is your go-to person you ask for help?</strong></p><p>Would you prefer to ask 100 first graders to help you or 1 university math student?</p><p>I&#8217;d go with the university student every single time.</p><p><strong>Yet, tech journalists, VCs, job applicants, and even tech recruiters ask me regularly: &#8220;How many engineers do you plan on hiring this year?&#8221;</strong></p><p>This question is fundamentally flawed.</p><p>Software engineering is remarkably similar to math in the sense that a really great mathematician can solve a thousand times more difficult math problem than an army of first graders.</p><p>9 women won&#8217;t give birth to a child in a month.</p><p>100 Cessna pilots won&#8217;t fly a fighter jet.</p><p>So let&#8217;s stop thinking of software engineers as a commodity. The best software builders are at least <a href="https://juraj.blog/p/100x-software-engineering">100x more productive</a> than the mediocre ones.</p><p><strong>You might not need a team of 50 engineers after all, you might just need a single really awesome engineer.</strong></p><p>So how many engineers are we looking to <a href="https://betterstack.com/careers">hire at Better Stack</a>?</p><p>Every single great one we can.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xdOF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb47a51b1-9f4b-4e90-9b52-75013d0c73da_1004x1003.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xdOF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb47a51b1-9f4b-4e90-9b52-75013d0c73da_1004x1003.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xdOF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb47a51b1-9f4b-4e90-9b52-75013d0c73da_1004x1003.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xdOF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb47a51b1-9f4b-4e90-9b52-75013d0c73da_1004x1003.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xdOF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb47a51b1-9f4b-4e90-9b52-75013d0c73da_1004x1003.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xdOF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb47a51b1-9f4b-4e90-9b52-75013d0c73da_1004x1003.jpeg" width="472" height="471.52988047808765" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b47a51b1-9f4b-4e90-9b52-75013d0c73da_1004x1003.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1003,&quot;width&quot;:1004,&quot;resizeWidth&quot;:472,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;No alternative text description for this image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="No alternative text description for this image" title="No alternative text description for this image" srcset="https://substackcdn.com/image/fetch/$s_!xdOF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb47a51b1-9f4b-4e90-9b52-75013d0c73da_1004x1003.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xdOF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb47a51b1-9f4b-4e90-9b52-75013d0c73da_1004x1003.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xdOF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb47a51b1-9f4b-4e90-9b52-75013d0c73da_1004x1003.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xdOF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb47a51b1-9f4b-4e90-9b52-75013d0c73da_1004x1003.jpeg 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">Stolen from the amazing workchronicles.com</figcaption></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://juraj.blog/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">Subscribe for free to receive new posts.</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[Product 101: Consistency]]></title><description><![CDATA[One often-overlooked aspect of great software is that it feels like it was designed by a single person through & through. Or so it seems.]]></description><link>https://juraj.blog/p/consistency</link><guid isPermaLink="false">https://juraj.blog/p/consistency</guid><dc:creator><![CDATA[Juraj Masar]]></dc:creator><pubDate>Mon, 28 Aug 2023 21:12:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pQiM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc66d51-57a7-424e-b53a-9ba0fff4041d_1024x450.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_!gzBi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb157e84-301e-4854-8232-827178430917_270x403.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gzBi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb157e84-301e-4854-8232-827178430917_270x403.png 424w, https://substackcdn.com/image/fetch/$s_!gzBi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb157e84-301e-4854-8232-827178430917_270x403.png 848w, https://substackcdn.com/image/fetch/$s_!gzBi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb157e84-301e-4854-8232-827178430917_270x403.png 1272w, https://substackcdn.com/image/fetch/$s_!gzBi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb157e84-301e-4854-8232-827178430917_270x403.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gzBi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb157e84-301e-4854-8232-827178430917_270x403.png" width="270" height="403" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb157e84-301e-4854-8232-827178430917_270x403.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:403,&quot;width&quot;:270,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;UI Change&quot;,&quot;title&quot;:&quot;I know they said this change is permanent, but surely when they hear how much we're complaining someone will find a way to change things back.&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="UI Change" title="I know they said this change is permanent, but surely when they hear how much we're complaining someone will find a way to change things back." srcset="https://substackcdn.com/image/fetch/$s_!gzBi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb157e84-301e-4854-8232-827178430917_270x403.png 424w, https://substackcdn.com/image/fetch/$s_!gzBi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb157e84-301e-4854-8232-827178430917_270x403.png 848w, https://substackcdn.com/image/fetch/$s_!gzBi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb157e84-301e-4854-8232-827178430917_270x403.png 1272w, https://substackcdn.com/image/fetch/$s_!gzBi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb157e84-301e-4854-8232-827178430917_270x403.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">Stolen from the amazing <a href="https://xkcd.com/1770/">XKCD</a></figcaption></figure></div><p>Things look, work, and mostly *feel* the same.</p><p>This is trivial at first when you&#8217;re the only developer but almost impossible later as your engineering, design, and product teams scale and new colleagues join.</p><p><strong>The following are my 8 recommendations on improving the design of your next product without adjusting the color of a single pixel.</strong></p><h4>1. Do not introduce new concepts recklessly</h4><p>&#8220;Sign in here&#8221; yet &#8220;Can&#8217;t log in?&#8221;.<br>&#8220;Register here&#8221; yet &#8220;Sign up with Google&#8221;.<br>Different words, same thing. <br><br>Do not ever use synonyms for the core product concepts of your app. </p><p>Instead, <strong>be uncompromisingly boring</strong>: either use &#8220;Sign in&#8221; and &#8220;Sign up&#8221;; or &#8220;Log in&#8221; and &#8220;Register&#8221; but never the other. </p><p><strong>Boring is great.</strong><br><br>Otherwise, your users will be left wondering: Is &#8220;user&#8221; the same thing as &#8220;customer&#8221; and &#8220;profile&#8221;? What about &#8220;team member&#8221;, &#8220;colleague&#8221;, and &#8220;teammate&#8221;?</p><h4>2. Period at the end of tooltips, flash messages, and error messages</h4><p>It&#8217;s often the small things that add up: Do tooltips end with a period or not? If some do and some don&#8217;t, just pick one and unify them.</p><h4><strong>3. Date formats</strong></h4><p>Have a set of defined date formats you use throughout the app.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pQiM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc66d51-57a7-424e-b53a-9ba0fff4041d_1024x450.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pQiM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc66d51-57a7-424e-b53a-9ba0fff4041d_1024x450.png 424w, https://substackcdn.com/image/fetch/$s_!pQiM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc66d51-57a7-424e-b53a-9ba0fff4041d_1024x450.png 848w, https://substackcdn.com/image/fetch/$s_!pQiM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc66d51-57a7-424e-b53a-9ba0fff4041d_1024x450.png 1272w, https://substackcdn.com/image/fetch/$s_!pQiM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc66d51-57a7-424e-b53a-9ba0fff4041d_1024x450.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pQiM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc66d51-57a7-424e-b53a-9ba0fff4041d_1024x450.png" width="442" height="194.23828125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4fc66d51-57a7-424e-b53a-9ba0fff4041d_1024x450.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:450,&quot;width&quot;:1024,&quot;resizeWidth&quot;:442,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Pasted Graphic 1.png&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Pasted Graphic 1.png" title="Pasted Graphic 1.png" srcset="https://substackcdn.com/image/fetch/$s_!pQiM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc66d51-57a7-424e-b53a-9ba0fff4041d_1024x450.png 424w, https://substackcdn.com/image/fetch/$s_!pQiM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc66d51-57a7-424e-b53a-9ba0fff4041d_1024x450.png 848w, https://substackcdn.com/image/fetch/$s_!pQiM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc66d51-57a7-424e-b53a-9ba0fff4041d_1024x450.png 1272w, https://substackcdn.com/image/fetch/$s_!pQiM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc66d51-57a7-424e-b53a-9ba0fff4041d_1024x450.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4><strong>4. Consistent page layout</strong></h4><p>All pages ought to belong to one of a few categories: </p><ul><li><p>landing page</p></li><li><p>listing page</p></li><li><p>dashboard page</p></li><li><p>authentication page</p></li><li><p>form page</p><p></p></li></ul><p><strong>If none feels right, think twice</strong> if you really need to introduce a new behavior to your interface. All pages of the same type should feel and work the same. <br></p><h4><strong>5. Short or long-form English? Informal or formal?</strong></h4><p>Pick a voice and stick with it. I prefer a conversational professional tone: <br>an informal, friendly, and honest active voice.<br><br>&#9989; &#8220;You&#8217;ve successfully updated your profile.&#8221;<br>&#10060; &#8220;Profile was successfully updated.&#8221;</p><p></p><h4><strong>6. Copywriting 101<br></strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EGLL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1807c0-39cc-4bae-8b5e-b90c8c744977_938x656.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EGLL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1807c0-39cc-4bae-8b5e-b90c8c744977_938x656.png 424w, https://substackcdn.com/image/fetch/$s_!EGLL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1807c0-39cc-4bae-8b5e-b90c8c744977_938x656.png 848w, https://substackcdn.com/image/fetch/$s_!EGLL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1807c0-39cc-4bae-8b5e-b90c8c744977_938x656.png 1272w, https://substackcdn.com/image/fetch/$s_!EGLL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1807c0-39cc-4bae-8b5e-b90c8c744977_938x656.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EGLL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1807c0-39cc-4bae-8b5e-b90c8c744977_938x656.png" width="450" height="314.71215351812367" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e1807c0-39cc-4bae-8b5e-b90c8c744977_938x656.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:656,&quot;width&quot;:938,&quot;resizeWidth&quot;:450,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Pasted Graphic 2.png&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Pasted Graphic 2.png" title="Pasted Graphic 2.png" srcset="https://substackcdn.com/image/fetch/$s_!EGLL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1807c0-39cc-4bae-8b5e-b90c8c744977_938x656.png 424w, https://substackcdn.com/image/fetch/$s_!EGLL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1807c0-39cc-4bae-8b5e-b90c8c744977_938x656.png 848w, https://substackcdn.com/image/fetch/$s_!EGLL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1807c0-39cc-4bae-8b5e-b90c8c744977_938x656.png 1272w, https://substackcdn.com/image/fetch/$s_!EGLL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e1807c0-39cc-4bae-8b5e-b90c8c744977_938x656.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">Stolen from the awesome <a href="https://marketingexamples.com">Harry&#8217;s newsletter</a></figcaption></figure></div><h4><strong>7. Grammar mistakes</strong></h4><p>Your interface needs to sound native to your customers in the U.S. <br><br>Not a native speaker? Rewatch Suits on Netflix. Use Grammarly or leverage &#8220;Make the following sound native&#8221; Chat-GPT prompts.</p><h4><strong>8. Write it down</strong></h4><p>Codify your UI conventions by writing them down and make all new engineers, designers, and product managers read all of them before they start contributing.<br><br><strong>Focus on engineers.</strong> They&#8217;re the ones who typically make or break consistency. </p><p>No designers or product managers can design every possible error message of every form, so your engineers will have to improvise whether you make them focus on consistency or not.</p><h4><strong>Recommended resources</strong></h4><ul><li><p><a href="https://www.amazon.com/Dont-Make-Think-Revisited-Usability/dp/0321965515">Don&#8217;t make me think</a>.</p></li><li><p><a href="https://www.refactoringui.com">Refactoring UI</a>.</p></li><li><p><a href="https://www.youtube.com/watch?v=sz_LgBAGYyo">Kevin Hale on How to Build Products Users Love</a>.</p></li></ul><p>&#8230;<a href="http://betterstack.com/careers/engineering">or work with us</a> on the next product at Better Stack.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://juraj.blog/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 Early-stage startup 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[Management 101: Giving Feedback]]></title><description><![CDATA[You're a first-time manager, your team mate has made a mistake, and you need to tell them so. How do you go about it?]]></description><link>https://juraj.blog/p/giving-feedback</link><guid isPermaLink="false">https://juraj.blog/p/giving-feedback</guid><dc:creator><![CDATA[Juraj Masar]]></dc:creator><pubDate>Mon, 05 Jun 2023 08:12:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/xLQSNB0kbPY" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>1. Don&#8217;t delay the conversation.</strong> Get ready and tell them tomorrow at the latest. It&#8217;s your responsibility. If you know someone&#8217;s screwing up and you don&#8217;t tell them right away, you become an accomplice. </p><p><strong>2. Praise publicly, and criticize privately.</strong> Schedule a private 1:1 session. Never criticize someone&#8217;s work publicly in front of other colleagues.</p><p><strong>3. Check on them first.</strong> Is everything fine with them at home? It&#8217;s your job to know if they need your support outside of work. Remember, work is just work.</p><p><strong>4. Have explicit examples.</strong> Be ready to discuss specifics. "Remember last Thursday when you did X? I'd really have preferred you to have done Y in that situation because of Z." Have screenshots ready, links to pull requests or Slack conversations you can reference. Nothing is worse than ambiguity when you're criticizing someone&#8217;s work.</p><p><strong>5. Cover everything in a single session.</strong> Once you're giving someone feedback, don&#8217;t be half-hearted. Otherwise, they&#8217;ll tell you &#8220;You didn&#8217;t mention that last time&#8221; the next time you talk.</p><p><strong>6. Is this a repeated mistake?</strong> <strong>Acknowledge that.</strong> "Remember when we were discussing X last week? We agreed that&#8230;&#8221;</p><p><strong>7. Be firm but kind.</strong> Never make it personal. Talk about &#8220;the work&#8221; they've done, not about the person themselves. Do not ever let your emotions get the better of you.</p><p><strong>8. Don&#8217;t leave anything unsaid or vague.</strong> If you&#8217;re not explicit enough, you can&#8217;t expect them to understand something you barely implied. Over-communicate rather than under-communicate.</p><p><strong>9. Reason from first principles.</strong> They might be operating on a different set of beliefs than you, for example, saying &#8220;That wasn&#8217;t my job&#8221;. Be ready to dig deep and get down to first principles if you need to: "Look, how would the business function if everyone was doing this?&#8221;</p><p><strong>10. The discussion takes as long as it takes.</strong> The meeting is scheduled for 30 minutes? Great. Make sure both of you have free time in the calendars afterward. Take your time when speaking, use silence to your advantage. It&#8217;s completely fine to breathe in and think for 5-10 seconds about what you want to say before you continue talking. If you discuss the issue in-depth enough, they should be able to acknowledge the problem in the end. If they&#8217;re not, delve into it with, &#8220;It feels like you&#8217;re getting a bit defensive. Do you think what I&#8217;m saying is not fair?&#8221;</p><p><strong>11. Be specific about what you want to happen next.</strong> Is this the last warning before you need to let them go? Tell them that.</p><p><strong>12. Be ready for extreme reactions.</strong> Prepare for every possible outcome of the conversation, regardless of how unlikely. They could laugh, cry, shout at you, or quit on the spot. What would you do if they did that?</p><p>Don't worry, you&#8217;ll do fine. Radical candor is an integral part of a well-functioning team. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://juraj.blog/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">Subscribe for free to receive new posts.</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>Don&#8217;t be this guy:</p><div id="youtube2-xLQSNB0kbPY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;xLQSNB0kbPY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/xLQSNB0kbPY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div>]]></content:encoded></item><item><title><![CDATA[Quick and Dirty vs. Polished and Perfect: The Two Sides of Engineering]]></title><description><![CDATA[Every great engineer knows how to toggle between two fundamentally different, yet equally important styles of work: "Let's wing it" hacking and corporate-level "measure twice, cut once" engineering.]]></description><link>https://juraj.blog/p/two-sides</link><guid isPermaLink="false">https://juraj.blog/p/two-sides</guid><dc:creator><![CDATA[Juraj Masar]]></dc:creator><pubDate>Sat, 03 Jun 2023 14:15:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/76J3mHnHHOE" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As more people hop onto the software engineering bandwagon just for the paycheck and lifestyle perks rather than a true-bread love for technology, certain contrasts between the "tech virtuosos" and the "clock punchers" start to stand out.</p><div id="youtube2-76J3mHnHHOE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;76J3mHnHHOE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/76J3mHnHHOE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>One such distinction is knowing when to flip the switch between the two engineering approaches.</p><p>Here's the scoop: <strong>Traditional paths like universities, internships, and work experiences at mega-tech companies usually only teach engineers the ways of "polished and perfect engineering".</strong></p><ol><li><p>Don't mess things up!</p></li><li><p>You have to be a team player. Stick to a common code style, whip up unit tests, and give your code some good documentation.</p></li><li><p>Your code should be a breeze to maintain and enhance.</p></li><li><p>Long-winded commits and pull request messages? Bring 'em on.</p></li></ol><p><strong>But if programming is your hobby, chances are, you love playing around with the latest tech.</strong> You might find yourself churning out 50-100 line scripts just to test that shiny new API. Or maybe to scrape a list of rentals to snag the perfect apartment... or score the best car deal.</p><p>These are throwaway scripts that probably won't see the light of day again.</p><p><strong>That's why many self-taught coding enthusiasts often resort to a patchwork approach to make things work... and fast.</strong></p><blockquote><p><strong>There's a common misbelief that the "polished and perfect" style of engineering is always superior. But it's not.</strong> Tests for code that's gonna gather dust in some corner are just a waste of your time. Staging environments for pre-release software? That&#8217;s ridiculous.</p></blockquote><p>If you're an engineer at an early-stage startup, being able to prototype is a golden skill.</p><p><strong>What really sinks startups isn't ugly code.</strong> It's the failure to create something people are willing to pay for. That's why being able to prototype quickly, especially in the early stages, is super important.</p><p><strong>The cr&#232;me de la cr&#232;me of engineers can do both</strong>: whip up quick and dirty prototypes, validate their concepts at breakneck speed, and then spin those ideas into top-notch production code.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://juraj.blog/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">Subscribe for free to receive new posts.</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[Work Multipliers: The Hidden Productivity Killers]]></title><description><![CDATA[How the seemingly harmless "hey, could you please add this one simple feature" can crush your team's delivery speed forever.]]></description><link>https://juraj.blog/p/work-multipliers</link><guid isPermaLink="false">https://juraj.blog/p/work-multipliers</guid><dc:creator><![CDATA[Juraj Masar]]></dc:creator><pubDate>Sat, 03 Jun 2023 14:10:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Z_M5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5185a920-66bc-4d95-bd97-95c02e6b034e_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Engineers and PMs are used to judging the typical cost-benefit ratio of a new feature: Simply weigh the potential benefit against the man-days needed to put the feature in place, prioritize the list, and start from the top. Seems right? Not quite.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z_M5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5185a920-66bc-4d95-bd97-95c02e6b034e_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z_M5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5185a920-66bc-4d95-bd97-95c02e6b034e_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Z_M5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5185a920-66bc-4d95-bd97-95c02e6b034e_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Z_M5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5185a920-66bc-4d95-bd97-95c02e6b034e_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Z_M5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5185a920-66bc-4d95-bd97-95c02e6b034e_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z_M5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5185a920-66bc-4d95-bd97-95c02e6b034e_1024x1024.png" width="386" height="386" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5185a920-66bc-4d95-bd97-95c02e6b034e_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:386,&quot;bytes&quot;:1905786,&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_!Z_M5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5185a920-66bc-4d95-bd97-95c02e6b034e_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Z_M5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5185a920-66bc-4d95-bd97-95c02e6b034e_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Z_M5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5185a920-66bc-4d95-bd97-95c02e6b034e_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Z_M5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5185a920-66bc-4d95-bd97-95c02e6b034e_1024x1024.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><strong>Engineers often overlook how adding a feature impacts all future changes from that point on.</strong> Here's the truth:</p><p>Not all features are created equal. Some can literally tank your future productivity.</p><div><hr></div><p>"All of our competitors have dark mode, let's add it!"</p><p>"Let's translate our dashboard into other languages to break into European markets. How hard can it be?"</p><p>"Should we launch the responsive web app as a hybrid iOS app as well?"</p><p>"Don't forget about Android!"</p><p>"Could we convert parts of the web app into an Electron desktop app?"</p><div><hr></div><p>These suggestions sound harmless until you realize that <strong>every single feature added from that point on needs to accommodate all versions of your app</strong>.</p><p>Light &amp; dark, web &amp; iOS &amp; Android &amp; Electron, English &amp; German... <strong>that's 16 versions of the same page right there.</strong></p><p>Since it's not practical to check all page versions when adding a new feature, you'll end up with a user experience prone to errors and inconsistency, as well as a significant slowdown in development speed.</p><p>So the next time you're about to implement a feature, pause and ask yourself: <strong>could this be a work multiplier? </strong>Is it really worth it?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://juraj.blog/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">Subscribe for free to receive new posts.</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><strong>P.S.</strong> <strong><a href="https://betterstack.com/careers">We&#8217;re hiring</a></strong><a href="https://betterstack.com/careers"> at Better Stack</a>.</p>]]></content:encoded></item><item><title><![CDATA[100x Software Engineering]]></title><description><![CDATA[There's a subtle art to crafting amazing software at a pace that leaves your competition in the dust.]]></description><link>https://juraj.blog/p/100x-software-engineering</link><guid isPermaLink="false">https://juraj.blog/p/100x-software-engineering</guid><dc:creator><![CDATA[Juraj Masar]]></dc:creator><pubDate>Sat, 03 Jun 2023 14:04:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a20d61f-018f-4135-b33c-0485d6ca9adb_1080x721.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most of us get that there are top-tier software engineers who outperform their peers but fail to grasp by how much. And it's not about being 2x, 5x, or even 10x better. Some of the very best engineers are 100 times more productive than their peers.</p><p>Picture that: creating more value in a single day than a big-co engineer creates in 3 months.</p><h3>The examples are everywhere</h3><p>Google's initial team had just three people. Apple's crew was only 25-strong when they introduced the Apple II. At the point of its acquisition by Facebook, WhatsApp was serving 600 million users with a team of roughly 50 engineers. Instagram's tale is quite similar, boasting 30 million users with a mere 13 engineers at its $1 billion acquisition. And Basecamp? It began as a humble side project.</p><p>Similarly, at Better Stack we had only 3 software engineers writing code back in the day when we crossed $2 million in ARR, coupled with double-digit monthly growth. That's an impressive "revenue per engineer" ratio, if you ask me.</p><h3>It&#8217;s the art of doing less</h3><p><strong>Imagine a "1x engineer" as a fresh university grad</strong> who, given enough time, could build any software from scratch.</p><p><strong>Then the "10x engineer" is a seasoned pro with a refined intuition that helps them identify the part of code that should be implemented using an existing open-source library instead of building it from scratch.</strong> This doesn't mean they write superior code or type faster. Rather, they understand the immense time-saving potential of plugging in an existing open-source work rather than re-inventing the wheel. The key here, of course, is choosing the right library.</p><p>Who&#8217;s the mythical &#8220;100x engineer&#8221; then?</p><p>A "100x engineer" has a comprehensive understanding of the product roadmap, business model, competition, and common customer issues as well as a detailed knowledge of the work needed to implement a feature. As a result, <strong>they can judge the cost/benefit ratio of a feature better than the product manager.</strong> <strong>100x engineers push back on feature definitions. They&#8217;re able to cut the right 5% of the feature to simplify its implementation by 100x.</strong></p><p>100x engineers aren&#8217;t necessarily better at writing code. They better understand the context of everything absent in the task description.</p><p>They&#8217;re able to take a second to judge the cost/benefit ratio of a feature before they jump into implementation. They can often do so better than the product manager or the CEO.</p><p><strong>In the end, it's about everything an engineer doesn't have to do.</strong></p><p>Yet, pragmatism and thinking from first principles can be surprisingly rare among engineers. We've all been guilty of over-engineering, premature scaling, recreating existing libraries, and blindly following industry "best practices".</p><p>But when you manage to find a few of these 100x engineers, you're in for some real magic.</p><div id="youtube2-YaZJCOXprtE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;YaZJCOXprtE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/YaZJCOXprtE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://juraj.blog/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">Subscribe for free to receive new posts.</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>