<?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[Map for Engineers]]></title><description><![CDATA[Creating a map of knowledge and tools for software engineers, by engineer]]></description><link>https://log.mapforengineers.com</link><image><url>https://substackcdn.com/image/fetch/$s_!-WaT!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7438fd7a-18b0-49ed-a7c8-3736b27a2b96_500x500.png</url><title>Map for Engineers</title><link>https://log.mapforengineers.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 18 Apr 2026 01:03:07 GMT</lastBuildDate><atom:link href="https://log.mapforengineers.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Vitalii Lakusta]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[lakusta96@gmail.com]]></webMaster><itunes:owner><itunes:email><![CDATA[lakusta96@gmail.com]]></itunes:email><itunes:name><![CDATA[Vitalii Lakusta]]></itunes:name></itunes:owner><itunes:author><![CDATA[Vitalii Lakusta]]></itunes:author><googleplay:owner><![CDATA[lakusta96@gmail.com]]></googleplay:owner><googleplay:email><![CDATA[lakusta96@gmail.com]]></googleplay:email><googleplay:author><![CDATA[Vitalii Lakusta]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Anton Keks: Software Engineering 2.0, AI Edition | Ep. 10]]></title><description><![CDATA[Anton Keks and I sit together again to explore the real question: what does it mean to be an engineer now, in today's AI world?]]></description><link>https://log.mapforengineers.com/p/anton-keks-software-engineering-20</link><guid isPermaLink="false">https://log.mapforengineers.com/p/anton-keks-software-engineering-20</guid><dc:creator><![CDATA[Vitalii Lakusta]]></dc:creator><pubDate>Fri, 27 Mar 2026 10:34:43 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/192283031/42622942750d8b68f3183c0e0722aaed.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-TEYwFaPAt9Q" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;TEYwFaPAt9Q&quot;,&quot;startTime&quot;:&quot;2s&quot;,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/TEYwFaPAt9Q?start=2s&amp;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>With AI, great product engineering is relevant more than ever. <br><br>Anton Keks and I sit together again to explore the real question: what does it mean to be an engineer now, in today's AI world?<br><br>In this round 2 conversation, we talk about the shift from coding to thinking &#8212; from generating output to making decisions. Because AI doesn&#8217;t remove the need for engineering fundamentals; it amplifies the cost of not having them.<br><br>We cover what AI engineering actually looks like in practice: how to use these tools without losing control, how to avoid shallow understanding, and why system design, feedback loops, and clean abstractions matter more than ever.<br><br>We delved deep into discussing pair and pair-programming practices in the age of AI, and how engineers can collaborate with each other to avoid knowledge silos. <br><br>We also get into the operational side &#8212; CI/CD, security, engineering workflows, and building systems that scale and survive.<br><br>If you&#8217;re leading teams or writing production code in 2026, this is the podcast you might be interested to listen to. <br><br><a href="https://www.youtube.com/watch?v=TEYwFaPAt9Q">00:00</a> Intro &amp; What This &#8220;Round 2&#8221; Is About<br><a href="https://www.youtube.com/watch?v=TEYwFaPAt9Q&amp;t=655s">00:10:55</a> Blind Execution vs Real Understanding in Engineering<br><a href="https://www.youtube.com/watch?v=TEYwFaPAt9Q&amp;t=1310s">00:21:50</a> Why Core Engineering Skills Never Go Away<br><a href="https://www.youtube.com/watch?v=TEYwFaPAt9Q&amp;t=1965s">00:32:45</a> Avoiding Knowledge Silos in Teams<br><a href="https://www.youtube.com/watch?v=TEYwFaPAt9Q&amp;t=2620s">00:43:40</a> Team Culture, Demos &amp; Feedback Loops<br><a href="https://www.youtube.com/watch?v=TEYwFaPAt9Q&amp;t=3275s">00:54:35</a> Reducing Boilerplate &amp; Writing Cleaner Code<br><a href="https://www.youtube.com/watch?v=TEYwFaPAt9Q&amp;t=3930s">01:05:30</a> Productivity Tradeoffs &amp; Time Optimization<br><a href="https://www.youtube.com/watch?v=TEYwFaPAt9Q&amp;t=4585s">01:16:25</a> Using AI Effectively as an Engineer<br><a href="https://www.youtube.com/watch?v=TEYwFaPAt9Q&amp;t=5240s">01:27:20</a> CI/CD, Automation &amp; Developer Workflows<br><a href="https://www.youtube.com/watch?v=TEYwFaPAt9Q&amp;t=5895s">01:38:15</a> Security, Vulnerabilities &amp; Real Risks<br><a href="https://www.youtube.com/watch?v=TEYwFaPAt9Q&amp;t=6550s">01:49:10</a> Building Systems That Last for Years<br><a href="https://www.youtube.com/watch?v=TEYwFaPAt9Q&amp;t=7205s">02:00:05</a> Scaling Systems &amp; Working with Subdomains<br><br>Thanks for listening. Feel free to subscribe on YouTube or on MapForEngineers.com substack. See you next time.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://log.mapforengineers.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://log.mapforengineers.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Slides of My Talk on AI Agents | PyCon Oct 2025]]></title><description><![CDATA[Here are the slides that I used for my talk on AI Agents at PyCon Estonia.Thanks for checking Map for Engineers!]]></description><link>https://log.mapforengineers.com/p/slides-of-my-talk-on-ai-agents-pycon</link><guid isPermaLink="false">https://log.mapforengineers.com/p/slides-of-my-talk-on-ai-agents-pycon</guid><dc:creator><![CDATA[Vitalii Lakusta]]></dc:creator><pubDate>Wed, 01 Oct 2025 21:26:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NETW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa90f028-41f6-492d-a307-1c9cdddfd9b9_1914x1126.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_!NETW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa90f028-41f6-492d-a307-1c9cdddfd9b9_1914x1126.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NETW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa90f028-41f6-492d-a307-1c9cdddfd9b9_1914x1126.png 424w, https://substackcdn.com/image/fetch/$s_!NETW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa90f028-41f6-492d-a307-1c9cdddfd9b9_1914x1126.png 848w, https://substackcdn.com/image/fetch/$s_!NETW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa90f028-41f6-492d-a307-1c9cdddfd9b9_1914x1126.png 1272w, https://substackcdn.com/image/fetch/$s_!NETW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa90f028-41f6-492d-a307-1c9cdddfd9b9_1914x1126.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NETW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa90f028-41f6-492d-a307-1c9cdddfd9b9_1914x1126.png" width="1456" height="857" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa90f028-41f6-492d-a307-1c9cdddfd9b9_1914x1126.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:857,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1732961,&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://log.mapforengineers.com/i/175059993?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa90f028-41f6-492d-a307-1c9cdddfd9b9_1914x1126.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_!NETW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa90f028-41f6-492d-a307-1c9cdddfd9b9_1914x1126.png 424w, https://substackcdn.com/image/fetch/$s_!NETW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa90f028-41f6-492d-a307-1c9cdddfd9b9_1914x1126.png 848w, https://substackcdn.com/image/fetch/$s_!NETW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa90f028-41f6-492d-a307-1c9cdddfd9b9_1914x1126.png 1272w, https://substackcdn.com/image/fetch/$s_!NETW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa90f028-41f6-492d-a307-1c9cdddfd9b9_1914x1126.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>Here are the <strong><a href="https://docs.google.com/presentation/d/1kA_MYIOgCnf-PotLMzy_3FlFR7V984zbOcMEOkymd5E/edit?usp=sharing">slides</a></strong> that I used for my talk on AI Agents at <a href="https://pycon.ee/">PyCon Estonia</a>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://log.mapforengineers.com/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 checking Map for Engineers! Feel free to subscribe to receive my blog posts and podcast episodes. No spam.</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[What I Learned at AI Engineer Paris Conference, Sep 2025]]></title><description><![CDATA[My key takeaways and learnings from AI Engineer Paris, where the AI engineering community came together this September to discuss AI agents]]></description><link>https://log.mapforengineers.com/p/what-i-learned-at-ai-engineer-paris</link><guid isPermaLink="false">https://log.mapforengineers.com/p/what-i-learned-at-ai-engineer-paris</guid><dc:creator><![CDATA[Vitalii Lakusta]]></dc:creator><pubDate>Sun, 28 Sep 2025 17:32:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!r7OW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e39e53-0e9a-44a7-8079-886ff04fab68_4032x3024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><p><em>Disclaimer</em>: I am not affiliated with any company that I mention below (except <a href="https://pactum.com/">Pactum</a>, where I work as head of product engineering). All opinions below are my own.</p><p>&#8212;</p><p>I haven&#8217;t been to any engineering-focused conference for a while, so I decided to go to one. So <a href="https://carlrannaberg.medium.com/">Carl</a> and I were flying from Tallinn to visit the conference in Paris, with the goal to, hopefully, bring back learnings back to <a href="https://pactum.com/">Pactum</a> (where both of us work) for our engineering org. I was afraid there would be a lot of sales people who will only sell me things, and not much &#8220;meat&#8221;. I am happy it turned out the other way around - a lot of cool engineers &amp; AI enthusiasts visited the conference, from Nvidia, Shopify, Sentry, BMW, Mistral, Spotify etc. All right, let&#8217;s dive into the learnings! </p><p>All themes revolved around <strong>building and deploying AI agents</strong>.</p><h2>Building and optimising data layer for AI agents</h2><p>CEO of Neo4J, Emil Eifrem, talked about how they think about building a data layer optimised for agents. His talk was actually pretty technical and good. Emil&#8217;s main point was that data layer for AI agents would have to have these 4 properties: </p><ol><li><p>Handle <strong>structured</strong>, <strong>unstructured</strong>, and <strong>semi-structured</strong> data.</p></li><li><p>Consistently and reliably extract <strong>entities</strong> from unstructured data. </p></li><li><p>Link <strong>entities</strong> across memory and application data.</p></li><li><p>Disambiguate first party and derived data. </p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!r7OW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e39e53-0e9a-44a7-8079-886ff04fab68_4032x3024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r7OW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e39e53-0e9a-44a7-8079-886ff04fab68_4032x3024.png 424w, https://substackcdn.com/image/fetch/$s_!r7OW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e39e53-0e9a-44a7-8079-886ff04fab68_4032x3024.png 848w, https://substackcdn.com/image/fetch/$s_!r7OW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e39e53-0e9a-44a7-8079-886ff04fab68_4032x3024.png 1272w, https://substackcdn.com/image/fetch/$s_!r7OW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e39e53-0e9a-44a7-8079-886ff04fab68_4032x3024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r7OW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e39e53-0e9a-44a7-8079-886ff04fab68_4032x3024.png" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16e39e53-0e9a-44a7-8079-886ff04fab68_4032x3024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8392721,&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://log.mapforengineers.com/i/174755160?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e39e53-0e9a-44a7-8079-886ff04fab68_4032x3024.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_!r7OW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e39e53-0e9a-44a7-8079-886ff04fab68_4032x3024.png 424w, https://substackcdn.com/image/fetch/$s_!r7OW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e39e53-0e9a-44a7-8079-886ff04fab68_4032x3024.png 848w, https://substackcdn.com/image/fetch/$s_!r7OW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e39e53-0e9a-44a7-8079-886ff04fab68_4032x3024.png 1272w, https://substackcdn.com/image/fetch/$s_!r7OW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e39e53-0e9a-44a7-8079-886ff04fab68_4032x3024.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">Emil, CEO of Neo4J explaining linking of entities in the data layer</figcaption></figure></div><p>Emil was honest that in Neo4J they are pretty much still building out those properties optimised for AI agents usage.</p><p><strong>My takeaway. </strong>It&#8217;s an interesting idea to use native graph database as a knowledge graph, to do advanced techniques such as <a href="https://neo4j.com/blog/genai/what-is-graphrag/">GraphRAG</a> on top of it etc. Right now my knowledge on Neo4J and graph databases is limited, but my approach, as an engineer, would be the following regarding the data layer for AI agents:</p><ol><li><p>First, <em>start simple</em>. Understand how you will do <em>evals</em> of your agentic features. Now you have a feedback loop. Here goes your test-first approach.</p></li><li><p>And if you use Postgres, for example, <em>stick to it, for now</em>. First, throw all you need into a context window. If that doesn&#8217;t work, try giving your agent useful <em>tools</em> (e.g. exposed over MCP) to query your data. That might be a powerful enough and simple technique for your agent to read your data.</p></li><li><p>If giving your agent tools that manipulate your data layer is not good enough, as reflected by your evals test pipeline, try RAG with <em>pgvector</em>. Optimise RAG parameters (chunking, embedding model etc). Your <em>evals</em> will tell you if you move in the right direction.</p></li><li><p>That didn&#8217;t work either? Step back. Think about your agentic workflows. Can you split your big use-case into smaller steps? Agan, think about <a href="https://mastra.ai/en/docs/workflows/overview">agentic workflow primitives</a>.</p></li><li><p>Did I mention that by now you probably need to <em>ship your feature</em>? If your test evals are good enough, ship, and learn from your users and results. Definitely have monitoring and tracing and check evaluation results.</p></li><li><p>If you have all those basic steps in place with solid feedback loops and you want to optimise even further, sure, go ahead and explore graph databases and cool things like GraphRAG. But don&#8217;t over-engineer at first. Move with small, safe steps, optimising only when strong feedback loops are in place.</p></li></ol><p>Did I mention AI evals multiple times? Let&#8217;s explore them in more detail!</p><h2>AI Evals: what&#8217;s now and what&#8217;s coming</h2><p>Code is deterministic. AI agents using LLMs are usually non-deterministic. <a href="https://mastra.ai/">Mastra</a> defines evals in the following way (<a href="https://mastra.ai/en/docs/evals/overview">source</a>): </p><blockquote><p>Evals are automated tests that evaluate Agents outputs using model-graded, rule-based, and statistical methods. </p></blockquote><p>I chatted to CTO of <a href="http://Orq.ai">Orq.ai</a> at the conference, and engineers from <a href="http://arize.com">Arize.com</a>. Both companies are focusing on building out infra and tools for evals as part of their AI platform offering. Orq, for example, builds sophisticated evals guided by agent that is able to evaluate multiple steps of your agent run. Arize also has a lot of cool tooling, for different use-cases of evals. Both Arize and Orq are actively iterating on their evals product, learning based on how their customers use evals. There is no established single set of &#8220;best practices&#8221; yet, only active exploration.</p><p>@<a href="https://www.swyx.io/">swyx</a>, who gave a talk at the conference, said that he knows that Claude Code engineers still say that &#8220;Claude Code evals are still a lot about the vibes&#8221; [<em>everybody laughed at the room]</em>. It was semi-joke, but with a point. Swyx, I think, wanted to underline the point that the industry as a whole is still learning about how to do AI evals. It&#8217;s art &amp; science and the wild west still. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lcRx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa47bd7-3d03-4272-b072-2a0adfccd582_4032x3024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lcRx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa47bd7-3d03-4272-b072-2a0adfccd582_4032x3024.png 424w, https://substackcdn.com/image/fetch/$s_!lcRx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa47bd7-3d03-4272-b072-2a0adfccd582_4032x3024.png 848w, https://substackcdn.com/image/fetch/$s_!lcRx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa47bd7-3d03-4272-b072-2a0adfccd582_4032x3024.png 1272w, https://substackcdn.com/image/fetch/$s_!lcRx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa47bd7-3d03-4272-b072-2a0adfccd582_4032x3024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lcRx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa47bd7-3d03-4272-b072-2a0adfccd582_4032x3024.png" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ffa47bd7-3d03-4272-b072-2a0adfccd582_4032x3024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:10961811,&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://log.mapforengineers.com/i/174755160?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa47bd7-3d03-4272-b072-2a0adfccd582_4032x3024.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_!lcRx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa47bd7-3d03-4272-b072-2a0adfccd582_4032x3024.png 424w, https://substackcdn.com/image/fetch/$s_!lcRx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa47bd7-3d03-4272-b072-2a0adfccd582_4032x3024.png 848w, https://substackcdn.com/image/fetch/$s_!lcRx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa47bd7-3d03-4272-b072-2a0adfccd582_4032x3024.png 1272w, https://substackcdn.com/image/fetch/$s_!lcRx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa47bd7-3d03-4272-b072-2a0adfccd582_4032x3024.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">@swyx regarding Claude Code team&#8217;s comments on AI evals</figcaption></figure></div><p><strong>My takeaway.</strong> Everyone is learning and exploring how to do AI evals, as it&#8217;s totally a different beast from a traditional testing approach. One thing is clear though - it&#8217;s crucial to test your agents and gain feedback loops, both in your CI/CD pipeline and in production through observability. AI evals is a complex topic and is 100% worth exploring and learning about if you are serious about deploying AI agents to production. Just to give you a sense of techniques, below is a visualization from open-source engineering platform, <a href="https://langfuse.com/">Langfuse</a>, on online &amp; offline flows of AI evals and how they interact together: </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fHkU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31a1c8a0-208b-4583-90b7-52638a0dee1f_3840x1791.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fHkU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31a1c8a0-208b-4583-90b7-52638a0dee1f_3840x1791.png 424w, https://substackcdn.com/image/fetch/$s_!fHkU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31a1c8a0-208b-4583-90b7-52638a0dee1f_3840x1791.png 848w, https://substackcdn.com/image/fetch/$s_!fHkU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31a1c8a0-208b-4583-90b7-52638a0dee1f_3840x1791.png 1272w, https://substackcdn.com/image/fetch/$s_!fHkU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31a1c8a0-208b-4583-90b7-52638a0dee1f_3840x1791.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fHkU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31a1c8a0-208b-4583-90b7-52638a0dee1f_3840x1791.png" width="1456" height="679" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/31a1c8a0-208b-4583-90b7-52638a0dee1f_3840x1791.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:679,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Continuous evaluation loop&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="Continuous evaluation loop" title="Continuous evaluation loop" srcset="https://substackcdn.com/image/fetch/$s_!fHkU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31a1c8a0-208b-4583-90b7-52638a0dee1f_3840x1791.png 424w, https://substackcdn.com/image/fetch/$s_!fHkU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31a1c8a0-208b-4583-90b7-52638a0dee1f_3840x1791.png 848w, https://substackcdn.com/image/fetch/$s_!fHkU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31a1c8a0-208b-4583-90b7-52638a0dee1f_3840x1791.png 1272w, https://substackcdn.com/image/fetch/$s_!fHkU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31a1c8a0-208b-4583-90b7-52638a0dee1f_3840x1791.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">Online evals enhance offline evals. Source: <a href="https://langfuse.com/docs/evaluation/overview">Langfuse docs on evals</a></figcaption></figure></div><h2>System prompt engineering via meta prompting and explanations from AI evals</h2><p>There was a really cool talk by co-founder of Arize, Aparna Dhinakaran. It opened my mind how you can do <em>system prompt engineering at scale in a data-driven way</em>. Here is the flow:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qyCf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6659060f-83bb-43b2-9ff6-07904dc28a76_4032x3024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qyCf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6659060f-83bb-43b2-9ff6-07904dc28a76_4032x3024.png 424w, https://substackcdn.com/image/fetch/$s_!qyCf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6659060f-83bb-43b2-9ff6-07904dc28a76_4032x3024.png 848w, https://substackcdn.com/image/fetch/$s_!qyCf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6659060f-83bb-43b2-9ff6-07904dc28a76_4032x3024.png 1272w, https://substackcdn.com/image/fetch/$s_!qyCf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6659060f-83bb-43b2-9ff6-07904dc28a76_4032x3024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qyCf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6659060f-83bb-43b2-9ff6-07904dc28a76_4032x3024.png" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6659060f-83bb-43b2-9ff6-07904dc28a76_4032x3024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8510904,&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://log.mapforengineers.com/i/174755160?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6659060f-83bb-43b2-9ff6-07904dc28a76_4032x3024.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_!qyCf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6659060f-83bb-43b2-9ff6-07904dc28a76_4032x3024.png 424w, https://substackcdn.com/image/fetch/$s_!qyCf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6659060f-83bb-43b2-9ff6-07904dc28a76_4032x3024.png 848w, https://substackcdn.com/image/fetch/$s_!qyCf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6659060f-83bb-43b2-9ff6-07904dc28a76_4032x3024.png 1272w, https://substackcdn.com/image/fetch/$s_!qyCf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6659060f-83bb-43b2-9ff6-07904dc28a76_4032x3024.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">Co-founder of Arize, Aparna Dhinakaran, explains meta-prompt that improves a system prompt</figcaption></figure></div><p></p><ol><li><p>Let&#8217;s say you have <strong>v1 of your system prompt</strong> for your AI agent. If you deploy a customer support AI agent, maybe your system prompt says something along the lines of &#8220;You are a helpful customer support agent. Try to help customers to resolve the issue&#8221;. I am oversimplifying with this description of course. Usually your system prompt would include a lot of instructions and examples as well. The whole point is - it&#8217;s your first version, and over time you would like to improve your system prompt. How do you do it?</p></li><li><p>You deploy your AI evals, for both offline (CI/CD) and online (production observability). Important bit now - your AI evals include not only some score (be it label or a normalised score from 0 to 1), but also an <strong>explanation</strong>.</p></li><li><p>Now here is a cool bit. After your AI agent got some traffic, you will have a lot of those AI evals with scores and <strong>explanations. </strong>For example, if one agent output was not so good, your AI eval might give it a score with label &#8220;bad&#8221; or &#8220;0&#8221; with an explanation: &#8220;Agent output did not clarify the problem of the customer&#8221;. </p></li><li><p>You then write a <strong>meta prompt</strong> <strong>with the goal to improve the system prompt</strong>. You feed all corpus of generated explanations from AI evals into your meta prompt, and your <strong>meta prompt generates a better system prompt</strong>.</p><ol><li><p>For example, your system prompt might look like this (oversimplifying of course, just to show the point): <br>&#8221;&#8221;&#8221;<br>Your goal is to improve a system prompt. I will give you my current system prompt and all explanations from AI evals. Based on this input, please generate new improved version of system prompt, taking into account feedback from explanations from AI evals. <br>Current system prompt: &lt;system prompt&gt;<br>Explanations from AI evals results: &lt;array of explanations&gt;<br>&#8221;&#8221;&#8221;</p></li></ol></li></ol><p>Voila! You have your second iteration of a system prompt. Now you can evaluate your system prompt with your offline AI evals and if it improves performance, you deploy it to production. Once you gather enough production data of explanations from AI evals, you can re-run meta prompt again to improve a system prompt further. </p><p>This is data-driven way to improve your system prompt!</p><h2>BMW explores GUI-based Agents </h2><p>BMW gave a talk about how they explore GUI-based agents to manipulate their Android UI. It might be useful for some use-cases, where usage via strict API is not practical for one reason or another. GUI agents or browser-based agents might be a hybrid way to interact with some external system that you don&#8217;t have full control over or the one that changes rapidly. Just keep it in mind and consider using this tool if it helps you solve some integration problem that you have. </p><h2>LlamaIndex gave a cool talk on cloning NotebookLM. Structured data extraction</h2><p>My key takeaway is the following: the industry has solved the use-case of <strong>structured data extraction</strong> pretty well. To clarify, I mean the mapping of unstructured data to a structured one.  </p><p>As stated on <a href="https://www.ibm.com/think/topics/llamaindex">IBM docs</a> on one of prominent use-cases for LlamaIndex: </p><blockquote><p><strong>Structured data extraction</strong>: LLMs process natural language and extract semantically significant details such as names, dates, addresses and figures and present them in a consistent, structured format regardless of the original source. Once the data is structured, it can be sent to a database or further analyzed with tools such as LlamaParse.</p></blockquote><p>This use-case is very important for the whole industry. For example, in <a href="https://pactum.com/">Pactum</a>, we had to solve the same problem of mapping of unstructured data to a structured one. We used Gemini model and did our own context/prompt engineering. Today, there are more and more abstractions and tools available that help to solve this problem &#8220;out of the box&#8221;. </p><h2>Incident management assisted by AI agents</h2><p>I had opportunity to chat with engineers from DataDog at their booth. One thing is crystal clear: <strong>we are 100% moving towards AI-assisted incident management, and I think that&#8217;s a great use-case for AI agents</strong>.</p><p>DataDog, for example, has been building a lot of agentic features into their observability product, and at least their engineers say that they dog-food their own product to help them resolve their incidents/bugs faster with the help of AI agents.</p><p>The future, or should I say the present, looks like this. You get an error report from Sentry/DataDog or whatever you are using, the AI agent will do the first run trying to debug the issue, looking at all relevant error logs and traces. AI agent will try to correlate that with recent changes in your codebase, looking through your git history. Agent will use all relevant info to troubleshoot and try to solve the issue itself, or will ask clarifying information from you. In best case, agent solves the issue itself in one go. At worst case, it serves you, an engineer, as an assistant, whom you can guide to help you out, by asking it to check out logs and report you the findings etc. </p><p>I suggest you <strong>explore, experiment and adopt AI-assisted incident management</strong> at your workplace.</p><h2>Docker with MCP Toolkit </h2><p>Docker claims that with its MCP toolkit it&#8217;s very easy to host MCP servers locally. Probably for production use-cases as well (I don&#8217;t know). I haven&#8217;t delved into details yet, but if you have more experience dealing with Docker MCP toolkit and have opinions/thoughts, feel free to share in the comments. </p><h2>Sentry: using agent inside their MCP server</h2><p>Just an interesting pattern to report. Sentry exposes its MCP server. Inside its MCP server, they don&#8217;t just wrap API calls, but they have an agent that orchestrates and calls different APIs and then gives the final response. </p><h2>Voice AI got crazy good! Kyutai blew my mind</h2><p>The last presentation of the conference was by <a href="https://kyutai.org/">Kyutai</a>. And it really blew my mind. They solved full duplex voice to voice conversation, handling interruptions natively, excellent text to speech and speech to text, seamless switching between languages, and fully recognizing all actors who speak. The presentation is here on <a href="https://www.youtube.com/watch?v=wyUdpmj9-64">YouTube</a>. I strongly recommend you to watch, it&#8217;s fascinating! </p><h2>And that&#8217;s a wrap!</h2><p>Well, here are my random thoughts from the conference. I hope you took something useful away. One thing is clear: it&#8217;s a wild west with AI agents. so stay humble to keep learning, and at the same time be bold and curious! For more perspective on how AI agents change engineering, I suggest you to check <a href="https://tidyfirst.substack.com/p/programming-deflation">Kent Beck&#8217;s article called Programming Deflation</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l-Li!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee611ecf-2ec6-4c7d-a9f1-0f0e9193cb52_1782x1336.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l-Li!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee611ecf-2ec6-4c7d-a9f1-0f0e9193cb52_1782x1336.jpeg 424w, https://substackcdn.com/image/fetch/$s_!l-Li!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee611ecf-2ec6-4c7d-a9f1-0f0e9193cb52_1782x1336.jpeg 848w, https://substackcdn.com/image/fetch/$s_!l-Li!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee611ecf-2ec6-4c7d-a9f1-0f0e9193cb52_1782x1336.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!l-Li!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee611ecf-2ec6-4c7d-a9f1-0f0e9193cb52_1782x1336.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!l-Li!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee611ecf-2ec6-4c7d-a9f1-0f0e9193cb52_1782x1336.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee611ecf-2ec6-4c7d-a9f1-0f0e9193cb52_1782x1336.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:606314,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://log.mapforengineers.com/i/174755160?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee611ecf-2ec6-4c7d-a9f1-0f0e9193cb52_1782x1336.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_!l-Li!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee611ecf-2ec6-4c7d-a9f1-0f0e9193cb52_1782x1336.jpeg 424w, https://substackcdn.com/image/fetch/$s_!l-Li!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee611ecf-2ec6-4c7d-a9f1-0f0e9193cb52_1782x1336.jpeg 848w, https://substackcdn.com/image/fetch/$s_!l-Li!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee611ecf-2ec6-4c7d-a9f1-0f0e9193cb52_1782x1336.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!l-Li!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee611ecf-2ec6-4c7d-a9f1-0f0e9193cb52_1782x1336.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">Carl and I at the AI Engineer Paris conference</figcaption></figure></div><p>Also, we are hiring software engineers to Pactum. Feel free to check out <a href="http://pactum.com/careers.">pactum.com/careers.</a></p><p>Happy to continue the conversation in comments. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://log.mapforengineers.com/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 Map for Engineers! Subscribe for free to receive new posts. No spam.</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[On Product Engineering from Alvar, early Wiser | Ep. 9 with Alvar Lumberg]]></title><description><![CDATA[We sit down with Alvar Lumberg to discuss his engineering journey and lessons on product engineering, by building Wise from zero to decacorn]]></description><link>https://log.mapforengineers.com/p/on-product-engineering-from-alvar</link><guid isPermaLink="false">https://log.mapforengineers.com/p/on-product-engineering-from-alvar</guid><dc:creator><![CDATA[Vitalii Lakusta]]></dc:creator><pubDate>Fri, 15 Aug 2025 16:49:26 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/171060755/ab4e92b44534c8f43697f1055ff9663c.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Alvar Lumberg needs no introduction in Estonia in startup circles: Alvar is a seasoned engineering leader who built Wise from the early days, then founded Gr&#252;nfin, and now is transforming investing at Lightyear. We chatted with Alvar on his engineering journey, and discussed ideas on product engineering, building startups, and building great teams.</p><div id="youtube2-cehHEBWEfIA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;cehHEBWEfIA&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/cehHEBWEfIA?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>Here is what we talked about: </p><p>00:00:00 - Intro</p><p>00:00:05 - Welcome &amp; Guest Introduction</p><p>00:00:33 - Alvar's Early Exposure to Computers and Coding</p><p>00:03:38 - First Steps into the Tech Industry</p><p>00:05:05 - Growth and Learning at Hansa Bank (now Swedbank)</p><p>00:06:13 - The Codeborn Experience and the Shift to Product Focus</p><p>00:08:03 - Joining the Startup World with TransferWise</p><p>00:10:00 - Evolution of Roles and Responsibilities at Wise</p><p>00:12:16 - Founding Gr&#252;nfin: Mission and Challenges</p><p>00:13:20 - Comparing Different Work Environments: Bank, Contracting, Startup</p><p>00:19:51 - Key Skills for Startup Engineers</p><p>00:24:45 - Ensuring Quality in a FinTech Startup</p><p>00:35:24 - The Role of Test-Driven Development (TDD)</p><p>00:41:49 - Philosophy on Engineering Leadership</p><p>00:47:15 - Building a Team: The Importance of Composition</p><p>00:50:50 - Lessons Learned from the Gr&#252;nfin Journey</p><p>00:56:57 - Why Alvar Joined Lightyear</p><p>00:59:58 - Engineering Challenges at Lightyear</p><p>01:02:44 - The Future of Engineering with LLMs</p><p>01:11:53 - Recommended Reading and Resources</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://log.mapforengineers.com/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 tuning in on Map for Engineers! Feel free to subscribe: no spamming, and only high-quality content</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[On Design | Ep. 8 with Janne Kaasalainen]]></title><description><![CDATA[In this episode, we sit down with veteran designer Janne Kaasalainen for an in-depth discussion on the art and science of UX design.]]></description><link>https://log.mapforengineers.com/p/on-design-ep-8-with-janne-kaasalainen</link><guid isPermaLink="false">https://log.mapforengineers.com/p/on-design-ep-8-with-janne-kaasalainen</guid><dc:creator><![CDATA[Vitalii Lakusta]]></dc:creator><pubDate>Tue, 12 Aug 2025 19:05:44 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/170814158/f675e4f8537ba988b61c9cadbccd013a.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-x_Q2yhNz6zs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;x_Q2yhNz6zs&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/x_Q2yhNz6zs?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>00:00:05 - Intro<br>00:00:35 - Janne's introduction<br>00:01:12 - Janne's career start and moving to UX<br>00:03:37 - Pivotal moments in Janne's career<br>00:06:40 - Misconceptions about design and UX<br>00:12:20 - How should engineers, designers, and PMs collaborate?<br>00:21:54 - Working effectively with designers<br>00:28:42 - What other UX misunderstandings do people have?<br>00:31:07 - How does a company align on what is "good"?<br>00:44:18 - How to align on design principles and values in a growing startup?<br>00:53:52 - How to make a good UX in a product?<br>01:00:42 - How to become better at UX and design?<br>01:07:02 - How will design and UX evolve in the next 10 years?</p><p>And if you want to work with Janne and me, we are hiring in Pactum - https://pactum.com/careers</p><p>For more episodes, feel free to subscribe here in YouTube, or check MapForEngineers.com, thank you!</p>]]></content:encoded></item><item><title><![CDATA[AI Agents for Software Engineers. Claude Code Deep Dive | Ep. 7 with Carl Rannaberg]]></title><description><![CDATA[Carl Rannaberg, staff software engineer at Pactum.ai, sits down with me to discuss how AI agents transform software engineering practices.]]></description><link>https://log.mapforengineers.com/p/ai-agents-for-software-engineers</link><guid isPermaLink="false">https://log.mapforengineers.com/p/ai-agents-for-software-engineers</guid><dc:creator><![CDATA[Vitalii Lakusta]]></dc:creator><pubDate>Fri, 01 Aug 2025 10:11:45 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/169817422/d5544ab50b54aa32cd5e70292d005a42.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Carl and I talked deeply about CLI-based AI agents, specifically Claude Code, how CLI AI agents are more composable than IDE-based agents like Cursor, spec-driven development, making codebases agent-native, and, last but not least, which skills should we hone as software engineers, because our profession is not going anywhere, but we need to adapt. Super interesting conversation, hope you enjoy! </p><p>Oh, and if you want to work together with Carl and me, we are hiring in Pactum, feel free to check out <a href="https://www.youtube.com/redirect?event=video_description&amp;redir_token=QUFFLUhqbjBmaWh1MjZqQWRkc2s4QUotUlZBdmx2QUZuZ3xBQ3Jtc0trQlpCeXR4cEFFb0VxdnV2ODNfSTd6NGg4M0laaWIzRlJObWJLUFQ2MVEwbUxKV1JwaVctMFEwOE9uaWU2ZU5aUGg4a3NiNjhySEdrN0VOMmRLa1Q0TnFYaDVBTEZmZ1ZPUGpmNFZmT0p3NEZ2WnhzRQ&amp;q=https%3A%2F%2Fpactum.com%2Fcareers%2F&amp;v=CpSdv3k8-64">https://pactum.com/careers/</a></p><div id="youtube2-CpSdv3k8-64" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;CpSdv3k8-64&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/CpSdv3k8-64?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>00:00:00 Introduction &amp; Current Coding Workflow <br>00:10:40 Junior vs Senior Engineers with AI <br>00:27:21 Spec-Driven Development &amp; Tasks <br>00:46:31 CLI Agents vs IDE Tools (Cursor) <br>00:52:13 MCP vs CLI Tools &amp; Composability <br>00:57:20 Claude Code Features: Slash Commands &amp; Hooks <br>01:12:32 Making Codebases Agent-Native <br>01:31:40 AI Adoption in Organizations <br>01:44:16 CI/CD Pipelines &amp; AI Automation</p><p>Thanks for listening! </p>]]></content:encoded></item><item><title><![CDATA[Dmytro Hnatiuk: Scaling Journey of Finance Engineering in Wise | Ep. 6]]></title><description><![CDATA[Dmytro Hnatiuk, principal engineer in Wise, shared his scaling journey of finance engineering in Wise.]]></description><link>https://log.mapforengineers.com/p/dmytro-hnatiuk-scaling-journey-of</link><guid isPermaLink="false">https://log.mapforengineers.com/p/dmytro-hnatiuk-scaling-journey-of</guid><dc:creator><![CDATA[Vitalii Lakusta]]></dc:creator><pubDate>Sun, 16 Feb 2025 22:23:09 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/157282357/5dfac3cfeaa5a720e1187b6a0bd2592a.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>I really enjoyed this discussion. I hope you find some useful bits for yourself as well. Chapters are manually annotated by me for you to be able to navigate and jump around. Thanks for listening to Map for Engineers!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://log.mapforengineers.com/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 listening to Map for Engineers! </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><p>Available as video on YouTube as well: </p><div id="youtube2-a4rK1ryNa74" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;a4rK1ryNa74&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/a4rK1ryNa74?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>00:00:00 - Start</p><p>00:01:01 - Dmytro's background</p><p>00:13:50 - Early days of finance team in Wise</p><p>00:19:36 - Becoming lead in the finance team</p><p>00:21:19 - Squad o fteams, tribe of squads: splitting finance into subdomains</p><p>00:27:42 - Conway law: team splits reflecting architecture</p><p>00:32:56 - Event-driven architecture</p><p>00:34:51 - Context on what finance team is doing</p><p>00:36:06 - Batch approach vs real-time financials</p><p>00:39:56 - Error handling, dead letter queues</p><p>00:41:44 - Observability: Prometheus, Grafana, in-house tools</p><p>00:49:32 - Assembling the right team: finding people who care</p><p>00:52:42 - DB Skills. Postgres. Modularization. Couplings</p><p>00:57:24 - Staff+ engineering path</p><p>01:03:32 - Engineering principles in finance. Compliance, auditing</p><p>01:09:22 - Learning domain where you work</p><p>01:11:31 - Testing in finance</p><p>01:27:00 - Growing in your career: find your path, learn what interests you</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://log.mapforengineers.com/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 listening to Map for Engineers! </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[Anton Keks: Problems in Software Engineering - PRs, Microservices, Testing, Refactoring | Ep. 5]]></title><description><![CDATA[Anton, co-founder of Codeborne, and I sit together to discuss some of the problems in software engineering industry - issues with pull requests, microservices, testing, fear of refactoring.]]></description><link>https://log.mapforengineers.com/p/anton-keks-problems-in-software-engineering</link><guid isPermaLink="false">https://log.mapforengineers.com/p/anton-keks-problems-in-software-engineering</guid><dc:creator><![CDATA[Vitalii Lakusta]]></dc:creator><pubDate>Mon, 04 Nov 2024 07:12:27 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/151145679/0c7d54e96407e902d4440dbd8163b751.mp3" length="0" type="audio/mpeg"/><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_!jnV2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a3fa156-f412-46fc-8b3f-8465e9253f27_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jnV2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a3fa156-f412-46fc-8b3f-8465e9253f27_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!jnV2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a3fa156-f412-46fc-8b3f-8465e9253f27_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!jnV2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a3fa156-f412-46fc-8b3f-8465e9253f27_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!jnV2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a3fa156-f412-46fc-8b3f-8465e9253f27_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jnV2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a3fa156-f412-46fc-8b3f-8465e9253f27_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a3fa156-f412-46fc-8b3f-8465e9253f27_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:618203,&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_!jnV2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a3fa156-f412-46fc-8b3f-8465e9253f27_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!jnV2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a3fa156-f412-46fc-8b3f-8465e9253f27_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!jnV2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a3fa156-f412-46fc-8b3f-8465e9253f27_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!jnV2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a3fa156-f412-46fc-8b3f-8465e9253f27_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><div id="youtube2-4Hc1lEuyLng" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;4Hc1lEuyLng&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/4Hc1lEuyLng?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>Here are annotated chapters of the discussion, for your convenience:</p><p>00:00:00 Intro</p><p>00:00:00 Sneak peek </p><p>00:00:49 Episode overview </p><p>00:04:28 Anton's intro, background </p><p>00:06:37 Anton founded Codeborne: TDD and pair programming: following extreme programming principles </p><p>00:08:57 Agile is about short feedback loops </p><p>00:12:09 Under-engineering vs over-engineering </p><p>00:15:29 Tech debt and testing: engineers don't handle tech debt well enough </p><p>00:17:45 Lack of refactoring is a big problem </p><p>00:18:14 Problems with pull requests </p><p>00:27:00 Problems with squash merge </p><p>00:27:30 Good commit messages are essential </p><p>00:31:09 Good code is easy to change </p><p>00:34:34 Pair programming  is continuous code review </p><p>00:36:11 Daily code review with a whole team </p><p>00:48:44 Microservices: be careful </p><p>00:59:23 Book recommendations from Anton </p><p>01:00:38 Wrap up</p>]]></content:encoded></item><item><title><![CDATA[Lauri Koobas: Data Engineering - from early startup to scaling | Ep. 4]]></title><description><![CDATA[Lauri Koobas, ex-Microsoft and currently Head of Data Platform at Bondora, shed insights on data engineering - building data warehouse and dealing with analytics from early startup to scaling. We also discussed GDPR and PII challenges.]]></description><link>https://log.mapforengineers.com/p/lauri-koobas-data-engineering</link><guid isPermaLink="false">https://log.mapforengineers.com/p/lauri-koobas-data-engineering</guid><dc:creator><![CDATA[Vitalii Lakusta]]></dc:creator><pubDate>Sun, 20 Oct 2024 20:57:52 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/150488239/811aa801f8685dc390bf15b6b5ed250d.mp3" length="0" type="audio/mpeg"/><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_!nbDK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59752468-94d6-4a38-819b-0c5fe9bdfa19_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nbDK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59752468-94d6-4a38-819b-0c5fe9bdfa19_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!nbDK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59752468-94d6-4a38-819b-0c5fe9bdfa19_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!nbDK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59752468-94d6-4a38-819b-0c5fe9bdfa19_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!nbDK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59752468-94d6-4a38-819b-0c5fe9bdfa19_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nbDK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59752468-94d6-4a38-819b-0c5fe9bdfa19_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/59752468-94d6-4a38-819b-0c5fe9bdfa19_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:489827,&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_!nbDK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59752468-94d6-4a38-819b-0c5fe9bdfa19_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!nbDK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59752468-94d6-4a38-819b-0c5fe9bdfa19_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!nbDK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59752468-94d6-4a38-819b-0c5fe9bdfa19_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!nbDK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59752468-94d6-4a38-819b-0c5fe9bdfa19_1280x720.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><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://log.mapforengineers.com/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 listening to Map for Engineers! </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><a href="https://youtu.be/MCn4ZAkSjwA">Full video version with annotated chapters on Map for Engineers Youtube channel</a></p><p>Lauri Koobas, ex-Microsoft and currently Head of Data Platform at Bondora, shed insights on data engineering - from early startup to scaling. </p><p>We mostly focused on analytics and building data warehouse - real-world challenges from both data engineering and software engineering sides. We also discussed GDPR and PII challenges when dealing with data.</p><p><strong>Annotated chapters</strong> in timeline:</p><p>00:00:00 Sneak peek of episode</p><p>00:01:21 Episode overview </p><p>00:02:44 Introduction, Lauri's background </p><p>00:20:48 Starship robots: huge amount of data there </p><p>00:23:37 Data lake, data warehouse, data lakehouse </p><p>00:26:44 Devil is in the details: timestamps, texts, character sets... </p><p>00:49:44 Moving data from prod to data warehouse </p><p>00:53:09 Analytics tools: PostHog, Amplitude, Redash, Databricks </p><p>01:00:15 Analytics tools vs real-time monitoring like Prometheus/Grafana </p><p>01:04:15 Usability matters: each tool for its job </p><p>01:06:38 Startup grows: needs in data analytics </p><p>01:11:09 Multiple data sources: when data warehouse really begins </p><p>01:19:55 Data and (de-)coupling: software engineers should not be blocked by analytics </p><p>01:22:51 Data ETL </p><p>01:24:59 Changes in data model: multi-phase migrations </p><p>01:29:38 Change data capture, incremental imports </p><p>01:34:21 Should analytics have new data in real time? Maybe not? </p><p>01:39:02 Importing data into DWH through business events </p><p>01:43:37 When DWH subscribes to business events, data model can evolve freely </p><p>01:47:16 Quick recap what we discussed so far </p><p>01:52:25 GDPR and Data Compliance: start early </p><p>01:56:05 PII data: know exactly where you store it, control it well </p><p>02:03:37 Lauri's books recommendations on data engineering - Kimball </p><p>02:07:18 Lauri's podcast on data engineering, in Estonian </p><p>02:08:28 Wrap up</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://log.mapforengineers.com/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">See you in the next episode!</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[Carl Rannaberg: Latest AI Tools in Software Development - Cursor, Continue.dev, v0, Claude | Ep. 3]]></title><description><![CDATA[Watch now (127 mins) | Carl, staff software engineer at Pactum, shed light on some of the latest AI tools in software development. We discussed v0.dev, continue.dev, ollama, and much more!]]></description><link>https://log.mapforengineers.com/p/carl-rannaberg-latest-ai-tools-in-software-dev</link><guid isPermaLink="false">https://log.mapforengineers.com/p/carl-rannaberg-latest-ai-tools-in-software-dev</guid><dc:creator><![CDATA[Vitalii Lakusta]]></dc:creator><pubDate>Fri, 04 Oct 2024 17:00:07 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/149814186/d2d9f31a5af0ed2e868ba7c07577c687.mp3" length="0" type="audio/mpeg"/><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_!klQF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a46bcb-173b-4bfe-8ad4-f099cfa6713d_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!klQF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a46bcb-173b-4bfe-8ad4-f099cfa6713d_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!klQF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a46bcb-173b-4bfe-8ad4-f099cfa6713d_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!klQF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a46bcb-173b-4bfe-8ad4-f099cfa6713d_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!klQF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a46bcb-173b-4bfe-8ad4-f099cfa6713d_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!klQF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a46bcb-173b-4bfe-8ad4-f099cfa6713d_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/52a46bcb-173b-4bfe-8ad4-f099cfa6713d_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:410453,&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_!klQF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a46bcb-173b-4bfe-8ad4-f099cfa6713d_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!klQF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a46bcb-173b-4bfe-8ad4-f099cfa6713d_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!klQF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a46bcb-173b-4bfe-8ad4-f099cfa6713d_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!klQF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a46bcb-173b-4bfe-8ad4-f099cfa6713d_1280x720.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><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://log.mapforengineers.com/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">Thank you for listening! See you in the next episode!</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><a href="https://www.youtube.com/watch?v=S09iueiOBVo">Full video version with annotated chapters on Map for Engineers Youtube channel</a></strong></p><div><hr></div><p><strong>Annotated chapters</strong> in timeline on topics that Carl and I covered: </p><p>00:00:00 - Start</p><p>00:04:05 - Small talk, getting into the groove</p><p>00:08:18 - Carl's background: ex-Pipedrive, now engineer in Pactum</p><p>00:19:44 - Early tools: simple autocomplete and simple prompting without context</p><p>00:27:11 - AI tools with context: <strong>Cursor IDE</strong>, <strong>Continue.dev</strong></p><p>00:43:35 - <strong>Cursor IDE Composer </strong>- Prompt+Apply to Code Instantly</p><p>00:47:29 - <strong>Ollama</strong> - following docker philosophy</p><p>00:55:15 - <strong>V0.dev</strong> - <strong>LLM to create frontend components</strong></p><p>00:59:27 - <strong>Cursor IDE + v0.dev combination as a workflow</strong></p><p>01:02:23 - <strong>Claude 3.5 Sonnet</strong></p><p>01:03:10 - <strong>OpenAI o1</strong></p><p>01:04:56 - <strong>LLMs vs SQL Queries</strong> - still to be solved</p><p>01:08:17 - <strong>LLM in TDD and Testing Workflows</strong></p><p>01:16:04 - <strong>Focus on engineering fundamentals</strong> - LLM does not replace your engineering fundamental knowledge</p><p>01:20:13 - <strong>Book recommendations</strong></p><p>01:29:09 - Hosting models yourself - expensive</p><p>01:33:27 - Fine-tuning models</p><p>01:35:33 - <strong>RAG</strong></p><p>01:49:50 - Chain of thought</p><p>01:51:46 - vyce.app - GenAI helping with compliance questions</p><p>01:54:25 - <strong>Summary of tools we covered so far</strong></p><p>01:58:43 - <strong>GenAI vs engineering careers</strong></p><p>02:05:39 - Wrap up with Carl</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://log.mapforengineers.com/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">Thank you for listening! See you in the next episode!</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[Joel Mislav Kunst: Engineering Career and Growth | Ep. 2]]></title><description><![CDATA[Podcast | Growing as an engineer: navigating early career, growing in senior/staff+ roles, assessing fork of pursuing manager career track.]]></description><link>https://log.mapforengineers.com/p/ep2-joel-engineering-growth</link><guid isPermaLink="false">https://log.mapforengineers.com/p/ep2-joel-engineering-growth</guid><dc:creator><![CDATA[Vitalii Lakusta]]></dc:creator><pubDate>Sun, 29 Sep 2024 15:55:38 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/149564089/75465c2ba2c424395c157cd83a1cb166.mp3" length="0" type="audio/mpeg"/><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_!V9QU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79abce64-8fa3-4029-b447-c219acbbe06e_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V9QU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79abce64-8fa3-4029-b447-c219acbbe06e_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!V9QU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79abce64-8fa3-4029-b447-c219acbbe06e_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!V9QU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79abce64-8fa3-4029-b447-c219acbbe06e_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!V9QU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79abce64-8fa3-4029-b447-c219acbbe06e_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V9QU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79abce64-8fa3-4029-b447-c219acbbe06e_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79abce64-8fa3-4029-b447-c219acbbe06e_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:653864,&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_!V9QU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79abce64-8fa3-4029-b447-c219acbbe06e_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!V9QU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79abce64-8fa3-4029-b447-c219acbbe06e_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!V9QU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79abce64-8fa3-4029-b447-c219acbbe06e_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!V9QU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79abce64-8fa3-4029-b447-c219acbbe06e_1280x720.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><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://log.mapforengineers.com/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 to be notified of new episodes. No spam.</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><a href="https://www.youtube.com/watch?v=FJ8rL5DQeOo">Full video version with annotated chapters on Map for Engineers Youtube channel</a></strong></p><p>I had a pleasure to chat with my friend Joel Mislav Kunst, who is Engineering Manager at Microsoft. We talked about growth in engineering. Some of the topics that we touched upon, with timeline timestamps are: </p><p>00:00:00 - Glimpse of episode<br>00:01:16 - Quick episode overview<br>00:05:18 - Joel's journey in software engineering<br>00:14:55 - <strong>Focus on engineering fundamentals</strong><br>00:23:34 - <strong>Learning from all hard experiences: solving root causes</strong><br>00:31:05 - <strong>Relationship between engineer and their manager</strong><br>00:53:03 - <strong>Manager is not your punching bag</strong> <strong>for complaining</strong>: propose initiatives instead, be active<br>01:10:55 - <strong>Engineer vs manager: fork in career<br></strong>01:29:17 - Generative AI in context of engineering career/growth<br>01:36:01 - <strong>Teaching is essential for growth</strong>. <strong>Seniors teaching juniors</strong>. <strong>Knowledge sharing<br></strong>01:43:14 - Wrap up</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://log.mapforengineers.com/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 listening to Map for Engineers! Subscribe to be notified of new episodes. No spam.</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[Ürgo Ringo: Product Engineering | Ep. 1]]></title><description><![CDATA[&#220;rgo Ringo joined Wise.com as one of the first 12 engineers or so. As former colleagues from Wise, we had a great chat about product engineering, domain-driven design, and team collaboration. - MapForEngineers.com]]></description><link>https://log.mapforengineers.com/p/ep1-urgo-ringo-product-engineering</link><guid isPermaLink="false">https://log.mapforengineers.com/p/ep1-urgo-ringo-product-engineering</guid><pubDate>Wed, 25 Sep 2024 18:46:26 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/149407314/5ef58fa57ca2ccf1830148f6c077d48d.mp3" length="0" type="audio/mpeg"/><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_!F2M6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dedf2a0-5f1d-4d2a-a334-9c3b9bd70bf5_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!F2M6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dedf2a0-5f1d-4d2a-a334-9c3b9bd70bf5_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!F2M6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dedf2a0-5f1d-4d2a-a334-9c3b9bd70bf5_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!F2M6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dedf2a0-5f1d-4d2a-a334-9c3b9bd70bf5_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!F2M6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dedf2a0-5f1d-4d2a-a334-9c3b9bd70bf5_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!F2M6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dedf2a0-5f1d-4d2a-a334-9c3b9bd70bf5_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3dedf2a0-5f1d-4d2a-a334-9c3b9bd70bf5_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:628519,&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_!F2M6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dedf2a0-5f1d-4d2a-a334-9c3b9bd70bf5_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!F2M6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dedf2a0-5f1d-4d2a-a334-9c3b9bd70bf5_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!F2M6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dedf2a0-5f1d-4d2a-a334-9c3b9bd70bf5_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!F2M6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dedf2a0-5f1d-4d2a-a334-9c3b9bd70bf5_1280x720.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>&#220;rgo and I had a great chat! I will give a short summary of key takeaways that I got from this valuable discussion with &#220;rgo.</p><p><a href="https://www.youtube.com/@mapforengineers">Map For Engineers Podcast on Youtube</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://log.mapforengineers.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://log.mapforengineers.com/subscribe?"><span>Subscribe now</span></a></p><h2>Key takeaways</h2><h3>Work in agency is different from work in a product company</h3><p>Work in agency (outsource) vs product company is different for an engineer. In agency, you get a lot of experience with different projects, but you don&#8217;t own a product or its outcomes. </p><p>In contract, in a product company, engineers should care about the end product, <strong>getting the feedback from users and customers. </strong>Responsibilities and impact are on the next level for an engineer in a product company, that you don&#8217;t get in a project-based work in an agency.</p><p></p><h3>Knowledge sharing inside a team. Avoid knowledge silos</h3><p>It&#8217;s important to avoid <em>pockets of knowledge</em> in a team, where sub-groups form, because then it&#8217;s hard to have a cohesive team. There are many tools to avoid it, for example:</p><ul><li><p>Pair programming</p></li><li><p>Deliberately rotating knowledge among people</p></li><li><p>Working in pairs (not necessarily pair programming, but just solving some problem together) on a topic for a short time (e.g. a week or two). But then switching pairs and topics, to avoid knowledge silos.</p></li><li><p>I wrote in detail about some practices that I employ in Pactum to avoid knowledge silos in the team in the article <a href="https://pactum.substack.com/p/values-principles-practices">Values, Principles and Practices in Engineering Team</a>.</p><p></p></li></ul><h3>Product engineering begins where the comfort of the coding ends</h3><p>&#220;rgo wrote amazing article about this topic, called <a href="https://medium.com/inbank-product-and-engineering/product-engineer-940cf36f3c76">Product Engineer, available in his Medium</a>. </p><p>This diagram below is from &#220;rgo&#8217;s post, but it summarizes the essence of product engineering very well: </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TbPg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dcf5a5-ca67-4ca5-9b4c-995abcfe44ad_1400x591.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TbPg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dcf5a5-ca67-4ca5-9b4c-995abcfe44ad_1400x591.png 424w, https://substackcdn.com/image/fetch/$s_!TbPg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dcf5a5-ca67-4ca5-9b4c-995abcfe44ad_1400x591.png 848w, https://substackcdn.com/image/fetch/$s_!TbPg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dcf5a5-ca67-4ca5-9b4c-995abcfe44ad_1400x591.png 1272w, https://substackcdn.com/image/fetch/$s_!TbPg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dcf5a5-ca67-4ca5-9b4c-995abcfe44ad_1400x591.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TbPg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dcf5a5-ca67-4ca5-9b4c-995abcfe44ad_1400x591.png" width="1400" height="591" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1dcf5a5-ca67-4ca5-9b4c-995abcfe44ad_1400x591.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:591,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TbPg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dcf5a5-ca67-4ca5-9b4c-995abcfe44ad_1400x591.png 424w, https://substackcdn.com/image/fetch/$s_!TbPg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dcf5a5-ca67-4ca5-9b4c-995abcfe44ad_1400x591.png 848w, https://substackcdn.com/image/fetch/$s_!TbPg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dcf5a5-ca67-4ca5-9b4c-995abcfe44ad_1400x591.png 1272w, https://substackcdn.com/image/fetch/$s_!TbPg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dcf5a5-ca67-4ca5-9b4c-995abcfe44ad_1400x591.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">Diagram of &#220;rgo Ringo, from his blog post <a href="https://medium.com/inbank-product-and-engineering/product-engineer-940cf36f3c76">Product Engineer</a></figcaption></figure></div><p></p><p>Product engineers need to establish frequent feedback loops to get <em>signal</em> from users on the usefulness of what they delivered. This is essential for closing the feedback loop. Once you get learnings, you repeat the process: Learn &#8594; Build &#8594; Ship &#8594; Learn &#8594; &#8230;[repeat]</p><h3>Domain-Driven Design: Metaphors are important</h3><p>Coming up with metaphors when modelling software is very important. When you come up with a good metaphor, try to embed it into your <a href="https://martinfowler.com/bliki/UbiquitousLanguage.html">ubiquitous language</a>.</p><h3>GenAI in Software Engineering</h3><p>GenAI won&#8217;t replace product engineers for a while. In fact, product engineering becomes even more essential than just coding. Coding is just a tool, a means to an end. Product engineering skills will be ever so valuable - to understand which product to build, to iterate, to learn from your users and customers, to be creative. Product engineers will leverage GenAI tools to automate non-interesting tasks (e.g. creating this next frontend component, if it can be automated quickly).</p><div><hr></div><p>And that&#8217;s a wrap! I will be recording new episodes soon. Feel free to subscribe if you found it valuable.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://log.mapforengineers.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://log.mapforengineers.com/subscribe?"><span>Subscribe now</span></a></p><p><em>Map for Engineers</em> Podcast is also available on Substack, Spotify, Apple Podcasts, or on any of your favourite podcast app.</p><p></p><p><em>See you in the next episode!</em></p><p><em>Vitalii Lakusta</em></p>]]></content:encoded></item><item><title><![CDATA[Welcome to Map for Engineers Podcast]]></title><description><![CDATA[Welcome to Map for Engineers!]]></description><link>https://log.mapforengineers.com/p/welcome-to-map-for-engineers-podcast</link><guid isPermaLink="false">https://log.mapforengineers.com/p/welcome-to-map-for-engineers-podcast</guid><dc:creator><![CDATA[Vitalii Lakusta]]></dc:creator><pubDate>Sun, 15 Sep 2024 20:15:45 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/148930922/da2ff016d7308635cde9c9c0db03ae86.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>I am starting a Map for Engineers Podcast! I am in the process of organizing a first episode with my guest, which will be live-streamed on YouTube :) Will announce more details soon.</p>]]></content:encoded></item><item><title><![CDATA[Avoid groupthink]]></title><description><![CDATA[Thinking independently and applying your own critical thinking in discussions is crucial]]></description><link>https://log.mapforengineers.com/p/avoid-groupthink</link><guid isPermaLink="false">https://log.mapforengineers.com/p/avoid-groupthink</guid><dc:creator><![CDATA[Vitalii Lakusta]]></dc:creator><pubDate>Mon, 09 Sep 2024 18:20:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6ea3f9ba-a0ac-46d4-9e63-017225544740_360x202.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Wikipidea defines <strong><a href="https://en.wikipedia.org/wiki/Groupthink">groupthink</a></strong> as a &#8220;psychological phenomenon that occurs within a group of people in which the desire for harmony or conformity in the group results in an irrational or dysfunctional decision-making outcome&#8221;.</p><p>Have you ever had a moment where you were part of a critical and important meeting, only to see people nodding and agreeing with each other? I can only guess that you probably could <em>feel</em> at your core that something is wrong, but maybe it was hard to point the finger on it. Maybe you thought at that moment, &#8220;What&#8217;s really going on? Why are we not speaking out our minds and opinions boldly? Why aren&#8217;t we having discussions over <em>real issues </em>here?&#8221; Over time, a team might get used to this and it could become a team&#8217;s new <em>norm</em>, if the team is complacent and doesn&#8217;t actively do anything about it.</p><p>I believe it shouldn&#8217;t be this way. First of all, <strong>if you are a team lead, you are </strong><em><strong>responsible</strong></em><strong> for promoting a culture of critical thinking in the team</strong>. You can promote it by saying something like, &#8220;I might have blind spots here reasoning about this problem&#8230;please help me here with your original and fresh perspectives&#8221;, or, for example, &#8220;Let&#8217;s all think independently for a few seconds&#8230;we need all our brains on this problem and think actively. There are many possible solutions to this problem, and it&#8217;s not yet obvious which one to pick&#8230;&#8221; I could bring more examples, but I hope you get the idea.</p><p>But, I believe this can be promoted and supported by all team members. All team members can be leaders and can help its team to grow by showing an example. And if a team member wants a team to grow into applying more critical thinking and avoiding groupthink, this member can <em>lead</em> the way. As long as your team is aligned on its <a href="https://pactum.substack.com/p/values-principles-practices">values, principles, and practices</a>, everyone can lead and support the team to move in the right direction!</p><p>So, next time you go into that meeting&#8230;start from yourself first. Observe and reflect. Do I think critically and independently about the problem here? What do <em>I think</em> about this problem? How would I solve it? What are <em>my opinions</em> on this? </p><p>Applying critical thinking and thinking independently doesn&#8217;t equal arrogance. It&#8217;s a very good idea (I think) to <strong>build on top of each other ideas during a meeting, to synergize ideas</strong>. But while doing so, <em>think</em>. And listen actively at the same time.</p><p>So, go ahead - have good and respectful &#8220;<em>creative conflicts&#8221;</em> <em>and different ideas floating in the air in the next meeting </em>- it&#8217;s healthy - essential even - to build a strong team. Paradoxically, the diversity of ideas and critical thinking of all team members will help you to forge the <a href="https://www.thinkwithgoogle.com/intl/en-emea/future-of-marketing/management-and-culture/five-dynamics-effective-team/#:~:text=Psychological%20safety%3A%20This%20was%20the,incompetent%2C%20negative%2C%20or%20disruptive">psychological safety</a> in your team, which is <em>essential</em> to become a highly-performing team.</p><p>This post is meant for <em>reflection</em>. We all already know about things that I wrote above&#8230;but sometimes we forget about it and it&#8217;s good to remind ourselves and reflect again. So this post is a reminder and call for reflection - to myself, and maybe to you, about the importance of thinking independently and avoiding groupthink in your team. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://log.mapforengineers.com/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 Map for Engineers! </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>