<?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[The True Engineer]]></title><description><![CDATA[Monthly 5-minute essays from a senior engineer at Big Tech. Worth every minute, imho.]]></description><link>https://www.thetrueengineer.com</link><image><url>https://substackcdn.com/image/fetch/$s_!YWJH!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ed65264-b434-49a7-88b8-d13678355203_1024x1024.png</url><title>The True Engineer</title><link>https://www.thetrueengineer.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 11 Aug 2026 01:13:42 GMT</lastBuildDate><atom:link href="https://www.thetrueengineer.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Adlet Balzhanov]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[thetrueengineer@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[thetrueengineer@substack.com]]></itunes:email><itunes:name><![CDATA[Adlet Balzhanov]]></itunes:name></itunes:owner><itunes:author><![CDATA[Adlet Balzhanov]]></itunes:author><googleplay:owner><![CDATA[thetrueengineer@substack.com]]></googleplay:owner><googleplay:email><![CDATA[thetrueengineer@substack.com]]></googleplay:email><googleplay:author><![CDATA[Adlet Balzhanov]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[I’ve been living inside DynamoDB for a while]]></title><description><![CDATA[Most &#8220;DynamoDB knowledge&#8221; online is too generic/too long to help.]]></description><link>https://www.thetrueengineer.com/p/dynamodb-deep-dive</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/dynamodb-deep-dive</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Sun, 19 Jul 2026 07:00:39 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/85cba57c-0ddf-400e-836f-bc15693e151f_5500x5500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve been living inside DynamoDB for a while now, building and scaling a distributed system on AWS that has to survive couriers, customers, and agents all hammering it at once (at a scale of 10+ million orders per day). </p><p>Along the way, I collected a pile of notes with, let's say, my best practices. Half of them learned the easy way (reading docs), half learned the hard way (staring at a CloudWatch, Grafana at 2am wondering why one partition is on fire while the rest of the table is bored).</p><p>This is the cleaned-up version of my notes. Just the things I actually needed to know. I assume if you are reading this, you are already familiar with the basic DynamoDB concepts, so we will not stop there.</p><h2>eventual vs strong consistency</h2><p>By default, DynamoDB gives you eventual consistency. You write, and a moment later every replica has the update. Almost always fast enough, almost always correct enough, cheap too.</p><p>If &#8220;almost&#8221; isn&#8217;t good enough for you, there&#8217;s <strong>ConsistentRead: true</strong>. Add that to a <code>GetItem</code>, <code>Query</code>, or <code>Scan</code> (!! do not use <code>Scan</code> on production, it is bad, it is expensive), and DynamoDB routes your read through the primary replica that&#8217;s guaranteed to have every successful write applied. You get the freshest possible data.</p><p>Of course, it costs more to you. Literally, double the RCUs, and it can be slower because there&#8217;s coordination happening across nodes instead of just reading whatever replica is closest. And it&#8217;s not available everywhere. Base tables and LSIs support it, GSIs don&#8217;t. If your access pattern needs strong consistency, that alone might decide whether you reach for an LSI or a GSI.</p><p>My rule of thumb: default to eventual, and only reach for strong consistency when the alternative is a genuinely bad user experience.</p><h2>LSI vs GSI</h2><p>This is the one that trips people up the most, because on paper LSIs and GSIs look like siblings. In practice they behave very differently, and one of them is way less forgiving.</p><p><strong>LSI (Local Secondary Index)</strong></p><ul><li><p>Same partition key as the base table, different sort key. That&#8217;s the whole point. It lets you resort items within a <em>partition</em> to support another data access pattern.</p></li><li><p>Can be strongly consistent. GSIs can never do this, at least now (July 2026).</p></li><li><p>Must be created at table creation time. You cannot bolt one on later, and you cannot delete one once it exists. Get this wrong on day one and you&#8217;re rebuilding the table.</p></li><li><p>Shares the base table&#8217;s provisioned throughput. No separate capacity to manage, but also no isolation. A hot LSI can starve your base table.</p></li><li><p>Everything sharing a partition key (the &#8220;item collection&#8221;) is capped at 10GB total, across the base table and all its LSIs combined. This is easy to forget until you hit it.</p></li></ul><p><strong>GSI (Global Secondary Index)</strong></p><ul><li><p>Independent partition key and sort key. You can query across the entire table, not just within a partition.</p></li><li><p>Add or remove them whenever you want.</p></li><li><p>Own provisioned throughput, separate from the base table.</p></li><li><p>Eventually consistent only.</p></li></ul><p>So the real decision isn&#8217;t &#8220;which is more powerful&#8221;. GSIs almost always win on flexibility. If you&#8217;re not 100% sure, use a GSI. You can always add another one next sprint. You can&#8217;t undo an LSI.</p><h2>partition keys</h2><p>DynamoDB spreads your data across partitions based on the hash of your partition key. If your key distributes evenly, life is good. Throughput scales roughly linearly and nothing gets hot. If it doesn&#8217;t, one partition eats all the traffic while its neighbors sit idle, and you throttle even though your table-level metrics look fine.</p><p>So, always aim for a pattern where your partition key is random enough and spreads writes/reads across shards (e.g., based on a random user_id, order_id, or a combination of the two).</p><p>DynamoDB does have your back to some extent. Adaptive capacity automatically borrows RCUs/WCUs from cooler partitions to help a temporarily hot one. It&#8217;s a real safety net, not marketing copy. <strong>But adaptive capacity is for temporary hot spots.</strong> If one key is permanently the busiest thing in your system (think: one massive celebrity user), no amount of borrowing saves you. You need a synthetic key strategy, like sharding that one key into <code>KEY#0</code> through <code>KEY#9</code> and fanning reads back out on the query side.</p><h2>TTL</h2><p>Set an expiry timestamp attribute on an item, and DynamoDB will delete it for you once it passes. You don't need a cron job or a batch cleanup script. No cost of storing temporary state forever. If you've got Streams enabled, those TTL deletions still show up in the stream. Just note the retention is a fixed 24 hours, not configurable so you can react to expirations just like any other write. If you need to hold onto that history longer, Kinesis Data Streams for DynamoDB is a separate, opt-in option that lets you configure retention anywhere from 24 hours up to 365 days.</p><h2>the limits that will eventually find you</h2><p>A few numbers worth knowing:</p><ul><li><p><strong>400KB</strong> per item hard cap. There are no exceptions.</p></li><li><p><strong>~10GB per partition</strong>, and DynamoDB just keeps adding partitions as you grow. There is no upper bound on total table size.</p></li><li><p><strong>3,000 RCUs or 1,000 WCUs per partition per second</strong> (that&#8217;s reads of 4KB and writes of 1KB as the unit). Blow past this on a single partition and you&#8217;re throttled and retrying, regardless of how much capacity the table as a whole has.</p></li></ul><p>That last one is the sneaky part. Your table-level provisioned or on-demand capacity can look enormous, but if all your traffic funnels into one partition key, you&#8217;ll hit that per-partition ceiling long before you hit the table&#8217;s.</p><h2>what it actually costs</h2><p>Roughly (and prices drift per AWS region, so treat this as a mental model, not an invoice):</p><ul><li><p>~$1 per million WCUs</p></li><li><p>~$0.25 per million RCUs</p></li><li><p>~$0.25/GB-month for storage</p></li></ul><p>Reads are cheap, writes are the expensive lever, and storage is basically a rounding error unless you&#8217;re hoarding data you should&#8217;ve TTL&#8217;d away.</p><h2>single-table design</h2><p>This is the part that feels wrong the first time you do it and then feels obvious forever after. Instead of one table per entity type, you throw everything users, orders, conversations, whatever into one table, and you model your access patterns through the keys themselves.</p><p>The pattern that&#8217;s served me well:</p><ul><li><p>Use boring, generic attribute names: <code>PK</code>, <code>SK</code>, <code>GSI1PK</code>, <code>GSI1SK </code>etc. The table shouldn&#8217;t know or care that it&#8217;s storing &#8220;orders&#8221;. The semantics live in the <em>values</em>, not the schema.</p></li><li><p>Encode meaning into the key strings themselves. Something like: <br><strong>PK = U#&lt;USER_ID&gt;</strong><br><strong>SK = C#&lt;CHAT_ID&gt;</strong> assuming that chat_id is a UUIDv7. Because UUIDv7 is time-ordered, sorting by chat_id gives us chronological ordering by creation time.<br><strong>GSI1PK = O#&lt;USER_ID&gt;#&lt;ORDER_ID&gt;</strong></p></li></ul><ul><li><p>Now a single table can answer &#8220;give me this user&#8217;s chats&#8221; and &#8220;give me this order&#8217;s chats&#8221; without needing separate tables or a join because there is no join in DynamoDB, and pretending otherwise is how people end up fighting the database instead of using it.</p></li><li><p>Lean on sort-key ordering. The sort key isn&#8217;t just a filter. It physically determines how items are laid out within a partition. That means clever SK design gives you cheap, efficient pagination almost for free, instead of bolting on offset-based pagination that gets slower the deeper you go.</p></li></ul><p>The mental shift is: stop designing your table around your entities, and start designing it around your queries/access patterns. Write down every access pattern first. The keys fall out of that list, not the other way around.</p><h2>summary</h2><p>Default to eventual consistency, reach for strong only when staleness actually breaks something. Use GSIs unless you specifically need LSI&#8217;s strong-consistency guarantee, because LSIs are permanent decisions. Design your partition key for even distribution before you design anything else. Let Streams and TTL do the event-driven and cleanup work for you instead of writing it yourself. And when you&#8217;re modeling the table, design around your access patterns, not your entities.</p><p>Nothing here is exotic. It&#8217;s just the stuff that only really sinks in after your first throttling incident.</p><p>If this was useful, send it to someone prepping for a system design interview or learning databases. Drop your own rules in the comments. Curious what I&#8217;m missing.</p><p><span>Thanks for reading,</span><br><a href="https://www.linkedin.com/in/adlet-balzhanov/">Adlet Balzhanov</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: a newsletter, helping 4,000+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Uber and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[10 system design rules I always come back to]]></title><description><![CDATA[These took years to learn. 5 minutes to read]]></description><link>https://www.thetrueengineer.com/p/10-system-design-rules-i-always-come</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/10-system-design-rules-i-always-come</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Wed, 24 Jun 2026 12:09:15 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c76c112e-1cf5-4abc-bcc8-782697652679_5184x3456.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I've been compiling these system design interview rules for years. Friends found them useful. Figured it was time to share them properly.</p><p><strong>Rule 1</strong> &#8211; System design is all tradeoffs. There&#8217;s no perfect choice, just better or worse ones.</p><p><strong>Rule 2</strong> &#8211; Good design starts with the right questions:</p><ul><li><p>Read-heavy system or write-heavy?</p></li><li><p>What guarantees do we actually need? (e.g. exactly-once execution within 24h?)</p></li><li><p>How fresh does the data need to be? Is replication lag acceptable?</p></li><li><p>Steady traffic or bursty?</p></li><li><p>What&#8217;s the recovery expectation when things go wrong?</p></li><li><p>Do we need to keep the data forever?</p></li></ul><p><strong>Rule 3</strong> &#8211; Environment matters. Before your interview, ask your recruiter which whiteboard tool they are using and spend time in it beforehand. Fumbling with the UI is unnecessary cognitive load on top of an already hard problem.</p><p><strong>Rule 4</strong> &#8211; Before listing your non-functional requirements, ask about scale. It&#8217;ll shape everything.</p><p><strong>Rule 5</strong> &#8211; When thinking about storage, always walk through the spectrum where to store the data: server in-memory &#8594; Redis &#8594; persistent DB &#8594; blob storage (S3). Run the numbers based on your non-functional requirements list.</p><p><strong>Rule 6</strong> &#8211; Durability isn&#8217;t just &#8220;3 replicas.&#8221; You also need to verify each copy is actually correct (e.g. checksums with SHA-256).</p><p><strong>Rule 7</strong> &#8211; Start simple. OpenAI scaled ChatGPT to 800M monthly users on Postgres: 1 primary, 50 read replicas. The moment you cross a network boundary, latency gets real, partial failures become possible, retries get dangerous.</p><p><strong>Rule 8</strong> &#8211; Don&#8217;t ignore the client side. Batching, chunking, compression. This stuff meaningfully cuts backend load and improves scalability.</p><p><strong>Rule 9</strong> &#8211; Some processes can't be atomic. Payments are the clearest example. Authorization, capture, settlement, refund, dispute. Each step can fail independently and may need retries or compensation. That&#8217;s the Saga pattern and why tools like Temporal exist.</p><p><strong>Rule 10</strong> &#8211; Read path: optimize for speed. Write path: optimize for correctness.</p><p>If this was useful, send it to someone prepping for a system design interview. Drop your own rules in the comments. Curious what I&#8217;m missing.</p><p><span>Thanks for reading,</span><br><a href="https://www.linkedin.com/in/adlet-balzhanov/">Adlet Balzhanov</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: weekly newsletter, helping 3,800+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Microsoft and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[The Moving Floor]]></title><description><![CDATA[A few years ago, I watched an engineer become a Director of Engineering at a company worth over $10 billion before turning 27]]></description><link>https://www.thetrueengineer.com/p/the-moving-floor</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/the-moving-floor</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Thu, 14 May 2026 12:41:37 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c87e29b9-ad64-47cd-8f01-34cfb3799a0b_3888x5491.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most engineers think careers are ladders.</p><p>You start at the bottom, improve your skills, work harder than everyone else, and slowly climb upward through merit. The assumption underneath most career advice is: become exceptional enough, and the system will eventually recognize you.</p><p>But in technology, careers are often shaped less by individual talent than by the speed of the system around you.</p><p>A growing company is not a ladder.</p><p>It is an escalator.</p><p>A few years ago, I watched an engineer become a Director of Engineering at a company worth over $10 billion before turning 27.</p><div><hr></div><p>This week&#8217;s newsletter is sponsored by one of the fastest-growing GenAI video companies <strong>Higgsfield AI</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7-Ab!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373538a3-206c-4601-84ba-cd2f11a56b87_1400x350.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7-Ab!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373538a3-206c-4601-84ba-cd2f11a56b87_1400x350.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7-Ab!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373538a3-206c-4601-84ba-cd2f11a56b87_1400x350.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7-Ab!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373538a3-206c-4601-84ba-cd2f11a56b87_1400x350.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7-Ab!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373538a3-206c-4601-84ba-cd2f11a56b87_1400x350.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7-Ab!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373538a3-206c-4601-84ba-cd2f11a56b87_1400x350.jpeg" width="1400" height="350" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/373538a3-206c-4601-84ba-cd2f11a56b87_1400x350.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:350,&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;: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_!7-Ab!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373538a3-206c-4601-84ba-cd2f11a56b87_1400x350.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7-Ab!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373538a3-206c-4601-84ba-cd2f11a56b87_1400x350.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7-Ab!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373538a3-206c-4601-84ba-cd2f11a56b87_1400x350.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7-Ab!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373538a3-206c-4601-84ba-cd2f11a56b87_1400x350.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>While coding agents transformed software engineering, Higgsfield is doing the same for filmmaking, marketing, and content production with <strong>Supercomputer</strong> &#8212; a long-running creative agent capable of generating entire campaigns, films, and viral media systems autonomously.</p><p>The scale already looks unreal:</p><ul><li><p>$300M annualized revenue run rate</p></li><li><p>24M users across 240+ countries</p></li><li><p>750M+ videos and images generated</p></li><li><p>6M generations per day</p></li><li><p>5B+ social reach through (Instagram: <strong>higgsfield.ai</strong>)</p></li><li><p>Fortune 500 customers</p></li><li><p>$5M+ paid directly to creators</p></li></ul><p>Higgsfield&#8217;s proprietary harness combines persistent memory, multi-agent orchestration, parallel execution, co-located GPU infrastructure, and frontier video models including Veo, Kling, GPT Image 2, Seedance 2.0, and their own Soul Cinematic stack.</p><p>The proof is already here: <strong>an 80-minute AI-generated feature film premiering at Cannes</strong>.</p><p>They&#8217;re hiring engineers, researchers, designers, and operators to build the frontier of creative AI:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://jobs.ashbyhq.com/higgsfieldai&quot;,&quot;text&quot;:&quot;Higgsfield Careers&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://jobs.ashbyhq.com/higgsfieldai"><span>Higgsfield Careers</span></a></p><p></p><p>Thanks to Higgsfield AI for sponsoring, let&#8217;s get back to this week&#8217;s thought! </p><div><hr></div><p>Well,</p><p>A few years ago, I watched an engineer become a Director of Engineering at a company worth over $10 billion before turning 27.</p><p>They were good, smart, reliable, technically sharp. But not extraordinary in the way the industry romanticizes. They were not publishing breakthrough papers or reinventing distributed systems. Nobody would have described them as the best engineer in the building.</p><p>They joined at the right moment.</p><p>When they arrived, the company was small enough that everyone still fit into a single all-hands meeting. Four years later, the company had thousands of employees, multiple offices, and management layers that did not exist when they joined.</p><p>The company needed leaders faster than the market could produce them.</p><p>So it promoted the people who were already there.</p><p>At the same time, I knew engineers at large prestigious companies who were to be honest far more capable. People with frightening technical depth. Engineers who could debug impossible failures, reason across enormous distributed systems, and make hard problems look routine.</p><p>Many of them barely moved. I mean, of course, they became Senior/Staff engineers or Engineering Managers but &#8230;</p><p>This sounds unfair until you understand the mechanism.</p><p>In slow-growing companies, promotions become scarce resources. For one person to rise, another often has to move aside. Managers defend headcount because headcount becomes status, influence, and survival.</p><p>The organization stops expanding outward.</p><p>So ambition turns inward.</p><p>That is why Big Tech companies become political even when the people inside them are reasonable. Scarcity changes behavior. When organizations stop creating opportunity organically, <strong>employees begin competing over the existing supply instead</strong>.</p><p>Over time, the company starts rewarding people who are most legible to the system rather than most useful to it. Engineers optimize for visibility instead of velocity. Meetings become more important. Narrative becomes more important. Over-alignment becomes more important. Keeping every cross team in the loop becomes more important.</p><p>No no no &#8230; <strong>People there are not vicious by design or irrational.</strong> </p><p>Just growth changes the geometry entirely.</p><p>When a company doubles every year, bureaucracy cannot stabilize fast enough to defend itself. Entire teams must be created before experienced managers exist to run them. Leadership gaps appear everywhere simultaneously. The organization becomes structurally incapable of preserving old hierarchies because reality is changing faster than hierarchy can adapt.</p><p>This creates one of the strangest dynamics in technology:</p><p>Fast-growing companies often accelerate careers faster than competence itself develops.</p><p>Engineers dislike admitting this because engineering culture is deeply attached to meritocracy. We want outcomes to feel proportional to skill. Write better code, think more clearly, make better decisions, and eventually the market should reward you fairly.</p><p>Sometimes it does.</p><p>But markets reward leverage more consistently than virtue.</p><p>And growth is leverage.</p><p>The difference is that high-growth environments continuously manufacture new surface area for ambition.</p><p>Big corp environments manufacture competition over existing surface area.</p><p>Most people in technology underestimate how much this single variable shapes careers. They optimize for prestige, compensation, or technical purity while ignoring whether the system around them is expanding fast enough to create opportunity faster than bureaucracy can contain it.</p><p>This does not mean growth is everything. Hypergrowth also creates inflated titles, fragile leaders, and people who mistake organizational momentum for personal greatness. Some only discover this after the escalator stops moving.</p><p>But even this reinforces the same principle.</p><p>Systems shape outcomes more powerfully than individuals want to admit.</p><p>The most important question in your career may not be:</p><p>&#8220;Am I working hard enough?&#8221;</p><p>It may be:</p><p>&#8220;Is the floor beneath me moving?&#8221;</p><p>If you found this helpful, <strong>please like or share it with a friend and consider subscribing if you haven&#8217;t already</strong>.</p><p>Thanks for reading,<br><a href="https://www.linkedin.com/in/adlet-balzhanov/">Adlet Balzhanov</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: weekly newsletter, helping 3,500+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Microsoft and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Takeaways from “On Writing Well”]]></title><description><![CDATA[I used to think good writing was &#8220;nice to have&#8221; for engineers]]></description><link>https://www.thetrueengineer.com/p/takeaways-from-on-writing-well</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/takeaways-from-on-writing-well</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Tue, 07 Apr 2026 13:00:26 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/414b08e8-65ef-432c-81da-aa66c7a9069b_960x1280.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Engineers like to think of code as something you refine. You remove what isn&#8217;t needed, simplify what is, and try to leave it in a state where the next person doesn&#8217;t have to struggle to understand it.</p><p>And then we sit down to write.</p><p>The document fills up quickly. A few hedges, a few qualifiers, a sentence that sounds professional but doesn&#8217;t quite say anything. You&#8217;ve probably written something like:</p><blockquote><p>We might want to consider potentially optimizing the query performance in some cases.</p></blockquote><p>What it usually means is:</p><blockquote><p>This query is slow.</p></blockquote><p>Somewhere along the way, the point gets diluted because writing doesn&#8217;t feel as strict as code. It should. The same instincts apply.</p><p>Zinsser&#8217;s argument in <em>On Writing Well</em> is straightforward: most writing is cluttered. It carries more than it needs to. Words accumulate the way unused code does. Nothing breaks, but everything becomes harder to follow.</p><p>The fix is well known to engineers. Remove what doesn&#8217;t contribute.</p><p>You can see it in small edits:</p><blockquote><p>The system is, in a sense, experiencing a bit of a latency issue.</p></blockquote><p>becomes</p><blockquote><p>The system is experiencing latency.</p></blockquote><p>Nothing important was lost. It just stopped making the reader work.</p><p>But editing only gets you so far. Most of the time, unclear writing points to unclear thinking. The page is just where that shows up.</p><p>This is especially obvious in design docs. You&#8217;ll read an explanation that sounds reasonable, but doesn&#8217;t quite hold your attention:</p><blockquote><p>This solution provides better scalability and flexibility for future use cases.</p></blockquote><p>It&#8217;s hard to argue with, but it&#8217;s also hard to evaluate.</p><p>Compare that to:</p><blockquote><p>We chose this because write throughput is our bottleneck, and this reduces write amplification by 40%.</p></blockquote><p>Now the reader has something concrete to react to. The difference is clarity of thought.</p><p>One habit that helps more than expected is reading your work out loud. On the screen, a sentence can look fine. When you hear it, the problems stand out. You notice where it drags or repeats itself, where it feels longer than it needs to be. If you run out of breath halfway through, the sentence is probably doing too much.</p><p>It also exposes tone. Sentences that sounded polished can come across as distant or mechanical. Good writing doesn&#8217;t need to sound casual, but it should sound like something a person could actually say.</p><p>Precision helps here. Weak verbs tend to hide what&#8217;s really happening:</p><blockquote><p>The script quickly ran through the data and made improvements.</p></blockquote><p>That leaves a lot open.</p><blockquote><p>The script processed the data and reduced errors by 18%.</p></blockquote><p>Now the action is clear, and the outcome is measurable.</p><p>You don&#8217;t need to invent a new style each time you write. Just like in code, there are patterns that already work. If you&#8217;ve read something that held your attention, it&#8217;s worth looking at how it was put together, how it moves from one idea to the next, how it avoids losing momentum.</p><p>What matters more is resisting the drift toward vague, overly careful language. It shows up most clearly in post-mortems:</p><blockquote><p>An issue was encountered where the system experienced a degradation in performance.</p></blockquote><p>It&#8217;s technically fine, but it keeps the reader at a distance.</p><blockquote><p>The system slowed down.</p></blockquote><p>Shorter, but also clearer and more direct.</p><p><strong>Vague writing is rarely accidental. It&#8217;s often a way of avoiding a clear statement when the clear statement would be uncomfortable.</strong></p><p>That&#8217;s really the thread running through all of this. Say what happened. Say what you mean. Remove what doesn&#8217;t help.</p><p>Good code does this without drawing attention to itself. You read it and understand the system without effort. Good writing works the same way. When it&#8217;s doing its job, you don&#8217;t notice the sentences. You follow the idea.</p><p>The reader can always tell when the writer did the hard thinking, and when they didn&#8217;t.</p><p>If you already care about clean code, the instinct is there.</p><p>Apply it to your writing.</p><p>If you found this helpful, <strong>please like or share it with a friend and consider subscribing if you haven&#8217;t already</strong>.</p><p>Thanks for reading,<br><a href="https://www.linkedin.com/in/adlet-balzhanov/">Adlet Balzhanov</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: weekly newsletter, helping 3,800+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Microsoft and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[SQL vs NoSQL: How to Answer This in 2026]]></title><description><![CDATA[Modern databases are all good enough.]]></description><link>https://www.thetrueengineer.com/p/sql-vs-nosql-how-to-answer-this-interview</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/sql-vs-nosql-how-to-answer-this-interview</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Wed, 25 Feb 2026 06:01:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1fe56b96-a9fd-46a5-840a-83ba15ecd634_4861x3218.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Modern databases are all good enough. If your system is falling over, <strong>it is almost never because Postgres is too weak or Mongo cannot keep up.</strong></p><p>When the SQL vs. NoSQL question comes up, that&#8217;s how you avoid sounding like you&#8217;re quoting a 2015 blog post.</p><p>The SQL vs NoSQL debate still shows up in interviews like it is some deep philosophical divide. It is not. Most mainstream databases today all can handle serious traffic, flexible schemas, transactions, replication, all of it. The hard part is living with the consequences of your choice for the next five years.</p><p>I have watched teams blame &#8220;scale&#8221; for issues that were just bad access patterns. Full table scans in hot paths. No indexes on fields that get hammered every second. Migrations run in the middle of peak traffic because nobody thought through locking behavior. Then someone says maybe we need a new database.</p><p>Swapping the engine does not magically fix weak thinking. It just gives you a new set of sharp edges.</p><p>The better answers start with workload. What are you actually doing every day? Reading rows by primary key with strict consistency because money is involved? Relational databases are very good at that. Writing massive append-only events where a little staleness does not hurt anyone? There are tools that lean into that pattern. Running complex joins across entities with evolving business logic? SQL is still ridiculously effective.</p><p>The difference is not in the tool list. It is in whether you can explain the failure modes without hand-waving.</p><p>What happens when replication lag spikes and your checkout flow reads stale data? What happens when a schema migration needs to backfill hundreds of millions of rows and your I/O graph looks like a heart attack? What happens when the one engineer who understands your distributed consensus setup leaves the company?</p><p>I have seen small teams pick distributed databases because they want to look &#8220;future proof.&#8221; What they get instead is more moving parts, more cognitive load, and longer onboarding. Engineers avoid touching the data layer because it feels risky. Features take longer. Roadmaps stretch. The database did not limit them. The complexity did.</p><p>On the other hand, I have seen teams run a single relational database far longer than outsiders thought reasonable. They invested in modeling. They added the right indexes. They understood isolation levels and locking. When they finally hit real limits, it was obvious and measurable, not hypothetical. That is when adding something specialized made sense.</p><p>Most scaling problems are modeling problems wearing a database costume.</p><p>Being boring with infrastructure is often the grown-up move. If your biggest uncertainty is product direction, you do not need distributed consensus in your life. You need clarity. Every extra datastore is another thing that can wake someone up at 2 a.m. and another system a new hire has to mentally parse.</p><p>When senior engineers ask about SQL vs NoSQL, they are not testing trivia. They are checking whether you understand tradeoffs in a way that connects to business risk and team capacity. They want to hear that you know what breaks, who gets paged, and how much that pain costs.</p><p>Modern databases are all good enough. The real differentiator is whether your thinking is sharp enough to match the workload and honest enough to admit when simple is the right call.</p><p>Show that you can think beyond the &#8220;NoSQL for scale, SQL for transactions&#8221; mindset.</p><p>If you found this helpful, <strong>please like or share it with a friend and consider subscribing if you haven&#8217;t already</strong>.</p><p>Thanks for reading,<br><a href="https://www.linkedin.com/in/adlet-balzhanov/">Adlet Balzhanov</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: weekly newsletter, helping 3,500+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Microsoft and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[I Wasted My First Years in Tech on the Wrong Things]]></title><description><![CDATA[I would have been forever grateful if someone gave me this advice earlier]]></description><link>https://www.thetrueengineer.com/p/4-things-i-wish-i-knew-starting-a</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/4-things-i-wish-i-knew-starting-a</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Mon, 12 Jan 2026 05:00:29 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9077da31-12d3-4173-85aa-e3b872947937_4752x3168.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I would have been forever grateful if someone gave me this advice earlier.</p><h3><strong>The "Now What?" trap</strong></h3><p>Many engineers very early in their careers think they should become Engineering Managers at any cost. They take on any task or do any favor just to get this role. Meanwhile, along the way, they don&#8217;t even think about questions like: &#8220;<em>What is a day in the life of an Engineering Manager like?</em>&#8221;, &#8220;<em>Am I okay with having eight different 30-minute meetings each day?</em>&#8221;, &#8220;<em>Do I prefer focusing more on technology or on people?</em>&#8221;</p><p>Moving into an Engineering Manager role from an individual contributor position is not a promotion, believe me, it&#8217;s a career change. Whether you get it at 25, 30, or 35 years old doesn&#8217;t matter. You still have a career ahead of you until 60, let&#8217;s say.</p><h3><strong>Invest in Life Outside of Work</strong></h3><p>Fulfillment comes from relationships and community, not just career progression. I would apply the <strong>same effort to life progression</strong> (hobbies, friendships, romantic relationships etc) as professional roadmaps and goals. I would definitely summarize this by saying that getting along with someone at a younger age is much easier than later in life.</p><h3><strong>Ride the "Escalator" of High Growth</strong></h3><p>Prefer roles in fast growing companies where the &#8220;ladder&#8221; acts like an escalator. Even if you do the same work, the escalator will carry you upward and lead to promotions and salary increases. Because the company is growing, it needs to create new roles and promote people. You don&#8217;t need to climb the ladder by investing heavily in politics.</p><h3><strong>Don&#8217;t Be the Best, Be the Only</strong></h3><p>Many engineers focus too deeply on a single programming language/framework/technology memorizing documentation and following every tweet related to that specific skill. Yes, if you go deep enough, even down to the internals, you can become highly valuable in that area. However, I would always choose to be a unique combination of abilities. Say, 30% data structures, 40% invested in getting to know the people in your organization, 20% database internals, 10% writing skills, and so on.</p><div><hr></div><p>In short, early career decisions don&#8217;t need to be rushed or optimized for titles alone. Treat your career as a long game: choose growth environments, build a life outside of work, and be intentional about what kind of work actually energizes you.</p><p>If you found this helpful, <strong>please like or share it with a friend and consider subscribing if you haven&#8217;t already</strong>.</p><p>Thanks for reading,<br><a href="https://www.linkedin.com/in/adlet-balzhanov/">Adlet Balzhanov</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: weekly newsletter, helping 3,000+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Microsoft and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Sorry if this is a dumb question, but…]]></title><description><![CDATA[You&#8217;ve probably heard it in a meeting: &#8220;Sorry if this is a dumb question, but&#8230;&#8221;]]></description><link>https://www.thetrueengineer.com/p/for-those-who-work-full-time-in-a</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/for-those-who-work-full-time-in-a</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Sun, 30 Nov 2025 15:03:28 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1553c33f-56ca-4436-ba94-3383589c6e97_911x669.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You&#8217;ve probably heard it in a meeting: <em>&#8220;Sorry if this is a dumb question, but&#8230;&#8221;</em> Most people treat that phrase like a social apology. Something you say to soften the risk of speaking up. But if you know what you&#8217;re doing, it&#8217;s actually a power move.</p><p>Prefacing with &#8220;<em>This might be a dumb question&#8230;</em>&#8221;, it immediately disarms the room. <strong>The person responding to you gets a clean ego boost,</strong> a chance to explain something they know well. People love that. Far from thinking you&#8217;re dumb, they walk away feeling a little smarter for having answered you. You get the answer, they get the high. That is pure upside.</p><p>Plenty of times I&#8217;ve seen this play out. The person asking the so-called &#8220;rookie&#8221; question never loses status. The trick works because it satisfies the quiet tension that lives in most rooms. <strong>People want to help, but they also want to feel important</strong>. Give them the opportunity to feel both.</p><p>There&#8217;s a pattern I&#8217;ve noticed across senior engineers, sharp operators, and good PMs: the best ones ask questions that sound simple. They do it with full awareness because they know exactly how it lands.</p><p>Some people think asking questions is a vulnerability. It isn&#8217;t. It is an invitation for others to perform intelligence in front of you. That is how you build social capital. You are giving someone a small, controlled stage. You are saying, without saying it:<strong> go ahead, teach me something.</strong> Most people cannot resist that offer.</p><p>The language matters. When you frame it as <em>&#8220;Sorry if this is a dumb/rookie question, but&#8230;&#8221;</em> question, you trigger a protective reflex. The responder will almost always correct you: &#8220;<em>It&#8217;s not a dumb question</em>&#8230;&#8221; What they&#8217;re really saying is, <em>you&#8217;re fine I got this.</em> They feel helpful and competent. And now they like you a little more. You made them feel good in front of other smart people. Well, that&#8217;s a career skill.</p><p>Tech is full of people who are allergic to ego on the surface but still desperately want to feel useful and sharp. Feed that desire in a way that costs you nothing. You do not look smaller for doing it.</p><p>The risk of not asking is higher than the risk of asking. The right one, framed with humility, can make the person next to you feel brilliant. And that&#8217;s the kind of person people want in the room again.</p><p>So the next time you hesitate, say it anyway: &#8220;<em>Sorry if this is a dumb/rookie question&#8230;</em>&#8221; Watch what happens.</p><p><span>Thanks for reading,</span><br><a href="https://www.linkedin.com/in/adlet-balzhanov/">Adlet Balzhanov</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: a newsletter, helping 4,000+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Uber and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[3 ways out of tech burnout]]></title><description><![CDATA[the plateau of seniority]]></description><link>https://www.thetrueengineer.com/p/3-proven-ways-to-exit-the-tech-burnout</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/3-proven-ways-to-exit-the-tech-burnout</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Mon, 10 Nov 2025 03:00:28 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1bba7ebd-f56d-4a88-8a30-da1003794b14_3687x5530.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4>The Plateau of Seniority</h4><p>In many tech companies, &#8220;Senior Engineer&#8221; is almost a dead-end title. The problem is that after you hit that level, there may be no obvious path ahead or minimal reward (e.g. 10% salary increase, 100% more responsibility for Staff+). More responsibility lands on your desk but the salary bump looks like a rounding error. </p><p>Over time a routine sets in. You can still build features and fix bugs, but the creative excitement is gone.  This isn&#8217;t classic burnout, it&#8217;s boredom. If burnout is an all-nighter run on empty, boredom is driving a familiar road you&#8217;ve traveled a thousand times.</p><h4>Seek New Challenges (New Companies)</h4><p>So what do you do? One obvious move is to inject novelty into your routine by interviewing at companies <strong>you think you can&#8217;t get into</strong>. FAANG, a top trading, whatever feels scary. Doing that forces you to refresh and extend your skills, often faster than any project at your day job. Even failing is fuel. You come back sharper and hungrier. Suddenly that curveball design question reminds you why coding was fun, and a few intense prep sessions can make even routine tasks feel like puzzles again.</p><h4>Change Your Role</h4><p>Another tactic is to side-step the routine instead of head-butting it. Talk to your boss about trying something new. For example, move into a engineering manager role. Then your focus shifts from writing code to coordinating teams, and that fresh viewpoint can feel unexpectedly alive. You could even try a product or dev-rel role. Those switches remind you that the industry is bigger than one codebase.</p><h4>Start a Side Project</h4><p>Lastly, engineer your own spark outside 9-to-5 hours. Start a side project, a blog, an app, even an open-source library. Yes, it&#8217;s extra work, but it&#8217;s on your terms. When you code for something you care about, the job&#8217;s drudgery turns back into discovery, and many devs report that weekend projects or blogging rekindle the craft inside them. These passion projects often change how you see the day job. Suddenly those office tasks fit into a bigger picture you care about. At the very least, you&#8217;ll pick up new skills and meet interesting people. Often both. While remembering why you loved building things in the first place.</p><h4>The Bottom Line</h4><p>All of this boils down to one insight. Tech careers aren&#8217;t conveyor belts. Nobody is going to gift you a promotion just because you&#8217;ve been patient. <strong>If you&#8217;re stale, it&#8217;s on you to inject change</strong>, the industry won&#8217;t do it for you.</p><p>If you liked this post, hit the <em><strong>like</strong></em> button. It&#8217;s the best feedback I could get. Share other ways in the comments to escape the tech burnout trap.</p><p>Thanks for reading,<br>Adlet</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: weekly newsletter, helping 3,000+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Microsoft and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p>]]></content:encoded></item><item><title><![CDATA[the career-boosting lunches]]></title><description><![CDATA[this isn&#8217;t about pretending to be a social butterfly]]></description><link>https://www.thetrueengineer.com/p/the-career-boosting-lunches</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/the-career-boosting-lunches</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Tue, 30 Sep 2025 23:01:17 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f783c67a-b161-4075-aafe-af07597c4c84_800x372.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In my experience, inviting different colleagues to lunch is more than being nice. It&#8217;s a deliberate career strategy. Engineers who share lunch with peers across teams end up on more projects than those who eat alone. A lunchtime conversation can turn you into a hub of knowledge, not a silo of effort. People who organize such casual meet-ups feel more engaged at work.</p><p>I&#8217;ve seen that what sounds casual often has more payoff than a formal presentation. Eating with people from other departments shows you what is really happening inside the company. <strong>New projects, hidden problems, and the stories that never reach Slack.</strong> During lunch I have observed that people rarely share the same metrics they track at work. That knowledge is currency. Over time, you become the person who connects the dots between groups, and people notice that.</p><p>This isn&#8217;t about pretending to be a social butterfly. Shared meals build trust over time. A few questions about someone&#8217;s weekend can turn into offers to help or collaborate months later. Leadership often reaches for names they already know when a new initiative or role opens up. If you&#8217;ve been in those lunchtime conversations, you&#8217;re on the shortlist. How? <strong>By being present in others lives.</strong></p><p>Over the years, I&#8217;ve observed a pattern, people who bring others into the loop are often the ones with looped-in opportunities. You might share a lunch taco with someone and later find yourselves helping each other fix a bug or pitching in on a cross-team sprint. These small gestures, grabbing sandwich with someone from marketing or ops, make you visible in ways formal updates never do. </p><p>There&#8217;s a deeper lesson &#8212; real connections grow from genuine curiosity. When you ask questions at lunch, you learn what drives your peers, not what their job title is. Those conversations often turn into the trust currency of any org. People remember who asked about their weekend or who offered a solution during crunch week. By doing this habitually, you become known as someone who understands more than your own code. You become that connector with a clear line of sight across the org chart.</p><p>The writing on the wall is clear, careers don&#8217;t grow in isolation. They grow when you build bridges. Sometimes over a plate of sushi at midday. And that small social investment delivers a huge ROI. Informal lunches might feel like a break, but they can deliver your next big break.</p><p>Take the pattern to its logical conclusion. Schedule a lunch with someone you do not yet know, one day a month. Treat it as an experiment in curiosity. The payoff is a network of allies who will remember the gesture long after you leave that table.</p><p>If you liked this post, hit the <em><strong>like</strong></em> button. It&#8217;s the best feedback I could get.</p><p>Until next time,<br>Adlet</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: weekly newsletter, helping 3,000+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Microsoft and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[confidence in tech > talent in tech]]></title><description><![CDATA[I&#8217;ve noticed that the confident engineer with average skills performs better]]></description><link>https://www.thetrueengineer.com/p/confidence-in-tech-talent-in-tech</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/confidence-in-tech-talent-in-tech</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Wed, 17 Sep 2025 05:02:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!u9Vu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faab07002-3a71-472d-b51f-924bcb475f52_741x494.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>I&#8217;ve noticed that the confident engineer with average skills performs better.</strong> This isn&#8217;t a cheesy "believe in yourself" saying. It&#8217;s about how people do tech work in companies that make software.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u9Vu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faab07002-3a71-472d-b51f-924bcb475f52_741x494.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u9Vu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faab07002-3a71-472d-b51f-924bcb475f52_741x494.png 424w, https://substackcdn.com/image/fetch/$s_!u9Vu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faab07002-3a71-472d-b51f-924bcb475f52_741x494.png 848w, https://substackcdn.com/image/fetch/$s_!u9Vu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faab07002-3a71-472d-b51f-924bcb475f52_741x494.png 1272w, https://substackcdn.com/image/fetch/$s_!u9Vu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faab07002-3a71-472d-b51f-924bcb475f52_741x494.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u9Vu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faab07002-3a71-472d-b51f-924bcb475f52_741x494.png" width="728" height="485.3333333333333" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aab07002-3a71-472d-b51f-924bcb475f52_741x494.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:494,&quot;width&quot;:741,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:598701,&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://www.thetrueengineer.com/i/173544394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faab07002-3a71-472d-b51f-924bcb475f52_741x494.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!u9Vu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faab07002-3a71-472d-b51f-924bcb475f52_741x494.png 424w, https://substackcdn.com/image/fetch/$s_!u9Vu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faab07002-3a71-472d-b51f-924bcb475f52_741x494.png 848w, https://substackcdn.com/image/fetch/$s_!u9Vu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faab07002-3a71-472d-b51f-924bcb475f52_741x494.png 1272w, https://substackcdn.com/image/fetch/$s_!u9Vu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faab07002-3a71-472d-b51f-924bcb475f52_741x494.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 aria-hidden="true" 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><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I've watched this play out across dozens of teams. The engineer who asks questions first in meetings, or says "I can handle it", usually gets promoted. They become the person other engineers turn to when something breaks.</p><p>Meanwhile, the super smart engineer stays quiet in meetings. They think about problems and spot three edge cases that might go wrong. They're right about the edge cases. But by the time they formulated concerns, the confident engineer has already started coding.</p><p>This happens because confidence signals competence in ways that actual competence doesn't. When your staff engineer says "I'll check it" right away, it shows they can handle it, even if they are googling all things up.  When your smart junior says "I&#8217;m not sure if this is right", it sounds unsure, even if their solution is actually good.</p><p>The confident engineer understands a key: being 80% right with 95% confidence beats being 95% right with 80% confidence. They make architectural choices that move the team forward, even if it's not perfect. They understand that in most cases, the cost of delay exceeds the cost of imperfection.</p><p>I've seen this dynamic destroy careers. The engineer can solve any coding puzzle. But they take three days to review a pull request because they think about every possible improvement. The senior developer writes careful, great code. But they never try to lead because they don&#8217;t feel ready. The architect spots every problem in every design. But they have trouble suggesting fixes because they are never happy with their own ideas.</p><p>The tragedy isn't that these engineers lack talent. <strong>It's that they've optimized for being right instead of being effective.</strong> They've confused perfectionism with professionalism.</p><p>The confident engineer has learned a different lesson. They understand that most technical solutions are reversible. Most code can be refactored, and most mistakes can be fixed. They know that making progress is more important than being perfect. This is true especially when things change every week and the product can change every few months.</p><p><strong>This doesn't mean confidence excuses incompetence.</strong> The engineer who confidently ships broken code won't last long. But there's a sweet spot where average skills combined with high confidence creates outsized impact. These engineers keep the team together. They say "yes, we can build that" while others explain why it is hard.</p><p>The market rewards this combination because shipping is the ultimate skill. Companies don't pay engineers to write perfect code.<strong> </strong>They pay them to solve problems, make decisions, and move products forward. The engineer who can do this confidently, even imperfectly, creates more value than the engineer who can do it perfectly but slowly.</p><p>I've learned to hire for this quality as much as technical skill. The knowledge gap closes with time and mentorship. The confidence gap rarely closes on its own.</p><p>If you liked this post, hit the <em><strong>like</strong></em> button. It's the best feedback I could get.</p><p>Until next time,<br>Adlet</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: weekly newsletter, helping 3,000+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Microsoft and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Success = (number of attempts) × (probability of success each time)]]></title><description><![CDATA[The rule is so simple]]></description><link>https://www.thetrueengineer.com/p/success-number-of-attempts-probability</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/success-number-of-attempts-probability</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Wed, 03 Sep 2025 05:02:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ce43bf6a-c1d6-456e-9770-c2d50e273a41_960x1280.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I gave my first tech talk to ten people in a windowless room at a local meetup. I talked nervously about databases for 15 minutes, got sweaty, and nobody asked me anything at the end. The organizer thanked me with the kind of smile you give a child who performed in a school play.</p><p>Two years later, I gave a big talk to 300 engineers, got asked to speak at three more events, and got a promotion because my bosses thought I could be a leader. Same brain, different outcome. I learned a simple rule: <strong>Success = (number of attempts) &#215; (probability of success each time)</strong>.</p><p>Most engineers obsess over the second variable. We practice coding problems, learn how to design big systems, and make our GitHub pages look cool. We act like every chance is an uni exam, and if we&#8217;re not perfect, we think we failed. But here's what nobody tells you: the first variable matters more.</p><p>After that first disaster, I spoke at ten more events over eighteen months. Company lunch-and-learns where I fumbled through slides about API design. Lightning talks at conferences where I rushed through my conclusions. Panel discussions where I said "um" more than actual words. However, I learned that confidence isn&#8217;t about being perfect one time. It's about being brave enough, often enough, until the math works in your favor.</p><p>The breakthrough came during talk number ten. I was presenting about incident response at a SRE meetup when someone asked how we handled our worst outage. Instead of deflecting or giving a sanitized answer, I told the real story. The panic, the wrong assumptions, the moment we realized our monitoring was lying to us. People laughed. Someone approached me afterward saying it was the most honest post-mortem they ever heard.</p><p>That vulnerability taught me more about talking to people than any teacher ever could. The speaking opportunities that followed weren't about technical expertise anymore. They were about connecting with other engineers who lived through the same chaos and wanted someone to acknowledge it out loud.</p><p>The tech world makes us believe there&#8217;s a perfect engineer who always passes interviews, and gets promoted because they&#8217;re super smart. Reality looks messier. The engineers who thrive aren't the ones who never fail. They're the ones who fail forward, fast and often.</p><p>I&#8217;ve seen smart engineers get stuck because they wait for the perfect chance, project, or moment to go for a promotion. Meanwhile, their not-as-smart coworkers get ahead by trying more things, asking for help, and making more projects. Not better projects. More projects.</p><p>The math is unforgiving but fair. If you have a ten percent chance of success on any given attempt, you need to make ten attempts to expect one success. But most people make two attempts, fail twice, and conclude they're not cut out for whatever they were trying to do. They optimize for the wrong variable.</p><p>This isn't about seeking out embarrassment or treating every stage like amateur hour. Each attempt should be genuine, thoughtful, and a little better than the last. But the emphasis belongs on "each attempt". Perfect is the enemy of prolific.</p><p>Now, when engineers say they want people to notice their skills, I don&#8217;t tell them to wait for the perfect talk or the best conference. I tell them to sign up for any meetup happening this month. Then sign up for another one next month. Keep speaking until their voice finds its power.</p><p>The math that actually matters isn't the complexity of your algorithms. It's how many times you're willing to run the program.</p><p>And again<strong>: Success = (number of attempts) &#215; (probability of success each time)</strong>.</p><p>If you liked this post, hit the <em>like</em> button. It's the best feedback I could get.</p><p>Until next time,<br>Adlet</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: weekly newsletter, helping 3,000+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Microsoft and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Lessons in Leadership at Skyscanner]]></title><description><![CDATA[Behind the wins: Senior Data Science Manager]]></description><link>https://www.thetrueengineer.com/p/lessons-in-leadership-at-skyscanner</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/lessons-in-leadership-at-skyscanner</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Thu, 28 Aug 2025 14:01:39 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/cd82739d-8b68-40f6-9e78-13489fafe2d6_1798x1168.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Fast forward to today, and this newsletter just keeps growing. 3,000+ readers in just 8 months. Thank you for being part of it! To make it even more special, we have a guest this week: <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Jose Parre&#241;o Garcia&quot;,&quot;id&quot;:255728031,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c4dad41-478b-4960-a5e0-98ed1e54657e_1168x1046.jpeg&quot;,&quot;uuid&quot;:&quot;a4e48745-32be-4931-bb1e-f213bb0a8d53&quot;}" data-component-name="MentionToDOM"></span> (Senior Data Science Manager at Skyscanner) sharing hard-earned lessons on leadership, growth, and impact.</p><p>At Skyscanner, he explains how choosing between management and the staff IC path comes down to where you get your energy, enabling people vs. scaling through technical leverage. He shares how rebuilding an underperforming personalization team led to their first big win in years, proving leadership is often about people, not tech.</p><p>But enough from me. Here are Jose&#8217;s answers from our conversation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bhzv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972de4b-bdb1-4e56-aaae-80f49747ca38_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bhzv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972de4b-bdb1-4e56-aaae-80f49747ca38_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!bhzv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972de4b-bdb1-4e56-aaae-80f49747ca38_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!bhzv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972de4b-bdb1-4e56-aaae-80f49747ca38_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!bhzv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972de4b-bdb1-4e56-aaae-80f49747ca38_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bhzv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972de4b-bdb1-4e56-aaae-80f49747ca38_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4972de4b-bdb1-4e56-aaae-80f49747ca38_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;:681224,&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://www.thetrueengineer.com/i/172167741?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972de4b-bdb1-4e56-aaae-80f49747ca38_1280x720.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_!bhzv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972de4b-bdb1-4e56-aaae-80f49747ca38_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!bhzv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972de4b-bdb1-4e56-aaae-80f49747ca38_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!bhzv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972de4b-bdb1-4e56-aaae-80f49747ca38_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!bhzv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972de4b-bdb1-4e56-aaae-80f49747ca38_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 aria-hidden="true" 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><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>1) </strong><em><strong>If you&#8217;re a Senior Individual Contributor deciding between pursuing a Staff path or moving into management, how do you recommend making that choice? How did you personally recognize which path was right for you?</strong></em></p><p>For me, the choice between management and the staff or principal path comes down to what gives you energy. You cannot really do both.</p><p>If you go into <strong>management</strong>, your impact shifts away from coding and more into coordination, planning, and people development. You still need to understand the technical details, but you will not be in every pull request or every brainstorm. You also stop getting the same kind of feedback you used to as an individual contributor, but, you don&#8217;t miss it. You actually feel proud when your direct reports get strong feedback, because you know you have created the conditions for them to thrive.</p><p>Another part is growth. A promotion or lateral move does not <em>just</em> happen. It takes months of planning and shaping opportunities. You are not doing the work yourself, but you are guiding the narrative, and when it comes together it is incredibly rewarding to know you played even a small part in someone&#8217;s journey.</p><p>On the <strong>principal IC side</strong>, the impact looks very different. You are solving higher-level technical problems, setting architecture, unblocking teams. You might design a framework that entire departments depend on, or connect the dots across multiple squads. You do not always carry things through to the end, but you know your judgment is multiplying other people&#8217;s work.</p><p>Of course, you give things up. You are not embedded in a single team anymore, and you may miss the satisfaction of building side by side and shipping something directly. But what you gain is that ripple effect: knowing your technical decisions shape dozens of projects, and that without you, whole streams of work might stall. That is the kind of impact that makes the principal role rewarding.</p><p><strong>2) </strong><em><strong>How do promotions typically work for engineering managers (e.g. M1 -&gt; M2, M2 -&gt; M3)? Is it valuable to explicitly express your aspiration to advance to your manager like in IC roles?</strong></em></p><p>At Skyscanner, we do not really label roles as M1, M2, M3, but there are equivalents. For data science, it is more like <strong>Manager &#8594; Senior Manager &#8594; Director</strong>. Beyond that, Senior Director and VP levels do exist, but they are rare in smaller disciplines like ours (we are around 60 data scientists in total).</p><p>The general pattern is the same though: scope and complexity increase with each step. A <strong>manager</strong> leads a single team, focusing on delivery, hiring, and wellbeing. A <strong>senior manager</strong> oversees multiple teams or managers, and spends more time on cross-team alignment and stakeholder relationships. A <strong>director</strong> is operating at an org level, shaping strategy across domains.</p><p>What is unique in our discipline is how you get there. All of our data science managers started as individual contributors. You had to be an excellent IC before moving into management. But that transition can feel strange at first because, where you were a strong individual contributor, now you are suddenly a junior again in management, relearning a whole new skill set.</p><p>It is also rare that we hire managers externally. Culture is very important at Skyscanner, and managers set the culture for their teams. Get that wrong, and the whole group can suffer. By moving people internally, we have much higher confidence the culture will remain strong.</p><p>Finally, timing matters. For someone to move into management, there first needs to be a spot &#8212; either an existing vacancy or a new team being built in the next 6 to 12 months. Then it can happen in 2 ways: sometimes individuals raise their hand, other times existing managers spot potential leaders and start conversations to explore willingness and fit.</p><p><strong>3) </strong><em><strong>Describe a difficult people-management case. How did you diagnose root causes, what actions did you take (including HR involvement), and what were the measurable results?</strong></em></p><p>One of the toughest situations I faced was when I was asked to support and step-in our Hotels Personalisation team. The team had not shipped a successful model in more than a year, and credibility with stakeholders was very low.</p><p>When I audited the team, the biggest issues were on the people side. The manager was not really managing (no structured one-to-ones, no planning, no stakeholder relationships). The senior data scientist was technically brilliant &#8212; she could build PyTorch models in her sleep &#8212; but she could not diagnose what problem needed solving. She was solving the wrong things, and that meant we were never going to win.</p><p>The outcome was painful but clear. After aligning with my director, we made the call to rebuild the team. We let the existing group go and brought in new hires internally who could both lead and focus on the right problems. At the same time, we simplified the technical system to give them a clean foundation.</p><p>6 months later, that rebuilt team shipped the first big win in hotel ranking in years. The lesson for me was that sometimes it is not about technical. And as a manager, you need to recognise when the people you have are simply not a fit for the challenge in front of them.</p><p><strong>4) </strong><em><strong>With AI tools making it easy to solve Leetcode-style problems, how do you see technical interviews evolving at Skyscanner?</strong></em></p><p>At Skyscanner we actually do not use Leetcode-style problems for data science roles. What we do instead is much more about testing how people think.</p><p>The first stage is usually a short technical screen in Python or SQL. But the goal is not syntax. The idea is seeing how candidates translate a question into code, even if it is pseudo-code. We want to see reasoning, not memorisation.</p><p>The second step is a business case. We pick a problem we have solved before, so we know the trade-offs and decisions involved. What we look for is whether they naturally ask the right questions, form reasonable hypotheses, think about feature importance, and outline a plausible approach. Because we went through the real journey, it is easy to see who is thinking in the right direction.</p><p>We sometimes add an A/B testing case too. The interviewer plays the role of a product owner (often a deliberately difficult one) who pushes for bad testing decisions. The candidate&#8217;s job is to design the experiment properly, analyse results, and hold their ground. It tells us a lot about how they balance technical rigour with stakeholder pressure.</p><p>Could AI tools help with some of this? Maybe (or probably). We have seen people try. But it is usually obvious when someone is repeating what an AI told them instead of actually thinking through the problem in the room. In fact, generally, those who get everything right are treated suspiciously because we have seen great candidates not nailing every single question. Reasoning, communicating, and applying judgment is very hard to fake.</p><p><strong>5) </strong><em><strong>If you were starting your engineering career today, what would you focus on to build a strong foundation for long-term growth?</strong></em></p><p>If I were starting my career today, I would still build the foundation in two layers: timeless fundamentals, and adaptability.</p><p>On the fundamentals side, I would still do something like Andrew Ng&#8217;s classic machine learning course: the basics of modelling and statistics have not gone away. But I would go further: I would deliberately put myself into data wrangling work. Volunteer for the ETL tasks, learn how to build a star schema database, debug data logs. Everyone wants to build models, but the reality is that without clean, reliable data, those models are useless. Being the person who understands both the data engineering and the modelling makes you indispensable.</p><p>On adaptability, I would take advantage of the fact that AI now lets you learn by doing at an incredible pace. Fifteen years ago it was much harder to build something end-to-end on your own. Now you can. So I would consume courses, but then I would <em>immediately</em> put them into practice: build dashboards, spin up an MLops pipeline, try a simple mobile app, train a deep learning model. The point is not to be perfect, it is to learn by building.</p><p>And finally, I would invest early in communication. The people who grow fastest are not just the best coders, but the ones who can explain trade-offs to stakeholders, collaborate across disciplines, and influence decisions. That combination of technical breadth, adaptability, and communication is what sets you up for long-term growth.</p><div><hr></div><p>Thank you Jose for sharing these lessons!</p><p>If you found this post useful, let me know in the comments or with a like. It&#8217;s the best feedback I could get. I&#8217;ll keep bringing more industry leaders to my newsletter.</p><p>Until next time,<br>Adlet</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: weekly newsletter, helping 3,000+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Microsoft and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[if a startup worth your career]]></title><description><![CDATA[My LinkedIn inbox fills up every month with startup pitches.]]></description><link>https://www.thetrueengineer.com/p/ego-equity-or-exit-checklist-to-decide</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/ego-equity-or-exit-checklist-to-decide</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Wed, 20 Aug 2025 05:02:08 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fdb69504-5d18-4031-9446-c045316700ef_5533x3518.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>My LinkedIn inbox fills up every month with startup pitches. A founder wants a &#8220;quick chat.&#8221; A recruiter says a Series B company is &#8220;on fire.&#8221; A stealth startup promises &#8220;impact at scale.&#8221; If you are a senior engineer in Big Tech, you know the script.</p><p>Most of these messages are noise. But buried in them, once in a while, is a company that could be worth a real look. The problem is, the pitch is never the truth. Founders sell vision. Recruiters sell urgency. If you make a career move based on either, you are gambling blind.</p><p>The only way to cut through is to run your own checklist. Over time, I&#8217;ve built mine. It is not complicated, but it is sharp enough to filter 90% of the inbound messages I get.</p><p>The first number I check is revenue per employee. Ask the founder, or whoever reached out to you, for the revenue number. Divide their annual recurring revenue by the total headcount. If that number is below $150K, the company is either pre&#8211;product market fit or scaling too early. They will burn fast when the market tightens. If it is above $300K, there is enough efficiency to suggest real traction. Most engineers never ask this, but it tells you in one shot if the business model makes sense.</p><p>Then I check fundraising history on Crunchbase. Do not only look at valuation headlines. Look at the timing. Healthy companies raise every 12&#8211;24 months and grow into each round. If you see a raise only six months after the last, it usually means burn is out of control. If you see a gap of three years with no news, it means they struggled to get the next check. Both are red flags.</p><p>Next is investors. Look at their financial stability. Check the size of the fund. A small fund may not have the capital to support future rounds. Do they fund follow-on rounds, or abandon companies after the first check?</p><p>Equity is the hardest to diligence, but you can still push. Ask from the founders about the preferred share price in the last round. A clear answer means they respect you. A vague answer usually means liquidation preferences are so high that your common equity will be nearly worthless. Many engineers only discover this after years of work, when their &#8220;life-changing&#8221; grant turns into nothing.</p><p>I also check the team. LinkedIn makes it obvious. How long do engineers stay? Are the first ten hires still there? If you see a pattern of people leaving at the two-year mark, it usually means insiders see the ceiling. Early churn is the most honest signal you will get.</p><p>One more check most engineers ignore: customers. Look at engagement and retention. For B2B, ask how many top accounts renew, losing one big client can wipe out a large portion of revenue. For B2C, check usage and repeat behavior, high churn or low engagement signals trouble. Impressive logos or large user counts mean little if the business can&#8217;t retain them. Customers tell the truth long before TechCrunch does.</p><p>When you step back, the decision always comes down to three currencies: equity, ego, or exit. Equity is the bet that your shares will be worth something. Ego is the pull of being needed, building fast, feeling essential again. Exit is the freedom you hope to buy later. None of these is wrong. But you have to know which one you are choosing, or you will get burned.</p><p>I have seen smart engineers chase ego and call it equity. I have seen people join for equity only to discover they were last in line on the cap table. The failure is not choosing wrong, but not being honest about what you want or checking if the company can deliver it.</p><p>Every message in your inbox is asking for the same thing: your time, traded for risk. Your job is to make sure the numbers make the risk worth it. Revenue per employee. Fundraising pace. The investor behind the logo. The equity terms. The team&#8217;s behavior. The customers. That is the real checklist.</p><p>If those do not pass, nothing else matters.</p><p>If you liked this post, hit the <em>like</em> button. It's the best feedback I could get.</p><p>Until next time,<br>Adlet</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: weekly newsletter, helping 3,000+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Microsoft and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[swipe right on writing well as an engineer]]></title><description><![CDATA[why writing matters for engineers]]></description><link>https://www.thetrueengineer.com/p/swipe-right-on-writing-well-as-an</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/swipe-right-on-writing-well-as-an</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Wed, 13 Aug 2025 05:02:16 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6682f5da-7ad0-4e08-ab19-27cc86274176_4032x2268.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I stopped trying to be the loudest voice in every meeting. The truth is, yelling in Google Meets doesn&#8217;t win respect or get things done. Instead, I learned that writing is how you influence decisions without being in the room.</p><p>In meetings, it&#8217;s easy for your ideas to get lost because people interrupt, ask &#8220;quick questions&#8221;, or talk over you. Being loud doesn&#8217;t mean you&#8217;re right. It means you spoke the loudest. The best engineers I know don&#8217;t rush to talk first or louder. They write first. A clear proposal doc or a well-timed Slack thread often does the heavy lifting that a meeting can&#8217;t.</p><p>When you write, you create something that sticks. It lives beyond the noise of a call. The doc, your words guide the team and stop confusion. Instead of fighting for air time, you&#8217;re influencing the direction from a different angle. One that scales far beyond the hour on the calendar.</p><p>Writing also scales your impact beyond GitHub commits. Your code fixes the problem now, but your writing helps people understand it later. When you write well, you multiply your influence. You become more than a coder, you become a force multiplier.</p><p>The ironic part is that writing clarifies your own thinking. I&#8217;ve spent hours stuck on a problem, but when I wrote about it, the answer became clear. Writing forces you to untangle your assumptions and makes contradictions stand out. If you can&#8217;t explain your design in writing, you don&#8217;t understand it yet.</p><p>This is why good writing is often a quiet form of leadership. You don&#8217;t have to dominate the room or interrupt to move things forward. Instead, you set the record straight in text, letting your ideas breathe and take root. Your writing becomes the single source of truth when the meeting ends and questions pile up.</p><p>Of course, many engineers tell themselves writing is not their job. &#8220;I&#8217;m a coder, not a writer,&#8221; is a phrase I once used. But real impact in tech requires more than shipping clean code. It demands aligning teams, reducing confusion, and building trust. None of which happen without clear communication.</p><p>The engineers who influence the most are often the ones who write the most. They write RFCs, proposals that stop extra work and get everyone to support the idea. Their influence lasts far beyond a meeting slot.</p><p>So next time you&#8217;re tempted to jump into the fray and shout louder, remember: <strong>writing is your quiet power</strong>. Write your ideas down, send the doc, share the proposal. That&#8217;s how you scale your voice. That&#8217;s how you make decisions happen without being in the room.</p><p>If you liked this post, hit the <em>like</em> button. It's the best feedback I could get.</p><p>Until next time,<br>Adlet</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: weekly newsletter, helping 3,000+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Microsoft and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[how one engineer fooled silicon valley]]></title><description><![CDATA[the Soham paradox of remote work]]></description><link>https://www.thetrueengineer.com/p/how-one-engineer-fooled-silicon-valley</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/how-one-engineer-fooled-silicon-valley</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Fri, 11 Jul 2025 07:01:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!a_SJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea4add4-2c2b-4a09-9ef9-cc138f1d52f7_1288x948.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week, an unusual case shook X (formerly Twitter). Tech companies now seek 10x, 100x engineers. But when they got Soham Parekh, it shocked them. He was working at many Y Combinator startups at once. Soham sent cold emails to many startup founders and engineers, showing genuine interest in open roles. For those struggling to convert cold emails into interviews, his approach could serve as a guide. In some ways, Soham Parekh is a genius.</p><p>Soham worked more than 5 remote jobs at the same time. He was fooling half of Silicon Valley. So, how did he pull this off?</p><p>It all started with a cold email. He sent the same message to many companies, saying:</p><blockquote><p>I love everything about what your company is doing. I don't have many hobbies outside coding. I am not athletic, bad at singing, don't drink, can't dance. Building is the only thing I am good at. Just want to be heads down chasing that goal.</p></blockquote><p>This email intro was pure genius. Admitting he had no hobbies showed vulnerability. The self-deprecating humor made it relatable. The focus on work was sharp and clear. It triggered founders&#8217; thoughts: &#8220;<em>This is the dedicated engineer we need.</em>&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a_SJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea4add4-2c2b-4a09-9ef9-cc138f1d52f7_1288x948.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a_SJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea4add4-2c2b-4a09-9ef9-cc138f1d52f7_1288x948.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a_SJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea4add4-2c2b-4a09-9ef9-cc138f1d52f7_1288x948.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a_SJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea4add4-2c2b-4a09-9ef9-cc138f1d52f7_1288x948.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a_SJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea4add4-2c2b-4a09-9ef9-cc138f1d52f7_1288x948.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a_SJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea4add4-2c2b-4a09-9ef9-cc138f1d52f7_1288x948.jpeg" width="1288" height="948" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ea4add4-2c2b-4a09-9ef9-cc138f1d52f7_1288x948.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:948,&quot;width&quot;:1288,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;No alternative text description for this image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;: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="No alternative text description for this image" title="No alternative text description for this image" srcset="https://substackcdn.com/image/fetch/$s_!a_SJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea4add4-2c2b-4a09-9ef9-cc138f1d52f7_1288x948.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a_SJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea4add4-2c2b-4a09-9ef9-cc138f1d52f7_1288x948.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a_SJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea4add4-2c2b-4a09-9ef9-cc138f1d52f7_1288x948.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a_SJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea4add4-2c2b-4a09-9ef9-cc138f1d52f7_1288x948.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" 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><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">I found the email from Soham on X</figcaption></figure></div><p>Companies kept falling for it again and again. He aced every interview and got hired. Then, he started working many jobs without anyone knowing. For months, he collected salaries from several startups at the same time.</p><p>Then everything unraveled when Suhail called him out on X:</p><blockquote><p>PSA: there&#8217;s a guy named Soham Parekh (in India) who works at 3-4 startups at the same time. He&#8217;s been preying on YC companies and more. Beware. I fired this guy in his first week and told him to stop lying / scamming people. He hasn&#8217;t stopped a year later. No more excuses.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XEhq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e599ae0-edff-4939-a8fc-06d0fb547f24_798x704.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XEhq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e599ae0-edff-4939-a8fc-06d0fb547f24_798x704.png 424w, https://substackcdn.com/image/fetch/$s_!XEhq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e599ae0-edff-4939-a8fc-06d0fb547f24_798x704.png 848w, https://substackcdn.com/image/fetch/$s_!XEhq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e599ae0-edff-4939-a8fc-06d0fb547f24_798x704.png 1272w, https://substackcdn.com/image/fetch/$s_!XEhq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e599ae0-edff-4939-a8fc-06d0fb547f24_798x704.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XEhq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e599ae0-edff-4939-a8fc-06d0fb547f24_798x704.png" width="798" height="704" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e599ae0-edff-4939-a8fc-06d0fb547f24_798x704.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:704,&quot;width&quot;:798,&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_!XEhq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e599ae0-edff-4939-a8fc-06d0fb547f24_798x704.png 424w, https://substackcdn.com/image/fetch/$s_!XEhq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e599ae0-edff-4939-a8fc-06d0fb547f24_798x704.png 848w, https://substackcdn.com/image/fetch/$s_!XEhq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e599ae0-edff-4939-a8fc-06d0fb547f24_798x704.png 1272w, https://substackcdn.com/image/fetch/$s_!XEhq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e599ae0-edff-4939-a8fc-06d0fb547f24_798x704.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 aria-hidden="true" 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><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"><em>Source: Matt Parkhurst, founder of Antimetal <a href="https://x.com/mprkhrst/status/1940443347581337925">on X</a></em></figcaption></figure></div><p>That single tweet opened the floodgates. Founder after founder started sharing their Soham stories:</p><blockquote><p>&#8220;We hired this guy a week ago. Fired him this morning.&#8221;<br>&#8220;Soham was our first engineering hire in 2022. We let him go.&#8221;<br>&#8220;This guy got a trial contract, then ghosted us after signing.&#8221;</p></blockquote><p>The internet couldn't get enough. X exploded with Soham memes. The whole saga became a viral phenomenon.</p><p>Beyond the memes, the story revealed something serious. Soham&#8217;s scheme is eroding trust in remote work. Companies built on good faith now question every remote employee.</p><p>Soham isn&#8217;t alone. <em>Overemployed</em> subreddit has near 500,000 members. They share tips on working several remote jobs. They call it &#8220;overemployment&#8221; and treat it like a career strategy. Members exchange tactics to manage many bosses without getting caught.</p><p>The Soham phenomenon shows remote work creates new opportunities. But exploiting them can break vital trust. That trust is what makes remote work possible in the first place.</p><p>My take on this would be more conservative. Don't play the short game. Five salaries won&#8217;t matter when your reputation is radioactive. In tech, your name is your currency. Play long term.</p><p>Until next time,<br>Adlet</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">FREE to join 2,500+ tech community: The True Engineer newsletter for expert insights and practical advice for modern developers &#128640; (from Google, Meta, Amazon, Microsoft and more)</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><div><hr></div><p>If you'd like to connect with me on LinkedIn, just use the button below. I read every message.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[3 books that made me a 10x engineer]]></title><description><![CDATA[what these books taught me that tutorials never could]]></description><link>https://www.thetrueengineer.com/p/3-books-that-made-me-a-10x-engineer</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/3-books-that-made-me-a-10x-engineer</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Sun, 13 Apr 2025 16:01:31 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/85676149-a873-4a0f-b4bc-3be44adee7b7_1422x1112.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There&#8217;s a quiet turning point in every engineers&#8217;s journey, when code stops being only code.<strong> </strong>It&#8217;s not about syntax anymore. That shift doesn&#8217;t usually come from a flashy framework or the latest library. For me, it came from three books. Books that didn&#8217;t teach me better code but they helped me become a better thinker.</p><div><hr></div><h3>1. <strong>The Pragmatic Programmer</strong> &#8212; <em>Timeless coding wisdom</em></h3><p><em>Authors: Andy Hunt, Dave Thomas</em> </p><p>I picked this up because every senior engineer I knew said, &#8220;You have to read it.&#8221; I expected it to be dry but it felt like two mentors sharing hard-won lessons over coffee (without fluff). Clear, practical advice, write code that&#8217;s easy to change, fix root causes, master your tools.</p><p>One idea that stuck: <em><strong>&#8220;Don&#8217;t live with broken windows.&#8221;</strong></em> Messy code only gets messier. So make sure to clean it up early. This isn't limited to software engineering, is it?</p><p>Another favorite: <em><strong>&#8220;Find bugs once.&#8221;</strong></em> If a human finds a bug, a human shouldn&#8217;t find this same bug again.</p><p>This isn't just a book, it's a whole mindset.</p><div><hr></div><h3>2. <strong>Thinking, Fast and Slow</strong> &#8212; <em>Sharpen your decision-making</em></h3><p><em>Author: Daniel Kahneman</em></p><p>This isn&#8217;t a tech book, but every engineer should read it. Daniel Kahneman explains how we think, how often we&#8217;re wrong without knowing it.</p><p>We use two systems: one fast and emotional, the other slow and logical. Knowing which is active? That&#8217;s powerful.</p><p>Before reading it, I often trusted my gut too much when debugging or designing. Afterward, I slowed down, asked better questions, and spotted my blind spots. It made me a better engineer and teammate. I listen more and admit when I might be wrong.</p><div><hr></div><h3>3. <strong>Designing Data-Intensive Applications</strong> &#8212; <em>Master scalable systems</em></h3><p><em>Author: Martin Kleppmann</em></p><p>I was reading this while working on backend-heavy projects. It felt dense at first, but Martin Kleppmann makes complex topics like distributed systems and databases easy to grasp. It&#8217;s not only about what works, but why and how things fail. Biggest takeaway? <strong>We often take infrastructure for granted</strong>. &#8220;Just scale it&#8221; isn&#8217;t so simple.</p><p>This book taught me to see the tradeoffs: consistency vs. availability, batch vs. stream, monolith vs. microservices. After reading it, I stopped thinking in features and started thinking in systems.</p><div><hr></div><h3><strong>To sum it up briefly</strong></h3><p>If you&#8217;re an engineer and you&#8217;re feeling stuck or just want to sharpen the way you think, these three books might be what you need.</p><p>They don&#8217;t teach code. They change your perspective. And here&#8217;s the best part: you don&#8217;t need to read them all at once. Pick one. Take your time. Let it sit with you. Let it <em>reprogram</em> how you see the craft.</p><p>If you found this helpful, please like or share it with a friend and consider subscribing if you haven&#8217;t already.</p><p><span>Thanks for reading,</span><br><a href="https://www.linkedin.com/in/adlet-balzhanov/">Adlet Balzhanov</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: weekly newsletter, helping 3,500+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Microsoft and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;Connect Now on LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>Connect Now on LinkedIn</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[How to Handle a Difficult Colleague]]></title><description><![CDATA[A smile always wins]]></description><link>https://www.thetrueengineer.com/p/surviving-the-workplace-how-to-handle</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/surviving-the-workplace-how-to-handle</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Sun, 23 Feb 2025 08:31:10 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5b4d6bdc-223e-4021-96da-42e7cd502fab_5472x3648.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let&#8217;s be real, at some point in your career, you&#8217;re going to run into an absolute asshole of a coworker. It has already happened to me a couple of times. Let me share how I developed a thicker skin.</p><p>For example, in your day-to-day work, maybe they leave vague, passive-aggressive comments on your code reviews that make you question every career decision you&#8217;ve ever made. Or maybe they just love making everything more difficult than it needs to be.</p><p>I wish I could tell you that the workplace is full of rainbows and mutual respect, but that would be a lie. Instead, let&#8217;s talk about how to deal with these people in a way that keeps you sane, professional, and still on track for that promotion you deserve.</p><h3>Advice 1: Look at the situation from a different angle</h3><p>I know, I know. It&#8217;s easy to assume that a difficult coworker is just a terrible human being who wakes up every morning thinking of new ways to make your life miserable. But sometimes, it&#8217;s not personal. People have bad days. They have stress from things you don&#8217;t see. For instance, personal issues, or maybe they just spilled coffee all over their laptop right before a big presentation.</p><p>Before you decide that they&#8217;re out to get you, take a step back. Have they always been like this? If it&#8217;s the case, give them a little grace. You&#8217;d be surprised how many workplace &#8220;enemies&#8221; turn into allies once you see them as people first.</p><h3>Advice 2: Do Not React Immediately</h3><p>Ever wrote an angry email or message, only to regret it five minutes later? Yeah, me too. The next time you&#8217;re about to respond to a frustrating comment, take a break. Go grab a coffee, or just breathe for a minute. There are various quick ways to lower stress, such as doing sports, going for a run etc. Allow your emotions to cool down a bit to avoid making things worse for yourself.</p><p>Most of the time, the other person isn&#8217;t trying to attack you, they just have a different way of communicating. Some cultures value directness, while others emphasize politeness and diplomacy. What feels like rudeness to you might just be how they express themselves.</p><h3>Advice 3: Adapt Your Communication Style</h3><p>If you and your coworker are constantly clashing, it might be time to change the way you interact. If face-to-face conversations always end in frustration, try switching to email or messages, where you can carefully craft your words. On the flip side, if written messages feel too cold or aggressive, try having a real conversation instead.</p><p>One trick that works well in technical discussions is to avoid even-numbered debates. If you and this person always disagree, bring in a third party. With an odd number of voices, decisions become easier to reach because there&#8217;s always a majority. Simple but effective.</p><h3>Advice 4: Keep Records (Just in Case)</h3><p>If you&#8217;ve tried everything and things aren&#8217;t improving, start keeping a written record of your interactions. This is about having evidence if you ever need to escalate the issue.</p><p>Save emails, messages, and comments that highlight problematic behavior. If possible, get a neutral third party&#8217;s opinion to make sure you&#8217;re not overreacting. Sometimes, what feels like an attack is just a miscommunication, but if multiple people see the same problem, you know it&#8217;s not just you.</p><h3>Advice 5: Know When to Walk Away</h3><p>At the end of the day, some people are just toxic. Or they just don&#8217;t like you in any case. It happens. If you&#8217;ve tried every strategy and they&#8217;re still making your life miserable, it might be time to move on. That doesn&#8217;t necessarily mean quitting your job but maybe switching to another team or project.</p><p>No job is worth burning out over. You have decades ahead in your career, and trust me, you don&#8217;t want to spend them constantly fighting battles that drain your energy.</p><h3>Conclusion</h3><p>Handling difficult coworkers is part of the job, but it doesn&#8217;t have to consume you. At first, I found dealing with those assholes challenging, but over time, I realized that their pushback helped me grow. I became better because of it. The key is to stay adaptable, keep your emotions in check, and recognize when it&#8217;s time to step back. Whether it&#8217;s through perspective shifts, better communication, or strategic distancing, there are ways to protect your sanity while still being a team player.</p><p>By the way, sometimes HR can help, but what I often observe is that they mainly try to minimize damage on a larger scale and go to bureaucracy. They may also start a counter that you might be a conflict person.</p><p>And if all else fails? Remember this: some people are just difficult, and that&#8217;s their problem, not yours.</p><p><span>Thanks for reading,</span><br><a href="https://www.linkedin.com/in/adlet-balzhanov/">Adlet Balzhanov</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: a newsletter, helping 4,000+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Uber and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;Connect Now on LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>Connect Now on LinkedIn</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[10 lessons I learned the hard way as a software engineer]]></title><description><![CDATA[Imagine stepping into a time machine. What advice do you bring back?]]></description><link>https://www.thetrueengineer.com/p/10-lessons-from-the-journey-what</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/10-lessons-from-the-journey-what</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Sat, 25 Jan 2025 08:31:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9881fe07-5acc-4479-9e1b-336b55d30082_6000x4000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Looking back, there&#8217;s so much I wish I told my younger self in tech. About the mindset, the career, and the real life behind it. If you're starting out or stuck midway, these 10 lessons are for you. Each comes with a story, a tip, and a push you&#8217;ll actually remember.</p><h3>1. <strong>Coding is important, but communication is everything.</strong></h3><p>You can write great code, but if you can't communicate, it won&#8217;t matter. Clear writing, clear thinking. This is how ideas spread and projects ship. Explain your work simply, document it well, and keep your team in sync.</p><h4>Example:</h4><p>Imagine you built an algorithm that&#8217;s 40% faster. Great. But if you can&#8217;t explain it clearly, no one will care. Impact only matters if others understand it.</p><h4>Action Item:</h4><ul><li><p>Practice explaining your work in a simple way. Try writing one short paragraph like you're talking to a 5th-grade friend. By the way, this will help you in job interviews as well. Clear answers matter more than fancy words. A friend once failed the LeetCode problem but got the job by explaining their project well.</p></li><li><p>Be active in team discussions and retrospectives. Focus on being clear and concise.</p></li></ul><div><hr></div><h3>2. <strong>Code reviews aren&#8217;t critiques. They&#8217;re conversations.</strong></h3><p>When I started, code reviews felt scary like people were only looking for mistakes. Now I see them as chances to learn and grow. Each comment helps me be a better engineer.</p><h4>Action Item:</h4><ul><li><p>Ask for specific feedback when submitting your code. For example, &#8220;I&#8217;m unsure about my error handling here. Thoughts?&#8221;</p></li></ul><div><hr></div><h3>3. <strong>The best debugging tool is a break.</strong></h3><p>You know that feeling when you&#8217;ve been staring at a bug for hours, only to solve it in 10 seconds after stepping away? Yeah, that&#8217;s not a coincidence.</p><h4>Example:</h4><p>I spent entire afternoon on a bug which was a small mistake with a variable. A short coffee break helped me spot it fast. Sometimes stepping away solves more than staring at the screen.</p><h4>Action Item:</h4><ul><li><p>When stuck on a bug, set a timer for 30 minutes. If you&#8217;re still stuck when it rings, take a walk, grab a coffee, or do something non-technical before coming back.</p></li></ul><div><hr></div><h3>4. <strong>One bug, one fix, one lesson.</strong></h3><p>Every bug is a learning opportunity whether in code or in life. When you encounter one, don&#8217;t just patch it. Ask yourself: How did this happen? What can I do to prevent it next time?</p><h4>Example:</h4><p>After fixing a production issue, I also improved logging, monitoring, and tests.<br>That way, we can catch problems earlier next time.</p><h4>Action Item:</h4><ul><li><p>After big bugs, review what went wrong. Use techniques like the Five Whys to find out why it happened. Write down the cause, the fix, and how to prevent it.</p></li><li><p>Add a new test for each bug to stop it from happening again. One bug, one fix, one unit test.</p></li></ul><div><hr></div><h3>5. <strong>Mistakes are part of the process.</strong></h3><p>No matter how experienced you become, bugs will still find their way into your code. That&#8217;s okay. Mistakes aren&#8217;t failures; they&#8217;re feedback.</p><h4>Example:</h4><p>A junior engineer deleted a column from the live database by mistake. We didn&#8217;t blame them but used this incident to add better safety checks.</p><h4>Action Item:</h4><ul><li><p>When you make a mistake, write down what happened, what you learned, and how you&#8217;ll do better next time.</p></li><li><p>Encourage a blame-free culture on your team. Focus on solutions, not blame.</p></li></ul><div><hr></div><h3>6. <strong>Don&#8217;t over-engineer.</strong></h3><p>Early on, I thought great code meant handling every edge case and future feature. Now I know: simple code always wins.</p><h4>Example:</h4><p>I once built a complex config system for a feature that only needed two settings. Looking back, a simple approach would've been easier to build and maintain.</p><h4>Action Item:</h4><ul><li><p>Before you start, ask: &#8220;What&#8217;s the simplest way to solve this?&#8221;</p></li><li><p>Follow YAGNI (You Aren&#8217;t Gonna Need It): don&#8217;t build features until you need them.</p></li></ul><div><hr></div><h3>7. <strong>Test your code. Future you will thank you.</strong></h3><p>Writing tests can feel tedious, but they save time and catch bugs when it matters most. They give you confidence to ship and refactor. Seriously. Never refactor without them.</p><h4>Example:</h4><p>I built a key feature which broke in production due to missing input checks. One simple test would've caught it.</p><h4>Action Item:</h4><ul><li><p>Set a goal to write at least one unit test for every new function, feature, bug you create.</p></li><li><p>Use code coverage tools to spot missing tests.</p></li></ul><div><hr></div><h3>8. <strong>Learn the business side.</strong></h3><p>Knowing why a decision is made matters as much as knowing how to build it. Software solves real problems. It is not code for code&#8217;s sake.</p><h4>Example:</h4><p>I worked on a notification feature that felt useless. After release, users left so many comments that it helped them catch key updates. That changed my view of the problem.</p><h4>Action Item:</h4><ul><li><p>Talk to product managers or join customer feedback sessions to learn user needs.</p></li><li><p>Learn basics like ROI, KPIs, and customer personas to understand your work better.</p></li></ul><div><hr></div><h3>9. <strong>Efficiency is your superpower.</strong></h3><p>Small improvements grow over time. Faster typing, better tools and more make a big difference.</p><h4>Example:</h4><p>By automating a weekly data-cleaning task that used to take an hour, I saved my team 50 hours per year.</p><h4>Action Item:</h4><ul><li><p>Invest time in learning keyboard shortcuts, IDE features, and productivity tools.</p></li><li><p>Look for repetitive tasks in your workflow and script or automate them.</p></li></ul><div><hr></div><h3>10. <strong>The &#8220;perfect&#8221; job doesn&#8217;t exist.</strong></h3><p>There&#8217;s no single role or company that will check every box. Focus on growth, impact, and culture over perfection.</p><h4>Example:</h4><p>A friend of mine switched teams or Big Tech jobs over small disagreements. But different opinions are normal and part of the process.</p><h4>Action Item:</h4><ul><li><p>Make own list of must-haves like learning, work-life balance or big salary. Then choose roles that fit.</p></li><li><p>Think about your long-term career goals and pick roles that match them.</p></li></ul><div><hr></div><h3>Wrapping Up</h3><p>Software engineering is more than coding. It&#8217;s about the journey, people, and lessons. It&#8217;s tough but full of possibilities.</p><p>To my younger self and beginners: embrace the process, be patient, and keep learning. You&#8217;ve got this.</p><p><span>If you found this helpful, </span><strong>please like or share it with a friend and consider subscribing if you haven&#8217;t already</strong><span>.</span></p><p><span>Thanks for reading,</span><br><a href="https://www.linkedin.com/in/adlet-balzhanov/">Adlet Balzhanov</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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">&#128204; FREE to join: weekly newsletter, helping 3,800+ Big Tech engineers level up fast. Read by engineers from Google, Meta, Amazon, Microsoft and more</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><div><hr></div><p>Connect with me on LinkedIn, just use the button below. I read every message. Cheers!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;My LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>My LinkedIn</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Understanding Event-Driven Systems]]></title><description><![CDATA[Event-driven systems are everywhere. Inspired by Martin Fowler&#8217;s insights and a thought-provoking LinkedIn post by Dragan Stepanovi&#263;, let&#8217;s break down event-driven systems in plain, practical terms.]]></description><link>https://www.thetrueengineer.com/p/understanding-event-driven-systems</link><guid isPermaLink="false">https://www.thetrueengineer.com/p/understanding-event-driven-systems</guid><dc:creator><![CDATA[Adlet Balzhanov]]></dc:creator><pubDate>Thu, 02 Jan 2025 13:33:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!wJkC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0300bc57-9aee-44f8-b87d-d9739e76c417_5772x3644.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wJkC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0300bc57-9aee-44f8-b87d-d9739e76c417_5772x3644.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wJkC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0300bc57-9aee-44f8-b87d-d9739e76c417_5772x3644.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wJkC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0300bc57-9aee-44f8-b87d-d9739e76c417_5772x3644.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wJkC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0300bc57-9aee-44f8-b87d-d9739e76c417_5772x3644.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wJkC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0300bc57-9aee-44f8-b87d-d9739e76c417_5772x3644.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wJkC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0300bc57-9aee-44f8-b87d-d9739e76c417_5772x3644.jpeg" width="1456" height="919" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0300bc57-9aee-44f8-b87d-d9739e76c417_5772x3644.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:919,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3799990,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wJkC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0300bc57-9aee-44f8-b87d-d9739e76c417_5772x3644.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wJkC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0300bc57-9aee-44f8-b87d-d9739e76c417_5772x3644.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wJkC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0300bc57-9aee-44f8-b87d-d9739e76c417_5772x3644.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wJkC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0300bc57-9aee-44f8-b87d-d9739e76c417_5772x3644.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" 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><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by ZENG YILI on <a href="https://unsplash.com/photos/a-bunch-of-metal-structures-that-are-stacked-together-2E22hMX-e00">Unsplash</a></figcaption></figure></div><p>Event-driven systems are everywhere. They help apps talk to each other, handle data better, and stay responsive. But if you&#8217;re not careful, they can also get messy fast. One big problem? People often confuse event-driven architecture with specific technologies like queues or message brokers. </p><p>As <a href="https://www.linkedin.com/in/dstepanovic/">Dragan Stepanovi&#263;</a> briefly put it on LinkedIn: </p><blockquote><p><em>Here&#8217;s the kicker: you don&#8217;t need messaging/queuing technologies to do Event-Driven Architecture</em>. </p></blockquote><p>That insight sparked my curiosity and inspired me to learn more, which led to this article.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.linkedin.com/posts/dstepanovic_heres-the-kicker-you-dont-need-messaging-activity-7280330839098372096-4RrL?utm_source=share&amp;utm_medium=member_desktop" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jV-2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b10d4f-d184-4b7e-a4b4-4c711c7761e4_557x548.png 424w, https://substackcdn.com/image/fetch/$s_!jV-2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b10d4f-d184-4b7e-a4b4-4c711c7761e4_557x548.png 848w, https://substackcdn.com/image/fetch/$s_!jV-2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b10d4f-d184-4b7e-a4b4-4c711c7761e4_557x548.png 1272w, https://substackcdn.com/image/fetch/$s_!jV-2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b10d4f-d184-4b7e-a4b4-4c711c7761e4_557x548.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jV-2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b10d4f-d184-4b7e-a4b4-4c711c7761e4_557x548.png" width="557" height="548" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4b10d4f-d184-4b7e-a4b4-4c711c7761e4_557x548.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:548,&quot;width&quot;:557,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:119088,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.linkedin.com/posts/dstepanovic_heres-the-kicker-you-dont-need-messaging-activity-7280330839098372096-4RrL?utm_source=share&amp;utm_medium=member_desktop&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jV-2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b10d4f-d184-4b7e-a4b4-4c711c7761e4_557x548.png 424w, https://substackcdn.com/image/fetch/$s_!jV-2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b10d4f-d184-4b7e-a4b4-4c711c7761e4_557x548.png 848w, https://substackcdn.com/image/fetch/$s_!jV-2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b10d4f-d184-4b7e-a4b4-4c711c7761e4_557x548.png 1272w, https://substackcdn.com/image/fetch/$s_!jV-2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b10d4f-d184-4b7e-a4b4-4c711c7761e4_557x548.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" 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><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://martinfowler.com/articles/201701-event-driven.html">Martin Fowler&#8217;s breakdown</a> of event patterns gives us a clear way to think about them. Here&#8217;s what you need to know.</p><h3><strong>What Is Event Notification?</strong></h3><p>Think of event notification as a simple heads-up. One system says, &#8220;Hey, something just happened!&#8221; and leaves it to others to decide what to do about it. For example, an app might send out an &#8220;OrderShipped&#8221; event to let other systems know an order is on its way.</p><p><strong>Real-Life Example:</strong> When a user updates their profile picture on a social media platform, an event notification can be sent to notify other systems, like a newsfeed service or a recommendation engine, about the update.</p><p><strong>Why It&#8217;s Good:</strong></p><ul><li><p><strong>Keeps Things Independent:</strong> Systems don&#8217;t need to rely on each other too much.</p></li><li><p><strong>Easy to Set Up:</strong> The sender doesn&#8217;t need to know who&#8217;s listening.</p></li></ul><p><strong>Why It Can Be Tricky:</strong></p><ul><li><p><strong>Hard to Trace:</strong> If a lot of systems are listening and responding, it&#8217;s tough to see the full picture.</p></li><li><p><strong>Hidden Commands:</strong> Sometimes, events get misused to tell other systems what to do, which defeats the purpose.</p></li></ul><p><strong>Pro Tip:</strong> Only use events when systems really don&#8217;t need to know much about each other. Be clear about what the event means.</p><h3><strong>What About Event-Carried State Transfer?</strong></h3><p>This is when the event carries all the info someone might need. Instead of just saying &#8220;OrderShipped,&#8221; the event might include details like the order number, shipping address, and delivery date. This way, the other systems don&#8217;t have to ask for more info later.</p><p><strong>Real-Life Example:</strong> In e-commerce, when an order is placed, the order service sends an event with all order details, allowing the inventory, shipping, and notification systems to act independently without querying the order service.</p><p><strong>Why It&#8217;s Great:</strong></p><ul><li><p><strong>Fast and Reliable:</strong> Systems can work even if the main app goes down.</p></li><li><p><strong>No Waiting Around:</strong> No need to call the main system to get details.</p></li></ul><p><strong>Why It Can Be a Pain:</strong></p><ul><li><p><strong>Too Many Copies:</strong> Every system has its own version of the data, which can get out of sync.</p></li><li><p><strong>More Work for Listeners:</strong> They have to store and manage all that extra data.</p></li></ul><p><strong>When to Use It:</strong> When speed and resilience matter more than keeping things perfectly tidy.</p><h3><strong>What Is Event Sourcing?</strong></h3><p>Event sourcing is like keeping a diary. Instead of storing the latest state of something, you write down every change. To find out what&#8217;s going on, you read through the changes and piece it together.</p><p><strong>Real-Life Example:</strong> A banking system records every transaction as an event. To calculate the current account balance, the system replays all transactions from the event log.</p><p><strong>Why It&#8217;s Cool:</strong></p><ul><li><p><strong>Complete History:</strong> You can see everything that ever happened.</p></li><li><p><strong>Undo or Replay:</strong> Go back in time or test out new ideas by replaying events.</p></li><li><p><strong>Audit-Friendly:</strong> Perfect for tracking important changes, like financial transactions.</p></li></ul><p><strong>Why It&#8217;s Tough:</strong></p><ul><li><p><strong>Harder to Manage:</strong> Replaying events can get complicated, especially if you&#8217;re working with other systems.</p></li><li><p><strong>Changing the Rules:</strong> If your event format changes over time, it can break things.</p></li></ul><p><strong>Pro Tip:</strong> Use snapshots to save the current state every so often. It makes replaying faster and easier.</p><h3><strong>What Is CQRS (Command Query Responsibility Segregation)?</strong></h3><p>CQRS is about splitting the work. One part handles changes (commands), and another handles questions (queries). It&#8217;s like having two tools for two different jobs.</p><p><strong>Real-Life Example:</strong> In a ride-sharing app, the command system manages ride bookings and updates, while the query system handles showing drivers&#8217; locations to users in real-time.</p><p><strong>Why It&#8217;s Useful:</strong></p><ul><li><p><strong>Optimized Performance:</strong> Each part can be built for its specific job.</p></li><li><p><strong>Better Scaling:</strong> You can handle lots of reads or writes without breaking a sweat.</p></li></ul><p><strong>Why It Can Be Overkill:</strong></p><ul><li><p><strong>Extra Complexity:</strong> Splitting things up means more moving parts to manage.</p></li><li><p><strong>Not Always Needed:</strong> For simple systems, it just adds work.</p></li></ul><p><strong>When to Use It:</strong> When your system has lots of reads and only a few writes, or when the read and write logic is very different.</p><h3><strong>Event-Driven Isn&#8217;t Just Tools</strong></h3><p>Here&#8217;s where many teams get it wrong: they focus too much on the technology. Event-driven doesn&#8217;t mean you must use specific tools like Kafka, RabbitMQ, or AWS SQS. Those are just ways to implement the patterns. What really matters is the architecture&#8212;the way systems communicate and share responsibilities using events.</p><p>Logically, event-driven architecture inverts the control flow to reduce the two-way coupling we see in request-response systems. For example, many HTTP-based technologies allow systems to subscribe to and publish events without needing traditional message queues. Adding a physical queue, like RabbitMQ or Kafka, is about solving specific problems such as load-peaking, not about defining event-driven architecture itself. You can still do Event-Driven Architecture without these tools&#8212;it&#8217;s about design, not dependency.</p><h3><strong>How to Choose the Right Pattern</strong></h3><p>Event-driven systems aren&#8217;t one-size-fits-all. Each pattern has its sweet spot:</p><ul><li><p><strong>Event Notification:</strong> Great for simple signals. Use it to keep systems loosely connected.</p></li><li><p><strong>Event-Carried State Transfer:</strong> Use when speed and independence matter more than keeping data perfectly synced.</p></li><li><p><strong>Event Sourcing:</strong> Perfect for audit trails and systems that need to rebuild history.</p></li><li><p><strong>CQRS:</strong> Ideal for complex systems with heavy reads or different models for reading and writing.</p></li></ul><p>It&#8217;s easy to get carried away with fancy patterns. But remember, simpler is better. Don&#8217;t use event sourcing or CQRS unless you really need them. Start small, learn as you go, and adjust as your system grows.</p><h3><strong>Conclusion</strong></h3><p>Event-driven systems are powerful, but they&#8217;re not magic. Understanding the patterns and when to use them makes all the difference. Start with clear goals, keep things as simple as possible, and watch out for unnecessary complexity.</p><p><em>Special thanks to Martin Fowler for inspiring this exploration of event-driven systems, and to Dragan Stepanovi&#263; for his insightful LinkedIn post that reminded me that event-driven architecture is more about design than tools. This article is my way of learning and sharing what I&#8217;ve discovered.</em></p><p>Until next time,<br>Adlet</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thetrueengineer.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 The True Engineer! If you found this post helpful, please subscribe and share it</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><div><hr></div><p><em>Loved this post?</em> &#128153; Hit that like button&#8212;it means the world to me and helps me grow.</p><p><em>Know someone who&#8217;d find this helpful?</em> &#9851;&#65039; Share it with them! Let's spread the knowledge and keep inspiring each other.</p><p>Stay awesome!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/in/adlet-balzhanov/&quot;,&quot;text&quot;:&quot;Connect Now on LinkedIn&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.linkedin.com/in/adlet-balzhanov/"><span>Connect Now on LinkedIn</span></a></p>]]></content:encoded></item></channel></rss>