<?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[Peter O'Leary]]></title><description><![CDATA[Peter O'Leary]]></description><link>https://www.timelight.com</link><image><url>https://substackcdn.com/image/fetch/$s_!UgLb!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfa86f7c-ff5d-4445-ba29-8c7dcc0f8b76_1158x1158.jpeg</url><title>Peter O&apos;Leary</title><link>https://www.timelight.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 23 May 2026 14:36:57 GMT</lastBuildDate><atom:link href="https://www.timelight.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Peter O'Leary]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[peteoleary@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[peteoleary@substack.com]]></itunes:email><itunes:name><![CDATA[Peter O'Leary]]></itunes:name></itunes:owner><itunes:author><![CDATA[Peter O'Leary]]></itunes:author><googleplay:owner><![CDATA[peteoleary@substack.com]]></googleplay:owner><googleplay:email><![CDATA[peteoleary@substack.com]]></googleplay:email><googleplay:author><![CDATA[Peter O'Leary]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Everything Is Getting Worse on Purpose]]></title><description><![CDATA[Enshittification is a feature, not a bug]]></description><link>https://www.timelight.com/p/everything-is-getting-worse-on-purpose</link><guid isPermaLink="false">https://www.timelight.com/p/everything-is-getting-worse-on-purpose</guid><dc:creator><![CDATA[Peter O'Leary]]></dc:creator><pubDate>Sun, 10 May 2026 18:03:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!27GV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16008ffe-8567-48fc-ace2-09ca0c3d2b0a_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!27GV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16008ffe-8567-48fc-ace2-09ca0c3d2b0a_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!27GV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16008ffe-8567-48fc-ace2-09ca0c3d2b0a_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!27GV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16008ffe-8567-48fc-ace2-09ca0c3d2b0a_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!27GV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16008ffe-8567-48fc-ace2-09ca0c3d2b0a_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!27GV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16008ffe-8567-48fc-ace2-09ca0c3d2b0a_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!27GV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16008ffe-8567-48fc-ace2-09ca0c3d2b0a_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16008ffe-8567-48fc-ace2-09ca0c3d2b0a_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!27GV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16008ffe-8567-48fc-ace2-09ca0c3d2b0a_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!27GV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16008ffe-8567-48fc-ace2-09ca0c3d2b0a_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!27GV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16008ffe-8567-48fc-ace2-09ca0c3d2b0a_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!27GV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16008ffe-8567-48fc-ace2-09ca0c3d2b0a_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You&#8217;ve probably noticed it, even if you don&#8217;t have a name for it. The washing machine that doesn&#8217;t last as long as the one your parents had. The software you now rent instead of own. The Starbucks that seems perpetually understaffed. The streaming service where you&#8217;ve &#8220;purchased&#8221; dozens of movies you&#8217;ll lose the moment you cancel your subscription.</p><p>There&#8217;s a word for this. It&#8217;s called <em>enshittification</em> &#8212; the gradual, deliberate decrease in the quality of any product or service over time. The term was coined by the author and journalist Cory Doctorow, who originally used it to describe a specific pattern in tech platforms: the way a platform attracts users with good service, then degrades that service to extract more value for advertisers, then degrades it further to extract more value for shareholders, until there&#8217;s almost nothing left for the people who originally showed up. I want to use it more broadly here, because the pattern Doctorow identified in platforms turns out to describe nearly everything. And I want to draw a through line that I don&#8217;t think gets enough attention: the legal and political conditions that made enshittification not just possible, but almost inevitable.</p><div><hr></div><h3><strong>How We Got Here: The Legal Foundation</strong></h3><p>To understand enshittification, you have to go back over a century, to a 1919 Michigan Supreme Court case called <em>Dodge v. Ford Motor Company</em>.</p><p>The Dodge brothers &#8212; yes, those Dodges, the ones who would go on to found the rival car company &#8212; were minority shareholders in Ford. Henry Ford had decided he wanted to stop paying large special dividends and instead reinvest profits into the company, expand production, and raise worker wages. The Dodge brothers sued. And they won. The Michigan Supreme Court ruled that Ford had to pay the dividends, writing that &#8220;a business corporation is organized and carried on primarily for the profit of the stockholders.&#8221; Not for its workers. Not for its customers. Not even for the long-term health of the enterprise itself. For shareholders. First, last, and primarily.</p><p>That principle &#8212; shareholder primacy &#8212; became the foundational legal logic of American corporate governance. (<em>Dodge v. Ford Motor Company</em>, 204 Mich. 459, Michigan Supreme Court, 1919.)</p><p>The intellectual machinery came later. In 1970, the economist Milton Friedman published a famous essay in the New York Times Magazine titled &#8220;The Social Responsibility of Business Is to Make Money.&#8221; His argument was blunt: corporate executives who voluntarily spend shareholder money on social goods &#8212; cleaner factories, better wages, community investment &#8212; are, in effect, imposing an unauthorized tax. The only legitimate obligation of a business is to increase profits within the rules of the game. Friedman&#8217;s essay gave academic cover to a doctrine that had been humming along in the courts for half a century, and it became enormously influential in business schools throughout the 1970s and 1980s.</p><p>Then came the political dimension. To understand how shareholder primacy moved from legal doctrine to cultural operating system, you have to read a document called the Powell Memo.</p><p>In August 1971, a corporate attorney named Lewis Powell wrote a confidential memo to the U.S. Chamber of Commerce titled &#8220;Attack on American Free Enterprise System.&#8221; His argument was that American corporations were under coordinated assault &#8212; from the political left, from academia, from consumer advocates like Ralph Nader, from the press &#8212; and that business had been far too passive in its own defense. His prescription was systematic and well-funded: corporations needed to staff and fund think tanks, shape what was being taught in universities, cultivate relationships with media, and lobby government with far greater aggression and coordination than they had before. He was, in effect, writing the blueprint for the modern corporate political infrastructure &#8212; institutions like the Heritage Foundation and the American Enterprise Institute trace significant parts of their origin and funding to exactly this moment.</p><p>Two months after writing the memo, Lewis Powell was nominated to the Supreme Court by President Nixon. He was confirmed in December 1971. And in 1978, he wrote the majority opinion in <em>First National Bank of Boston v. Bellotti</em> &#8212; the decision that gave corporations First Amendment rights to spend money on political referendums. The man who wrote the corporate mobilization playbook handed corporations one of their most powerful legal weapons from the bench.</p><p>Over a period of roughly a century, American courts steadily expanded the legal rights of corporations until they resembled, in many respects, the constitutional rights of individual citizens. The arc is worth tracing briefly: in 1886, <em>Santa Clara County v. Southern Pacific Railroad</em> (118 U.S. 394) was cited &#8212; through a contested court reporter&#8217;s headnote, not the actual ruling &#8212; as establishing that corporations are &#8220;persons&#8221; entitled to equal protection under the Fourteenth Amendment. In 1978, the U.S. Supreme Court&#8217;s <em>First National Bank of Boston v. Bellotti</em> (435 U.S. 765) gave corporations First Amendment rights to spend money on political referendums. And in 2010, <em>Citizens United v. FEC</em> (558 U.S. 310) completed the circuit, ruling that corporations could spend unlimited sums on political speech. Along the way, the Supreme Court&#8217;s 5-4 ruling in <em><a href="https://www.oyez.org/cases/2013/13-354">Burwell v. Hobby Lobby Stores, Inc.</a></em> (573 U.S. 682, 2014) held that closely held, for-profit corporations could claim religious exemptions under the Religious Freedom Restoration Act (RFRA) &#8212; a statutory rather than constitutional ruling, which means Congress retains the power to amend RFRA and close that door.</p><p>The practical consequence is that corporations gained the political and legal standing of persons without the moral accountability of persons. They can speak. They can lobby. They can donate. But they cannot go to jail.</p><p>Put all of this together &#8212; the shareholder primacy doctrine of <em>Dodge v. Ford</em>, the intellectual legitimization of Friedman&#8217;s essay, the decades of expanding corporate rights &#8212; and you&#8217;ve built a legal and cultural environment in which corporations believe, sometimes rightly and sometimes wrongly, that their only real obligation is to maximize returns for shareholders, even at the cost of the general public, their own employees, and ultimately their own products.</p><p>That belief is the engine of enshittification.</p><div><hr></div><h3><strong>The Evidence Is Overwhelming</strong></h3><p>If you want proof that shareholder primacy has taken hold as an operational doctrine &#8212; not just a legal theory, but a genuine guide to corporate behavior &#8212; the evidence is not hard to find.</p><p>Start with stock buybacks. In 2018, companies in the S&amp;P 500 collectively spent more than $800 billion buying back their own stock, directly inflating share prices. That same year, they spent less than $600 billion on research and development. The math tells you everything: returning money to shareholders was a higher priority than investing in the future of the business.</p><p>Look at executive compensation. In 1965, the average CEO of a large American company earned roughly 20 times what the median worker at that company earned. By the early 2020s, that ratio had climbed above 300 to 1 in many industries. The primary driver of executive pay is stock price performance. CEOs are, structurally, optimized to make one number go up &#8212; not to build great products, retain talented employees, or serve customers well. If those things happen to make the stock go up, fine. If they don&#8217;t, they&#8217;re expenses to be cut.</p><p>Even the corporate establishment has quietly acknowledged the problem. In 1997, the Business Roundtable &#8212; the lobbying organization that represents CEOs of America&#8217;s largest corporations &#8212; published a statement declaring that corporations exist principally to serve their shareholders. In 2019, to some fanfare, they reversed themselves, issuing a new statement signed by nearly 200 CEOs pledging that corporations should serve all stakeholders: employees, customers, suppliers, communities, and shareholders. It was treated as a landmark moment.</p><p>And then, largely, those same companies continued doing what they had always done. Harvard Law School professors Lucian Bebchuk and Roberto Tallarita examined what actually happened after the signing in a paper titled &#8220;The Illusory Promise of Stakeholder Governance&#8221; (<em>Cornell Law Review</em>, 2021) and found that virtually none of the signatory companies had updated their corporate governance bylaws &#8212; the actual documents that boards use to make decisions &#8212; to reflect the new stakeholder commitments. The pledge had never been operationalized. It was, in their words, an &#8220;illusory promise.&#8221; The statement was, in the end, a press release. The incentive structure hadn&#8217;t changed, because nobody in the boardroom had been asked to change it.</p><div><hr></div><h3><strong>The Cheapening of Everything</strong></h3><p>The most obvious form of enshittification is straightforward: make the product with cheaper inputs and hope the customer doesn&#8217;t notice.</p><p>The American washing machine is an instructive example. Compare the durability and construction of an appliance made in 2022 to one made thirty or forty years ago. There&#8217;s simply no comparison. Corporations have spent decades finding ways to use cheaper materials, less expensive manufacturing techniques, and lower-grade components &#8212; while keeping the product looking, on the surface, roughly the same. The goal isn&#8217;t to deceive customers, exactly. The goal is to preserve the perception of value while steadily eroding the actual value. The machine still washes your clothes. It just won&#8217;t do so for as long.</p><p>Stretch this logic across nearly every consumer product category and the pattern holds. Furniture. Appliances. Tools. Clothing. The things we buy today are, in most cases, designed to need replacement sooner than their predecessors. This is sometimes called planned obsolescence, but that framing lets corporations off the hook too easily. It&#8217;s not just planning for obsolescence &#8212; it&#8217;s engineering it.</p><div><hr></div><h3><strong>The Rise of Monthly Recurring Revenue</strong></h3><p>There is a second, arguably more corrosive form of enshittification: the shift from products you own to services you license.</p><p>Corporations have become infatuated with what the business world calls MRR &#8212; monthly recurring revenue. The logic is seductive from an investor&#8217;s perspective. If you sell someone a product once, and it&#8217;s a genuinely excellent product that lasts a lifetime, you&#8217;ve made one sale. The customer is satisfied. They may even recommend you to others. But you&#8217;ll never make another dollar from them directly. Under the old model, building the best possible product was, at minimum, defensible as a business strategy.</p><p>Under the MRR model, that math inverts. A product so good it never needs replacing is a liability. What you want instead is something the customer pays for every month, every year, indefinitely.</p><p>The tech industry offers the clearest illustration of this shift. I spent part of my career at Lotus Development Corp, which made &#8212; among other things &#8212; a word processor and a spreadsheet called Lotus 1-2-3. These were dominant products. Then Microsoft entered the market, bundled competing products with the operating systems businesses were already buying, and priced Lotus out of existence. That move effectively eliminated a major competitor and consolidated enormous power in Microsoft&#8217;s hands.</p><p>But here&#8217;s the part that deserves more attention. Once Microsoft had that market dominance, it shifted its entire business model. You used to walk into a store and buy a box: Microsoft Word, Microsoft Excel, a one-time purchase. That model is essentially gone. Today, you license those products. You pay every month, or every year, forever. The software is never truly yours.</p><p>And that shift created a problem that Microsoft solved in a particularly telling way: how do you justify charging customers every year for a product they already know how to use? The answer is features. Constant, relentless, often unnecessary features. I watched this from inside the industry and found myself wondering: who is this for? Menus grew more complex. Interfaces became cluttered. At one point, Microsoft had to roll back years of accumulated complexity by redesigning its menus from scratch &#8212; an implicit admission that the product had grown unwieldy. But the underlying dynamic never changed, because it couldn&#8217;t. The business model demands it.</p><p>One consequence of this feature race that I don&#8217;t think gets discussed enough: in their rush to add new capabilities to justify ongoing subscriptions, Microsoft embedded a scripting language &#8212; VBA, Visual Basic for Applications &#8212; directly into Word and Excel. The intention was to give power users more flexibility. The result was a massive, long-lived security vulnerability. Every Excel file, every Word document, became a potential vector for malicious code. A feature nobody asked for, built to satisfy investor expectations, ended up making millions of computers less safe for years.</p><div><hr></div><h3><strong>You Don&#8217;t Own Your Movies, Either</strong></h3><p>The same dynamic has reshaped entertainment. With the rise of streaming, the notion of &#8220;buying&#8221; a movie has become something of a legal fiction. When Amazon Prime offers you the option to purchase a film, what you&#8217;re purchasing is a license to view that film on Amazon&#8217;s platform, subject to Amazon&#8217;s terms of service. If you ever cancel Prime, those &#8220;purchases&#8221; go with it. The fine print in Amazon&#8217;s terms of service makes this explicit &#8212; those licenses are non-transferable. You cannot take them to another platform. You cannot bequeath them. You cannot resell them.</p><p>You are, in effect, paying for the privilege of being locked in. Monthly recurring revenue, applied to culture.</p><div><hr></div><h3><strong>Understaffing as a Business Strategy</strong></h3><p>Move from products to services, and enshittification takes a somewhat different form &#8212; but the logic is identical.</p><p>Walk into a Starbucks today, or sit in a hospital emergency room, or call a customer service line for almost any large corporation, and you are experiencing the results of a decision made in a conference room somewhere: how few people can we employ without meaningfully hurting sales? Not &#8220;how many people do we need to serve our customers well?&#8221; Not &#8220;what staffing level would prevent our employees from burning out?&#8221; The question is almost always about the floor, not the ceiling.</p><p>Labor is typically the largest single operating expense a service business carries. Private equity firms in particular have become skilled at identifying businesses where staffing can be reduced &#8212; the logic being that customers, out of inertia or lack of alternatives, will tolerate a degraded experience rather than leave. And often, they&#8217;re right. At least in the short term.</p><p>The results are visible everywhere, if you&#8217;re paying attention. The Starbucks line that takes twenty-five minutes when it used to take five, because there are two people working a shift that used to have four. The customer service hold time that runs forty-five minutes, then an hour, because the company has decided that the cost of hiring enough agents to answer the phone promptly is higher than the cost of your frustration. These aren&#8217;t accidents or isolated failures. They are the output of a deliberate calculation, made in a spreadsheet, that your time has no value on their balance sheet. You will wait because you have no real choice &#8212; and because the people making that calculation know you&#8217;ll probably stay anyway.</p><p>What makes this particular form of enshittification especially corrosive is that it also falls hardest on the people doing the work. The barista who has to apologize to an irritated customer for a wait that isn&#8217;t her fault. The support agent handling a queue no reasonable person could manage. The ER nurse running between too many patients at once. The degradation of the product and the degradation of the job are the same event, experienced from two different sides of the counter.</p><div><hr></div><h3><strong>You Don&#8217;t Own Your Tractor, Either</strong></h3><p>The software licensing logic doesn&#8217;t stay neatly inside the tech industry. It has migrated into the physical world, with consequences that are, in some cases, a matter of life and livelihood.</p><p>John Deere is the dominant manufacturer of agricultural equipment in the United States. It also sells some of the most software-dependent machinery ever put in a farmer&#8217;s hands &#8212; modern tractors packed with sensors, GPS systems, and onboard computers that would have seemed like science fiction a generation ago. When that equipment breaks down, the software that runs it is locked. Farmers cannot access the diagnostic tools required to identify the problem, let alone fix it. That access is reserved for authorized John Deere dealers.</p><p>The practical consequence is that a farmer whose tractor fails in the middle of harvest &#8212; a window that may last only a few days before crops are lost &#8212; cannot simply fix the machine they own and go back to work. They have to wait for a dealer technician, who may be days away. The tractor sitting in the field is theirs. They paid for it. In every practical sense, however, they do not own it. They own the hardware. The software that makes the hardware run belongs to John Deere, and John Deere has decided that software is not transferable with the sale.</p><p>The argument John Deere makes will sound familiar: you aren&#8217;t purchasing the software, you&#8217;re licensing it. The same logic that turned your Microsoft Office subscription into a monthly fee and your Amazon movie &#8220;purchase&#8221; into a revocable license has now been applied to a $500,000 piece of farm equipment. A farmer in Iowa and a software developer in Seattle are, legally speaking, in the same position: they paid for the use of something they will never truly own.</p><p>John Deere, facing mounting pressure from farmers and legislators, signed a voluntary memorandum of understanding with the American Farm Bureau Federation in 2023, promising expanded access to repair tools. Voluntary. Unenforceable. Sound familiar?</p><div><hr></div><h3><strong>What To Do About It</strong></h3><p>The through line in everything described above is not bad luck or market failure. It is the predictable output of a system that was deliberately constructed &#8212; through case law, through intellectual frameworks, through coordinated political organizing &#8212; to place shareholder returns above every other consideration. That system didn&#8217;t build itself, which means it can be dismantled. Here is where to start.</p><p><strong>Right to repair.</strong> The most direct intervention. Legislation requiring manufacturers to provide customers, and independent repair shops, with the tools, parts, and documentation needed to fix what they own. The European Union has moved aggressively in this direction; the United States has lagged, though more than two dozen states have introduced right-to-repair bills in recent years, and Colorado passed agricultural right-to-repair legislation in 2023. The fight is winnable, but it requires sustained pressure on state and federal legislators who will face well-funded opposition from manufacturers whose dealer service networks are a significant profit center.</p><p><strong>Antitrust enforcement.</strong> Many of the worst enshittification dynamics are downstream of monopoly or near-monopoly power. Microsoft&#8217;s ability to price Lotus out of existence and then lock customers into subscriptions depended on its dominance of the operating system market. Amazon&#8217;s ability to sell you a movie license you can&#8217;t transfer depends on its dominance of streaming infrastructure. John Deere controls roughly half the U.S. market for large agricultural equipment. When companies don&#8217;t have real competition, they don&#8217;t need to treat you well. Antitrust enforcement &#8212; actually breaking up dominant players, or blocking mergers that would create them &#8212; is not a radical idea. It is, historically, how democratic societies have kept market power from concentrating to the point of abuse.</p><p><strong>Open source and cooperative models.</strong> Not every solution is legislative. The open-source software movement has, for decades, produced tools &#8212; Linux, Firefox, LibreOffice, countless others &#8212; that are genuinely owned by their users and deliberately designed not to be enshittified, because no shareholder is waiting to extract value from them. Agricultural cooperatives give farmers collective bargaining power against equipment manufacturers and input suppliers. Credit unions exist as direct structural alternatives to shareholder-owned banks. These models don&#8217;t scale to replace every corporate product, but they demonstrate that the shareholder-primacy model is not the only way to organize the production of things people need.</p><p><strong>A constitutional amendment.</strong> This one is a long shot, and I say that without apology &#8212; long shots are sometimes the only honest answer to a deeply structural problem. The accumulated power of corporate personhood doctrine was not handed down from nature. It was constructed, case by case, over more than a century, by courts interpreting a Constitution that says nothing about corporations at all. What courts have built, a constitutional amendment could clarify: that corporations are not natural persons, that they hold no inherent constitutional rights, and that whatever legal standing they enjoy exists only because democratic governments choose to grant it &#8212; and can choose to limit it. Corporations are legal fictions. They are instruments created by society to organize economic activity. They were never meant to have a bill of rights.</p><p>There are already organized efforts pushing in this direction. The Move to Amend coalition has been working toward a &#8220;We the People Amendment&#8221; that would do exactly this: establish in the Constitution that constitutional rights belong to human beings, not to corporations, and that money is not speech. Whether or not such an amendment ever passes, the argument behind it is correct. A corporation cannot suffer. It cannot be imprisoned. It cannot die. The idea that it should enjoy the same First Amendment protections as a person &#8212; that its capacity to spend unlimited money on politics is constitutionally equivalent to your right to speak your mind &#8212; is a legal fiction built on top of another legal fiction, and it has had consequences that the drafters of the Fourteenth Amendment could not have imagined and would not have endorsed.</p><p>The economists and lawyers who built the legal infrastructure of shareholder primacy spent decades doing it deliberately and patiently. <em>Dodge v. Ford</em> was 1919. The Friedman essay was 1970. The Powell Memo was 1971. <em>Citizens United</em> was 2010. This was not an accident. It was a project. Reversing it will require the same persistence &#8212; which starts with being clear about what actually happened, and why your washing machine doesn&#8217;t last as long as your parents&#8217; did.</p>]]></content:encoded></item><item><title><![CDATA[You’re the Product Manager of Your Own Life]]></title><description><![CDATA[When you&#8217;re trying to live a goal-oriented life, you&#8217;re trying to be constantly improving yourself.]]></description><link>https://www.timelight.com/p/youre-the-product-manager-of-your</link><guid isPermaLink="false">https://www.timelight.com/p/youre-the-product-manager-of-your</guid><dc:creator><![CDATA[Peter O'Leary]]></dc:creator><pubDate>Sun, 03 May 2026 16:41:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7iGO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ec96d4-ea45-4c2d-b15c-aa2a97abcb4e_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7iGO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ec96d4-ea45-4c2d-b15c-aa2a97abcb4e_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7iGO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ec96d4-ea45-4c2d-b15c-aa2a97abcb4e_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!7iGO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ec96d4-ea45-4c2d-b15c-aa2a97abcb4e_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!7iGO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ec96d4-ea45-4c2d-b15c-aa2a97abcb4e_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!7iGO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ec96d4-ea45-4c2d-b15c-aa2a97abcb4e_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7iGO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ec96d4-ea45-4c2d-b15c-aa2a97abcb4e_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70ec96d4-ea45-4c2d-b15c-aa2a97abcb4e_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!7iGO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ec96d4-ea45-4c2d-b15c-aa2a97abcb4e_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!7iGO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ec96d4-ea45-4c2d-b15c-aa2a97abcb4e_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!7iGO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ec96d4-ea45-4c2d-b15c-aa2a97abcb4e_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!7iGO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ec96d4-ea45-4c2d-b15c-aa2a97abcb4e_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When you&#8217;re trying to live a goal-oriented life, you&#8217;re trying to be constantly improving yourself. That gets harder as you creep toward middle age, because now there are honest-to-god bucket list items you either haven&#8217;t started or just aren&#8217;t making any progress on. They sit there. They mock you a little.</p><p>I&#8217;ve been an engineering manager for more than 30 years, and the way I&#8217;ve started thinking about this is that, just like at a company, the projects I&#8217;ve taken on for myself are a backlog. I&#8217;m a blue belt in jiu-jitsu &#8212; I&#8217;d love to get to purple someday. I&#8217;m trying to claw back my Spanish after letting it rust for 30 years. There&#8217;s general fitness and health, which gets harder, not easier &#8212; you can&#8217;t just flop into bed at the end of the night and pop up eight hours later like you could in your 20s. Now it&#8217;s a struggle to get to sleep, a struggle to stay asleep. Oh, and I&#8217;m trying to write three books. Not one. Three.</p><p>If you&#8217;ve ever worked in software, you know what this looks like: a pile of open Linear tickets that have been sitting there for years. The tasks have subtasks. The subtasks have subtasks. Every time you look at the board, you feel further behind than the last time.</p><h2><strong>The cycle that eats your life</strong></h2><p>Here&#8217;s where it gets ugly. You put all these expectations on yourself, you fail to live up to most of them, and then you beat yourself up about it. The self-criticism kicks the anxiety up a notch. Anxiety scrambles your emotional state. And when you&#8217;re not in a good emotional state, it&#8217;s really difficult to get any work done. It&#8217;s actually painful.</p><p>I think this is one of the reasons people distract themselves so much. When you&#8217;re staring at what feels like an insurmountable list &#8212; a list <em>you</em> put on yourself, by the way &#8212; your brain reaches for the cheapest available dopamine. Phone. TikTok. Instagram. &#8220;Just five minutes.&#8221; Two hours later, you&#8217;ve done nothing, and the list is still right there waiting for you. The cycle is: overwhelm &#8594; distract &#8594; still overwhelmed, but now also two hours behind. It&#8217;s maddening.</p><h2><strong>Manage yourself like an engineer</strong></h2><p>I know how to manage engineers. I&#8217;ve spent decades doing it. So I figured: maybe I should start managing <em>myself</em> like an engineer.</p><p>Here&#8217;s the thing about that. In my work life, I&#8217;ve gotten pretty practiced at staring down product managers and telling them &#8212; politely, but firmly &#8212; to put everything in priority order. Product managers are great people, but their literal job is to ask engineering for things. And if you&#8217;re not careful, a well-meaning PM will overwhelm you with &#8220;must-haves,&#8221; because to them, it&#8217;s all must-haves.</p><p>So I push back. I say: there is no must-have line. Everything goes in priority order. Top to bottom. Because every single day, every engineer on the team is making decisions about what to put their attention on, and they need to be able to look at the list and just <em>start at the top</em>.</p><p>The same thing applies to your personal life. The problem is that <em>you</em> are both the product manager and the engineer. You&#8217;re the one piling on the requests, and you&#8217;re also the one who has to do them. And you, the PM-version-of-you, can absolutely overwhelm you, the engineer-version-of-you, with very well-meaning requests.</p><h2><strong>Build a bomb-proof priority list</strong></h2><p>What you need is a bomb-proof list of priorities, in the actual order they&#8217;re important to you in your life. Not aspirational order. Not &#8220;what would sound good on a podcast&#8221; order. The real order.</p><p>When you have that, then on the days when you&#8217;re overwhelmed and can&#8217;t even figure out where to put your attention next, you don&#8217;t have to figure it out. You just go to the top of the list and ask: <em>am I making progress here? Am I falling behind?</em></p><p>For most people, health probably belongs at or near the top. It&#8217;s also the easiest thing to fall behind on. By health I mean the boring, well-known stuff: drinking enough water, eating real food regularly, getting enough sleep, exercising. We all know we should do these things. That&#8217;s not the hard part. The hard part is the motivation, and the motivation gets a lot easier when health isn&#8217;t competing for attention with eight other things you also told yourself were &#8220;must-haves.&#8221;</p><h2><strong>Stop blaming the people around you</strong></h2><p>One more thing, and this one is uncomfortable.</p><p>When you put too many expectations on yourself, there&#8217;s a real tendency to look around at the people in your life and start blaming <em>them</em>. They&#8217;re asking too much of you. They&#8217;re not helping enough. They&#8217;re getting in your way.</p><p>Be careful with that. In most cases, you&#8217;re the one asking too much of you. You are the product manager of your own life. You are the business manager of your own life. If you&#8217;ve put so many expectations on yourself that you can&#8217;t possibly do it alone &#8212; that&#8217;s fine. Get help. But look in the right places for help, and don&#8217;t reflexively blame the people around you for not solving a problem you created.</p><p>I tell engineers this. I tell my son this. It is <em>totally okay</em> to need help. But you are the one who has to ask for it. You have to figure out who, and how, and in what way to ask. Sometimes the most useful help isn&#8217;t even someone else doing a thing for you &#8212; sometimes it&#8217;s just a person looking at your list with you and saying, &#8220;Yeah, you don&#8217;t actually have to do that one.&#8221;</p><h2><strong>TL;DR</strong></h2><p>You are the product manager. You are the engineer. The PM-you can overwhelm the engineer-you, and when it does, the engineer-you starts scrolling TikTok at 11 p.m. instead of sleeping.</p><p>So manage yourself the way you&#8217;d want to be managed. Make the list. Put it in real priority order, top to bottom, no must-have line. Start at the top. Ask for help when you need it. And every once in a while, give yourself permission to look at a ticket that&#8217;s been open for two years and just close it.</p><p>Not every goal deserves to be on the board.</p>]]></content:encoded></item><item><title><![CDATA[Don't Smoke Your Database With This Common Mistake]]></title><description><![CDATA[Third-Party API Calls Inside Database Transactions]]></description><link>https://www.timelight.com/p/dont-make-third-party-api-calls-inside</link><guid isPermaLink="false">https://www.timelight.com/p/dont-make-third-party-api-calls-inside</guid><dc:creator><![CDATA[Peter O'Leary]]></dc:creator><pubDate>Wed, 15 Apr 2026 02:51:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!I_Cj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d79137-cb67-451b-be10-04623e64694e_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I_Cj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d79137-cb67-451b-be10-04623e64694e_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I_Cj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d79137-cb67-451b-be10-04623e64694e_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!I_Cj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d79137-cb67-451b-be10-04623e64694e_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!I_Cj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d79137-cb67-451b-be10-04623e64694e_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!I_Cj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d79137-cb67-451b-be10-04623e64694e_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I_Cj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d79137-cb67-451b-be10-04623e64694e_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9d79137-cb67-451b-be10-04623e64694e_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&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_!I_Cj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d79137-cb67-451b-be10-04623e64694e_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!I_Cj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d79137-cb67-451b-be10-04623e64694e_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!I_Cj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d79137-cb67-451b-be10-04623e64694e_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!I_Cj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d79137-cb67-451b-be10-04623e64694e_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"></figcaption></figure></div><p>It&#8217;s an easy mistake to make, and an intuitive one. You&#8217;re building a command that does a few things: call Stripe a couple of times, get back payment objects, and write the results to the database. You want the whole thing to be atomic &#8212; if anything fails, nothing should be persisted. So you wrap everything in a transaction. Done, right?</p><p>Not quite. This pattern &#8212; third-party API calls inside database transactions &#8212; is one of those things that looks correct on paper but causes real pain in production. I&#8217;ve seen it take down services at exactly the wrong times. Let me explain why, and what to do instead.</p><div><hr></div><h2><strong>The Intuitive Approach</strong></h2><p>Imagine you&#8217;re scheduling a payment. The operation requires three calls to Stripe: create a customer, attach a payment method, and schedule a charge. After each call you get back an object and you want to persist it. Something like this:</p><pre><code><code>def call
  ActiveRecord::Base.transaction do
    customer = Stripe::Customer.create(email: user.email)
    db_customer = StripeCustomer.create!(stripe_id: customer.id, user: user)

    payment_method = Stripe::PaymentMethod.attach(
      payment_method_id,
      customer: customer.id
    )
    db_payment_method = StripePaymentMethod.create!(
      stripe_id: payment_method.id,
      stripe_customer: db_customer
    )

    charge = Stripe::PaymentIntent.create(
      amount: amount_in_cents,
      currency: 'usd',
      customer: customer.id,
      payment_method: payment_method.id
    )
    StripeCharge.create!(stripe_id: charge.id, stripe_payment_method: db_payment_method)
  end
end
</code></code></pre><p>The appeal here is obvious. If the third <code>Stripe::PaymentIntent.create</code> call blows up, the transaction rolls back and none of those partial records land in the database. Clean and atomic.</p><p>The problem is what you&#8217;re doing to your database in the meantime.</p><div><hr></div><h2><strong>The Latency Mismatch Problem</strong></h2><p>A database transaction is not a free operation. Depending on your isolation level, it holds locks &#8212; at minimum on the rows it has written to, potentially on the pages or tables those rows live in. Those locks are held for the duration of the transaction.</p><p>On a well-provisioned system &#8212; say, two services on the same AWS availability zone &#8212; a straightforward database operation (a simple <code>SELECT</code>, <code>INSERT</code>, or <code>UPDATE</code>) should complete in well under 10 milliseconds. A batch of several such operations inside a single transaction? Still probably under 10ms total.</p><p>Stripe API calls, on the other hand, regularly take 500&#8211;700ms. Sometimes more. There&#8217;s no amount of infrastructure tuning you can do on your end to change that. You&#8217;re at the mercy of Stripe&#8217;s servers and the public internet.</p><p>So what you&#8217;ve actually built is a transaction that holds database locks for the better part of a second, per call, times however many Stripe calls you need to make. Three Stripe calls? You&#8217;re looking at a transaction that holds locks for potentially 2 seconds or more. And if you have any concurrency at all &#8212; multiple workers, background jobs, web requests &#8212; those locks start competing.</p><div><hr></div><h2><strong>What This Looks Like in Production</strong></h2><p>At Mudflap, we had a background job that ran every morning to update fuel prices and validate a large number of cached objects. This job made multiple third-party API calls and also needed to commit a significant number of database updates. At some point, someone had wired this up with the API calls living inside transactions.</p><p>During the morning run, we started seeing cascading database performance issues. Connections were getting held. Queries were backing up. The combination of high-concurrency writes and long-running transactions caused severe lock contention &#8212; and the morning price update, which customers depend on at the start of their day, was the worst possible time for it.</p><p>The fix was straightforward once we diagnosed the problem: pull the API calls out of the transactions entirely.</p><div><hr></div><h2><strong>The Pre-Transaction Pattern</strong></h2><p>The solution is to restructure your command object so that all third-party API calls happen in a dedicated pre-transaction step. The results are stored as instance variables on the command object. Then, in a separate step, you open the transaction and do nothing inside it except write to the database.</p><p>Here&#8217;s what that looks like:</p><pre><code><code>class SchedulePaymentCommand
  def call
    fetch_stripe_objects   # pre-transaction step: all API calls happen here
    persist_to_database    # transaction step: DB writes only, no network I/O
  end

  private

  def fetch_stripe_objects
    @stripe_customer = Stripe::Customer.create(email: user.email)

    @stripe_payment_method = Stripe::PaymentMethod.attach(
      payment_method_id,
      customer: @stripe_customer.id
    )

    @stripe_charge = Stripe::PaymentIntent.create(
      amount: amount_in_cents,
      currency: 'usd',
      customer: @stripe_customer.id,
      payment_method: @stripe_payment_method.id
    )
  end

  def persist_to_database
    ActiveRecord::Base.transaction do
      db_customer = StripeCustomer.create!(
        stripe_id: @stripe_customer.id,
        user: user
      )

      db_payment_method = StripePaymentMethod.create!(
        stripe_id: @stripe_payment_method.id,
        stripe_customer: db_customer
      )

      StripeCharge.create!(
        stripe_id: @stripe_charge.id,
        stripe_payment_method: db_payment_method
      )
    end
  end
end
</code></code></pre><p>The transaction is now doing only what it should: coordinating a set of fast, local database writes. Lock hold time drops from ~1.5 seconds to under 10ms.</p><div><hr></div><h2><strong>&#8220;But What About Atomicity?&#8221;</strong></h2><p>This is the obvious objection. In the original pattern, if anything fails, the transaction rolls back. With the pre-transaction pattern, what happens if the API calls all succeed but then the database write fails?</p><p>It&#8217;s a fair concern, but it&#8217;s also fully solvable &#8212; and handling it explicitly is actually <em>better</em> than relying on a transaction rollback, because a rollback doesn&#8217;t undo what already happened on Stripe&#8217;s end anyway. If you made three Stripe API calls before the DB write failed, rolling back your database changes leaves you with orphaned Stripe objects. The transaction gives you a false sense of safety.</p><p>The right pattern is a structured error handling routine on the command object &#8212; something that has a specific job: clean up whatever API-side state was created if the overall operation fails. Since the Stripe responses are stored in instance variables, the error handler still has access to them:</p><pre><code><code>class SchedulePaymentCommand
  def call
    fetch_stripe_objects
    persist_to_database
  rescue =&gt; e
    handle_error(e)
    raise
  end

  private

  def fetch_stripe_objects
    @stripe_customer = Stripe::Customer.create(email: user.email)

    @stripe_payment_method = Stripe::PaymentMethod.attach(
      payment_method_id,
      customer: @stripe_customer.id
    )

    @stripe_charge = Stripe::PaymentIntent.create(
      amount: amount_in_cents,
      currency: 'usd',
      customer: @stripe_customer.id,
      payment_method: @stripe_payment_method.id
    )
  end

  def persist_to_database
    ActiveRecord::Base.transaction do
      db_customer = StripeCustomer.create!(
        stripe_id: @stripe_customer.id,
        user: user
      )
      db_payment_method = StripePaymentMethod.create!(
        stripe_id: @stripe_payment_method.id,
        stripe_customer: db_customer
      )
      StripeCharge.create!(
        stripe_id: @stripe_charge.id,
        stripe_payment_method: db_payment_method
      )
    end
  end

  def handle_error(error)
    # Cancel whatever was created on Stripe's end, if anything
    Stripe::PaymentIntent.cancel(@stripe_charge.id) if @stripe_charge
    Stripe::PaymentMethod.detach(@stripe_payment_method.id) if @stripe_payment_method
    Stripe::Customer.delete(@stripe_customer.id) if @stripe_customer

    Rails.logger.error("SchedulePaymentCommand failed: #{error.message}")
  end
end
</code></code></pre><p>The key insight: <code>handle_error</code> is a method designed to be overridden in subclasses. It&#8217;s not a catch-all &#8212; it&#8217;s the specific, intentional cleanup routine for this command. Each command knows what it created and knows how to undo it. That&#8217;s a cleaner contract than hoping a database rollback somehow undoes side effects that already happened in an external system.</p><div><hr></div><h2><strong>The Container Shutdown Problem</strong></h2><p>There&#8217;s a harder failure mode that doesn&#8217;t get talked about as much, and I want to be upfront: it&#8217;s a problem with the pre-transaction pattern specifically, but it&#8217;s also a problem with the original wrapped-transaction pattern. Moving the API calls outside the transaction doesn&#8217;t introduce it &#8212; it already existed. It just becomes more visible when you start thinking carefully about the pre-transaction step in isolation.</p><p>Here&#8217;s the scenario. You have a container running in production. A deploy kicks off, the orchestrator sends a <code>SIGTERM</code>, and the container is supposed to drain in-flight requests before shutting down. Supposed to. In practice, containers sometimes get killed before they finish draining &#8212; either because the shutdown grace period is too short, the orchestrator loses patience, or the drain logic itself has a bug.</p><p>Now imagine that kill signal arrives at exactly the wrong moment: after a Stripe call has been dispatched from the pre-transaction step, but before the response has been received and written to the database. The HTTP request is already in flight to Stripe&#8217;s servers. From Stripe&#8217;s perspective, the operation completes successfully &#8212; the customer, payment method, or charge now exists in their system. From your system&#8217;s perspective, the process is dead. The response never arrived. Nothing was committed to the database. The operation simply didn&#8217;t happen as far as your records are concerned.</p><p>This is sometimes called a &#8220;ghost&#8221; operation: a real side effect in an external system with no corresponding record in yours.</p><p>What happens next depends on how your retry logic works. If the job is re-enqueued on restart and the operation runs again without any memory of what the previous attempt created, you make the same Stripe API calls again. Without idempotency keys, Stripe treats each of these as a new, independent request. In the case of <code>Stripe::PaymentIntent.create</code>, that means two separate charges get created for the same order. The customer gets billed twice.</p><p><strong>Idempotency keys</strong> are the standard mitigation here, and Stripe supports them well. The idea is to generate a stable, deterministic key for each logical operation &#8212; typically derived from something like the order ID and the operation type &#8212; and pass it to Stripe on every call. If Stripe receives two requests with the same idempotency key within a 24-hour window, it returns the result of the first request instead of processing a new one.</p><pre><code><code>def fetch_stripe_objects
  idempotency_key = "schedule_payment_#{order.id}"

  @stripe_customer = Stripe::Customer.create(
    { email: user.email },
    { idempotency_key: "#{idempotency_key}_customer" }
  )

  @stripe_payment_method = Stripe::PaymentMethod.attach(
    payment_method_id,
    { customer: @stripe_customer.id },
    { idempotency_key: "#{idempotency_key}_payment_method" }
  )

  @stripe_charge = Stripe::PaymentIntent.create(
    {
      amount: amount_in_cents,
      currency: 'usd',
      customer: @stripe_customer.id,
      payment_method: @stripe_payment_method.id
    },
    { idempotency_key: "#{idempotency_key}_charge" }
  )
end
</code></code></pre><p>With idempotency keys in place, a retry after a botched shutdown is safe: Stripe deduplicates the calls and returns the original response objects. Your retry can then persist those results to the database as if the first attempt had never been interrupted.</p><p>But idempotency keys don&#8217;t fully solve the problem. They protect you from creating duplicate objects in Stripe, but they don&#8217;t help you recover the original response after a container death. When the retried job runs, it still calls Stripe fresh and gets a response &#8212; it just happens to be the same response as before. The window between &#8220;API call succeeded&#8221; and &#8220;result written to the database&#8221; is still a gap where a process death causes silent data loss. And depending on how you structure retries, you may not even know the first attempt ever started.</p><p>At the time of writing, we&#8217;re still working on a robust solution to this. The approaches worth exploring involve making the pre-transaction step itself more durable &#8212; writing an intent record to the database <em>before</em> making the API call, so that a retry can detect partially completed operations and reconcile them. That&#8217;s a more involved pattern, and it deserves its own writeup.</p><div><hr></div><h2><strong>The Rule</strong></h2><p>Here&#8217;s how I think about it now: <strong>a database transaction should contain only database operations.</strong> Any call that goes over a network &#8212; to Stripe, to a payment processor, to any external service &#8212; should live outside the transaction. Make all your external calls first, validate that the results look sane, then commit everything to the database in a fast, tight transaction. Handle failures explicitly with cleanup logic that knows what it actually needs to undo.</p><p>Transactions are a powerful primitive. They&#8217;re designed for coordinating local, fast, reliable operations. Stretching them to cover slow, unreliable network calls doesn&#8217;t make your system more correct &#8212; it just makes it slower and more fragile at the same time.</p>]]></content:encoded></item><item><title><![CDATA[The Missing Team: How Engineering Organizations Lose Sync With Themselves]]></title><description><![CDATA[The pod model works beautifully &#8212; until architectural debt accumulates in the space between teams. Here's the structure that closes the gap.]]></description><link>https://www.timelight.com/p/the-missing-team-how-engineering</link><guid isPermaLink="false">https://www.timelight.com/p/the-missing-team-how-engineering</guid><dc:creator><![CDATA[Peter O'Leary]]></dc:creator><pubDate>Mon, 30 Mar 2026 21:57:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0CRR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d6faae-71a7-40bd-8b1c-092d268d364b_1360x680.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There&#8217;s a deceptively healthy-looking organizational pattern that quietly breaks down in mid-sized engineering teams. It looks like this: a handful of product managers, each running a small pod of engineers, everyone moving fast, shipping product. From the outside, things are humming.</p><p>The cracks appear later. Some part of the database is straining under load you could have predicted. A shared library has three incompatible versions living in three different pods. Nobody owns the work needed to fix it, because nobody was ever asked to.</p><p>The problem isn&#8217;t the pod structure &#8212; that part works. The problem is a missing team.</p><h2><strong>How the pod model is set up</strong></h2><p>The typical structure is elegant in its simplicity. You have five or six product managers, each paired with a pod of engineers &#8212; say, five or six people, led by a tech lead. A layer of engineering management sits across those pods. Engineers report up through management but work day-to-day with their product manager.</p><p>This creates something genuinely valuable: tight product-engineering alignment at the team level. Engineers understand the &#8220;why&#8221; behind what they&#8217;re building. Product managers develop technical intuition. The pod is largely autonomous, with few dependencies on other teams.</p><p>Product orgEng. managementPM 1GrowthPM 2PlatformPM 3Core productPod 15&#8211;6 engineersPod 25&#8211;6 engineersPod 35&#8211;6 engineersSolid = product directionDashed = reporting line</p><p>The standard pod structure &#8212; effective for product velocity, but silent on cross-pod technical work</p><p>At 40&#8211;50 engineers across six pods, this is a formidable product machine. But notice what&#8217;s missing from the diagram above: there&#8217;s no regular forum where the engineers in those pods talk to each other as a technical community.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0CRR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d6faae-71a7-40bd-8b1c-092d268d364b_1360x680.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0CRR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d6faae-71a7-40bd-8b1c-092d268d364b_1360x680.png 424w, https://substackcdn.com/image/fetch/$s_!0CRR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d6faae-71a7-40bd-8b1c-092d268d364b_1360x680.png 848w, https://substackcdn.com/image/fetch/$s_!0CRR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d6faae-71a7-40bd-8b1c-092d268d364b_1360x680.png 1272w, https://substackcdn.com/image/fetch/$s_!0CRR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d6faae-71a7-40bd-8b1c-092d268d364b_1360x680.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0CRR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d6faae-71a7-40bd-8b1c-092d268d364b_1360x680.png" width="1360" height="680" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/03d6faae-71a7-40bd-8b1c-092d268d364b_1360x680.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:680,&quot;width&quot;:1360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:51073,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.timelight.com/i/192665062?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d6faae-71a7-40bd-8b1c-092d268d364b_1360x680.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_!0CRR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d6faae-71a7-40bd-8b1c-092d268d364b_1360x680.png 424w, https://substackcdn.com/image/fetch/$s_!0CRR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d6faae-71a7-40bd-8b1c-092d268d364b_1360x680.png 848w, https://substackcdn.com/image/fetch/$s_!0CRR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d6faae-71a7-40bd-8b1c-092d268d364b_1360x680.png 1272w, https://substackcdn.com/image/fetch/$s_!0CRR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d6faae-71a7-40bd-8b1c-092d268d364b_1360x680.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>The asymmetry nobody talks about</strong></h2><p>Here&#8217;s a tension baked into the pod model. The product organization is small &#8212; six people who meet regularly, coordinate roadmaps, and share context. They function as a team. The engineering organization is five or six times larger, and typically meets in fragments: each pod runs its own standups and planning, but the 40-person engineering org rarely convenes as a whole.</p><p>This isn&#8217;t a failure of management. A weekly all-hands with 40 engineers is genuinely unwieldy. But the practical consequence is that nobody is holding the cross-cutting technical picture.</p><p><strong>Where it breaks down:</strong> Shared architectural components that two pods both touch. Technical debt that doesn&#8217;t belong to any PM&#8217;s roadmap. Infrastructure that needs re-architecture to support the growth the product team has already planned for &#8212; but hasn&#8217;t told engineering about yet.</p><p>The product team has visibility into what&#8217;s coming. The pod teams have deep visibility into their own corner. No one has the full technical view. That&#8217;s the gap.</p><h2><strong>The tech lead council</strong></h2><p>The fix is a standing team of tech leads &#8212; one from each pod &#8212; meeting on the same cadence as the rest of the organization. Call it a tech lead council, an architecture forum, whatever fits your culture. The name matters less than the habit.</p><p>This team does something specific: it holds the technical picture that no individual pod can hold on its own.</p><p>In practice that means: comparing implementation approaches across pods before work diverges, identifying opportunities for shared components, surfacing technical work that needs to happen for business reasons no PM has yet named, and developing a 6&#8211;12 month technical roadmap that runs alongside the product roadmap.</p><p>Product roadmapPM team, quarterlyTech roadmapLead council, quarterlyShared planningRisk, priority, sequencingLead, pod 1Arch, debt, shared codeLead, pod 2Arch, debt, shared codeLead, pod 3Arch, debt, shared code</p><p>The tech lead council bridges pod-level execution and org-level planning</p><p>The goal is that this team&#8217;s outputs &#8212; architectural recommendations, decisions to adopt new tooling, proposals to allocate sprint capacity to debt retirement &#8212; are treated with the same weight as product requirements. That takes time to earn. The team earns it by being right consistently, by communicating their reasoning clearly, and by building a track record the rest of the organization learns to trust.</p><p><em>&#8220;At the same time you&#8217;re developing a vision of what the product will look like a year from now, you need a group of people meeting regularly to discuss what the future of your technical stack looks like.&#8221;</em></p><p>In more mature organizations, this function often migrates toward staff engineers or a principal engineering group. The exact structure depends on where the company is. What shouldn&#8217;t vary is the underlying principle: <em>technical planning must be ongoing, structured, and given organizational standing.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QSsj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220bc1d5-ba82-4eb9-b635-6b72b7c718d8_1360x580.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QSsj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220bc1d5-ba82-4eb9-b635-6b72b7c718d8_1360x580.png 424w, https://substackcdn.com/image/fetch/$s_!QSsj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220bc1d5-ba82-4eb9-b635-6b72b7c718d8_1360x580.png 848w, https://substackcdn.com/image/fetch/$s_!QSsj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220bc1d5-ba82-4eb9-b635-6b72b7c718d8_1360x580.png 1272w, https://substackcdn.com/image/fetch/$s_!QSsj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220bc1d5-ba82-4eb9-b635-6b72b7c718d8_1360x580.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QSsj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220bc1d5-ba82-4eb9-b635-6b72b7c718d8_1360x580.png" width="1360" height="580" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/220bc1d5-ba82-4eb9-b635-6b72b7c718d8_1360x580.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:580,&quot;width&quot;:1360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44908,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.timelight.com/i/192665062?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220bc1d5-ba82-4eb9-b635-6b72b7c718d8_1360x580.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_!QSsj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220bc1d5-ba82-4eb9-b635-6b72b7c718d8_1360x580.png 424w, https://substackcdn.com/image/fetch/$s_!QSsj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220bc1d5-ba82-4eb9-b635-6b72b7c718d8_1360x580.png 848w, https://substackcdn.com/image/fetch/$s_!QSsj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220bc1d5-ba82-4eb9-b635-6b72b7c718d8_1360x580.png 1272w, https://substackcdn.com/image/fetch/$s_!QSsj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220bc1d5-ba82-4eb9-b635-6b72b7c718d8_1360x580.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Team-ness at every level</strong></h2><p>There&#8217;s a broader pattern here, one that applies not just to tech leads but to every layer of the organization. The most effective teams aren&#8217;t collections of individuals each reporting to a shared manager. They&#8217;re actual teams &#8212; people with shared goals who work together on the business of their level, not just up and down their individual reporting lines.</p><p>One CEO put it well to his executive team: &#8220;You&#8217;re not six people who each report to me. You&#8217;re a team, and I&#8217;m the lead of that team.&#8221; The consequence was that most decisions got made and executed by the team, without the CEO needing to be in the room. Issues came to the weekly meeting; only the things that required a tiebreaker or an especially consequential call escalated further.</p><p>The same logic applies at the tech lead level. If those leads see themselves as a team &#8212; not just representatives of their respective pods attending a meeting &#8212; they&#8217;ll make better architectural decisions, resolve cross-pod tensions more quickly, and present a more coherent technical direction to the rest of the organization.</p><h2><strong>Putting it into practice</strong></h2><p>None of this requires a reorg. It requires one standing meeting, a clear mandate, and leadership willing to treat the outputs as real inputs to planning. Start with the tech leads meeting biweekly. Give them a simple agenda: what architectural work is each pod planning this sprint, is any of it shared, and what technical work needs to happen in the next six months that isn&#8217;t on any PM&#8217;s roadmap yet.</p><p>The meeting will feel unfocused at first. Give it three months. By then, the leads will have developed shared context, a working vocabulary, and a sense of what they can resolve themselves versus what needs to escalate. That&#8217;s when the value shows up &#8212; not in a single decision, but in a dozen small ones that don&#8217;t require a VP to broker.</p><p>The pod model gives you product velocity. The tech lead council gives you the architectural coherence to sustain it. You need both.</p>]]></content:encoded></item><item><title><![CDATA[Innovation vs. The Quarter]]></title><description><![CDATA[A Long View From 40 Years in Software]]></description><link>https://www.timelight.com/p/innovation-vs-the-quarter</link><guid isPermaLink="false">https://www.timelight.com/p/innovation-vs-the-quarter</guid><dc:creator><![CDATA[Peter O'Leary]]></dc:creator><pubDate>Thu, 05 Feb 2026 23:58:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YWrS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb99bd652-da53-42ed-a55e-2d744825b23d_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YWrS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb99bd652-da53-42ed-a55e-2d744825b23d_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YWrS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb99bd652-da53-42ed-a55e-2d744825b23d_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!YWrS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb99bd652-da53-42ed-a55e-2d744825b23d_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!YWrS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb99bd652-da53-42ed-a55e-2d744825b23d_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!YWrS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb99bd652-da53-42ed-a55e-2d744825b23d_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YWrS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb99bd652-da53-42ed-a55e-2d744825b23d_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b99bd652-da53-42ed-a55e-2d744825b23d_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&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_!YWrS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb99bd652-da53-42ed-a55e-2d744825b23d_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!YWrS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb99bd652-da53-42ed-a55e-2d744825b23d_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!YWrS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb99bd652-da53-42ed-a55e-2d744825b23d_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!YWrS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb99bd652-da53-42ed-a55e-2d744825b23d_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>I&#8217;ve been a professional software developer for almost 40 years. I&#8217;ve spent more than 30 of those years as an engineering manager and executive &#8212; CTO, VP of Engineering &#8212; watching the industry evolve through multiple generations of technology.</p><p>I started in the era of packaged software. We put programs on disks, sealed them in boxes, and sold them in stores. Then came client-server development. Then the web. Then mobile. Then social media. And now AI.</p><p>Across all of those waves, Silicon Valley &#8212; and American technology companies more broadly &#8212; have led the world in innovation. We&#8217;ve built new categories of products, created massive global businesses, and changed how people live and work.</p><p>But over the last 10 to 20 years, as companies have grown bigger, richer, and more powerful, I&#8217;ve watched the same tragic pattern repeat itself over and over again.</p><p>We invent something world-changing &#8212; and then we immediately chain it to the quarterly result.</p><h4>The Moment Innovation Gets Constrained</h4><p>The cycle is predictable.</p><p>A company builds a new technology. It proves itself commercially viable. Customers love it. The product begins to change the world in real, meaningful ways.</p><p>And almost immediately, the organization clamps down on it to satisfy Wall Street expectations.</p><p>The long-term vision that drove the innovation &#8212; the idea that we were building something transformative &#8212; starts to narrow. The horizon shrinks. Instead of asking what the technology could become in five or ten years, leadership becomes focused on how it performs next quarter.</p><p>The spirit of innovation doesn&#8217;t disappear. Engineers and product teams still believe in the big ideas. But structurally, the company shifts from exploration to extraction.</p><h4>Shipping Too Early: The First Self-Inflicted Wound</h4><p>One of the worst mistakes a company can make is bringing a product to market before it is ready.</p><p>I&#8217;ve seen this happen many times. A promising idea gets rushed out the door because leadership wants momentum, headlines, or revenue sooner rather than later. The result is predictable: customers become frustrated, trust erodes, and the original promise of the product gets overshadowed by early negative experiences.</p><p>Good ideas have been ruined this way.</p><p>There is a difference between iterating quickly and shipping prematurely. Healthy iteration builds confidence and improves quality. Premature release creates a reputation that can follow a product for years, even after it improves.</p><p>The pressure to meet quarterly expectations often accelerates this mistake. When timelines are driven by financial cycles rather than product maturity, teams lose the space needed to refine and stabilize what they&#8217;re building.</p><h4>When Entire Technologies Get Distorted</h4><p>There&#8217;s an even more dangerous version of this pattern: trying to extract too much value from a new technology before it has fully matured.</p><p>In those cases, it&#8217;s not just customer frustration that&#8217;s at risk &#8212; the entire category of technology can become warped by premature monetization and short-term incentives.</p><p>Social media is a powerful example.</p><p>Many early platforms carried a genuine promise: connecting people across distance, fostering conversation, and creating new forms of community. There was a sense that these systems could become forums for constructive discourse and shared understanding.</p><p>But once the pressure to maximize engagement and revenue intensified, the incentives changed. Feeds filled with ads. Algorithms optimized for attention rather than well-being. Doom scrolling replaced meaningful interaction. Online trolling and bullying became amplified rather than mitigated.</p><p>The technology itself wasn&#8217;t inherently flawed. The way value was extracted from it &#8212; too early, too aggressively, and too narrowly focused on growth metrics &#8212; reshaped the category into something far different from its original vision.</p><h4>Heads Down, Eyes Off the Horizon</h4><p>Once a company ties its identity to quarterly performance, something subtle changes in how decisions get made.</p><p>Roadmaps compress. Risk tolerance drops. Long-term investments become harder to justify. Teams spend more time optimizing metrics than imagining possibilities.</p><p>I&#8217;ve seen organizations put blinders on &#8212; not because people stopped caring about innovation, but because the system incentivized short-term predictability over long-term transformation.</p><p>Every year, plans are built around hitting numbers. Miss the numbers, and the market punishes you. The stock price drops. Investors look for a new CEO who promises tighter execution and faster results.</p><p>Over time, this creates a culture where innovation is tolerated only if it can be forecasted on a spreadsheet.</p><h4>The Long Game vs. The Quarter</h4><p>It&#8217;s impossible to ignore the global context. Over the course of my career, China has emerged as a technology powerhouse.</p><p>Yes, some technologies originated here in the United States. Some were copied or adapted. But what stands out to me is not just what was built &#8212; it&#8217;s how long-term strategy was applied.</p><p>Chinese companies, from my perspective, have often played a longer game. They invest in infrastructure, ecosystems, and platforms with a time horizon that extends beyond the next earnings call.</p><p>That doesn&#8217;t mean they ignore financial performance &#8212; every business has to survive economically. But there is a visible willingness to think in decades rather than quarters.</p><p>Meanwhile, American companies frequently limit themselves with what is, in many ways, a self-imposed constraint: the belief that innovation must immediately translate into quarterly revenue growth.</p><h4>A Made-Up Constraint</h4><p>The quarterly cycle is not a law of physics. It&#8217;s a financial construct &#8212; one that has grown powerful enough to shape how entire industries behave.</p><p>And I&#8217;ve watched it hobble companies that were once bold.</p><p>As soon as a technology begins to succeed, it becomes less about building the future and more about protecting the number. Engineering decisions shift. Product strategy shifts. Risk appetite narrows. The organization becomes less willing to invest in ideas that might not pay off immediately.</p><p>Over decades, that pattern has had a real impact on how technology evolves, especially inside successful companies that should have the most freedom to take long bets.</p><h4>What Gets Lost</h4><p>What&#8217;s frustrating is that the innovative spirit never fully disappears. The engineers are still there. The ideas are still there. The ambition is still there.</p><p>But the structure around them changes.</p><p>Instead of asking, &#8220;How big could this become?&#8221; the question becomes, &#8220;How does this help us hit next quarter?&#8221;</p><p>And that&#8217;s where the real loss happens &#8212; not in talent or creativity, but in time horizon.</p><p>After nearly four decades in software, I don&#8217;t believe the challenge is a lack of innovation in the United States. We are still extraordinarily good at inventing the future.</p><p>The challenge is that we often stop ourselves from fully realizing it.</p><p>We build something transformative &#8212; and then we shrink our vision to fit inside a quarterly report.</p>]]></content:encoded></item><item><title><![CDATA[The Most Dangerous Incentive in Growing Engineering Organizations]]></title><description><![CDATA[Undermining organizational culture with visibility bias]]></description><link>https://www.timelight.com/p/the-most-dangerous-incentive-in-growing</link><guid isPermaLink="false">https://www.timelight.com/p/the-most-dangerous-incentive-in-growing</guid><dc:creator><![CDATA[Peter O'Leary]]></dc:creator><pubDate>Thu, 05 Feb 2026 15:18:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6Wzg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8667eb-ba1a-4e93-9851-ed012ac6f937_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6Wzg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8667eb-ba1a-4e93-9851-ed012ac6f937_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6Wzg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8667eb-ba1a-4e93-9851-ed012ac6f937_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!6Wzg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8667eb-ba1a-4e93-9851-ed012ac6f937_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!6Wzg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8667eb-ba1a-4e93-9851-ed012ac6f937_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!6Wzg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8667eb-ba1a-4e93-9851-ed012ac6f937_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6Wzg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8667eb-ba1a-4e93-9851-ed012ac6f937_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ff8667eb-ba1a-4e93-9851-ed012ac6f937_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&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_!6Wzg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8667eb-ba1a-4e93-9851-ed012ac6f937_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!6Wzg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8667eb-ba1a-4e93-9851-ed012ac6f937_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!6Wzg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8667eb-ba1a-4e93-9851-ed012ac6f937_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!6Wzg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8667eb-ba1a-4e93-9851-ed012ac6f937_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Every loves a good product feature discussion</figcaption></figure></div><p>I&#8217;ve been a professional software engineer for almost 30 years. Over that time I&#8217;ve served as a manager, engineering leader, VP of Engineering, and CTO across organizations ranging from small startups to companies the size of IBM. Watching engineering organizations grow from small teams into large, complex systems has given me a long view into how culture and incentives evolve &#8212; and sometimes break.</p><p>One of the most destructive tendencies I&#8217;ve seen develop over time is surprisingly subtle: engineers begin to believe that the only way to advance their careers is to work on the most visible, most successful products inside the company.</p><p>At first glance, that seems reasonable. Of course people want to work on the products that generate revenue, attract executive attention, and shape the company&#8217;s public identity. But inside a modern software organization, that instinct can quietly undermine the long-term health of the entire engineering system.</p><h4>Visibility Bias Inside Engineering Organizations</h4><p>Even in companies that technically have a single product &#8212; especially SaaS organizations &#8212; different parts of the system receive vastly different levels of visibility. The UI, the client experience, and customer-facing features are seen by marketing, sales, executives, and customers every day. Those parts of the system become the center of attention.</p><p>Engineers naturally gravitate toward that visibility. It feels like the place where careers are made.</p><p>But modern software systems are far larger than what users see. Reliability engineering, infrastructure, fraud mitigation, security, risk management, customer support tooling &#8212; these areas operate behind the scenes. They are less glamorous, less visible, and often harder to explain to non-technical stakeholders. Yet they are just as critical to a company&#8217;s success as the features that generate revenue.</p><p>When incentives drift toward visibility instead of system health, organizations slowly become unbalanced.</p><h4>From Boxed Software to Web Systems: A Cultural Shift</h4><p>Early in my career, I worked on packaged desktop software &#8212; the kind that shipped in boxes on store shelves. In those environments, nearly every engineer worked on the same deliverable. The entire team focused on what would go into the box.</p><p>As the industry shifted toward web-based systems, and later toward mobile and distributed architectures, that unity disappeared. Engineering work fragmented into layers: front-end, mobile, APIs, infrastructure, data systems, security, and operational tooling.</p><p>The engineers working on the visible layers received more attention from across the company. Sales teams, marketing teams, and executives could see the UI. They could interact with it directly. Naturally, conversations gravitated there.</p><p>Meanwhile, the backend systems grew larger, more complex, and more essential &#8212; but less visible.</p><p>That imbalance created a cultural gravity well.</p><h4>The Executive Table and the Hidden Work</h4><p>When I moved into leadership roles and eventually sat at executive tables, I saw this bias amplified. Entire executive teams would discuss what the product looked like, how it behaved for customers, and which features were driving growth. Those conversations were important &#8212; but someone had to worry about how the system actually ran.</p><p>More often than not, that responsibility fell to the engineering leader alone.</p><p>Over time, I found myself investing more attention in infrastructure, reliability, and backend architecture &#8212; not because it was more interesting, but because it was necessary. The health of the company depended on systems that most people in the room couldn&#8217;t see.</p><p>This is where many organizations struggle: how do you convince engineers to invest their careers in parts of the system that receive less external recognition?</p><h4>Why the &#8220;Best Product&#8221; Mentality Is Dangerous</h4><p>When engineers believe promotions come from working on the most visible product areas, several problems emerge:</p><p>&#8211; Critical infrastructure roles become harder to staff.<br>&#8211; Reliability and security work become reactive instead of proactive.<br>&#8211; Organizational knowledge becomes skewed toward features rather than systems.<br>&#8211; Long-term risk accumulates quietly beneath short-term success.</p><p>Modern architectures make this especially dangerous. Backend systems are no longer simple servers running behind a UI. They include distributed services, data pipelines, observability platforms, and compliance layers that grow more complex every year.</p><p>Ignoring these areas doesn&#8217;t make them less important &#8212; it makes them fragile.</p><h4>Engineering Leadership as Incentive Design</h4><p>The challenge for engineering leaders has always been incentive alignment.</p><p>You cannot promote engineers faster or compensate them more simply because they work on the UI or on the product areas that executives see most often. If the incentive structure favors visibility over impact, engineers will optimize for visibility every time.</p><p>Instead, organizations need to reward outcomes that reflect true system health:</p><p>&#8211; System uptime and reliability<br>&#8211; Backend performance and scalability<br>&#8211; Risk mitigation and fraud prevention<br>&#8211; Operational excellence and maintainability</p><p>These achievements are harder to measure and often less glamorous, but they are the foundation that allows visible products to succeed.</p><p>In my own leadership journey, I tried to make infrastructure and backend work a first-class path to growth. That meant recognizing engineers publicly for reliability improvements, tying performance reviews to system outcomes rather than feature count, and ensuring that compensation and promotion paths reflected the value of invisible work.</p><h4>Aligning Culture With Reality</h4><p>The deeper lesson is simple: culture follows incentives.</p><p>If engineering organizations reward visibility, engineers will chase visibility. If they reward stability, collaboration, and long-term system health, engineers will invest in those areas instead.</p><p>The goal is not to diminish UI or product innovation &#8212; those are essential to any company&#8217;s success. But a sustainable engineering culture recognizes that the parts of the system no one sees are often the ones that determine whether the company survives.</p><p>After three decades in engineering, one truth has become clear to me: the strongest organizations are not the ones where everyone wants to work on the most successful product.</p><p>They are the ones where engineers understand that success comes from building &#8212; and valuing &#8212; the entire system.</p>]]></content:encoded></item><item><title><![CDATA[Lower the Estate Tax Exemption to Wipe Out the US National Debt]]></title><description><![CDATA[The U.S.]]></description><link>https://www.timelight.com/p/lower-the-estate-tax-exemption-to</link><guid isPermaLink="false">https://www.timelight.com/p/lower-the-estate-tax-exemption-to</guid><dc:creator><![CDATA[Peter O'Leary]]></dc:creator><pubDate>Tue, 13 Jan 2026 23:44:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jqrQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd552c030-6c64-4fe5-bbb3-6bbc97942562_1600x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The U.S. national debt is often treated as an unsolvable problem&#8212;too large, too abstract, too politically toxic to touch. At nearly forty trillion dollars, the number feels disconnected from everyday reality.</p><p>But the debt only looks impossible in isolation.</p><p>When you place it next to where American wealth actually resides, a very different picture appears. Not a simple solution&#8212;but a real one, with real tradeoffs.</p><div><hr></div><h2>The Scale of the Problem (and the Wealth)</h2><p>As of late 2025, total U.S. federal debt stands at roughly <strong>$38 trillion</strong>. Of that amount, about <strong>$31 trillion</strong> is <em>debt held by the public</em>&#8212;Treasury securities owned by investors, institutions, and foreign governments. This is the portion economists usually focus on, because it represents external obligations.</p><p>Now compare that with Baby Boomer wealth.</p><p>Americans born between 1946 and 1964 collectively hold about <strong>$83 trillion</strong> in net wealth&#8212;more than <strong>half of all U.S. household wealth</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jqrQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd552c030-6c64-4fe5-bbb3-6bbc97942562_1600x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jqrQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd552c030-6c64-4fe5-bbb3-6bbc97942562_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!jqrQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd552c030-6c64-4fe5-bbb3-6bbc97942562_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!jqrQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd552c030-6c64-4fe5-bbb3-6bbc97942562_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!jqrQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd552c030-6c64-4fe5-bbb3-6bbc97942562_1600x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jqrQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd552c030-6c64-4fe5-bbb3-6bbc97942562_1600x1000.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d552c030-6c64-4fe5-bbb3-6bbc97942562_1600x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:52781,&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.timelight.com/i/184489154?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd552c030-6c64-4fe5-bbb3-6bbc97942562_1600x1000.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_!jqrQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd552c030-6c64-4fe5-bbb3-6bbc97942562_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!jqrQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd552c030-6c64-4fe5-bbb3-6bbc97942562_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!jqrQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd552c030-6c64-4fe5-bbb3-6bbc97942562_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!jqrQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd552c030-6c64-4fe5-bbb3-6bbc97942562_1600x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Baby Boomer wealth exceeds both total U.S. federal debt and debt held by the public. The constraint is not national wealth, but how and when it is taxed.</em></figcaption></figure></div><p>This comparison changes the framing. The United States is not &#8220;broke.&#8221; The money exists. It is simply concentrated and lightly taxed at the point of transfer.</p><div><hr></div><h2>Average vs. Median: Why This Matters</h2><p>Wealth among Boomers is highly uneven:</p><ul><li><p><strong>Average (mean) net worth:</strong> roughly <strong>$1.2&#8211;$1.7 million</strong></p></li><li><p><strong>Median net worth:</strong> roughly <strong>$200,000&#8211;$400,000</strong></p></li></ul><p>This distinction matters because estate taxes apply only to the top of the distribution. Most Americans&#8212;and most Boomers&#8212;are nowhere near today&#8217;s exemption thresholds.</p><div><hr></div><h2>How the Estate Tax Works Today</h2><ul><li><p><strong>Top federal estate tax rate:</strong> 40%</p></li><li><p><strong>Estate tax exemption:</strong> ~$14&#8211;15 million per individual</p></li><li><p><strong>Share of estates that pay:</strong> fewer than <strong>0.2%</strong></p></li></ul><p>Despite an unprecedented intergenerational wealth transfer already underway, the estate tax raises relatively little revenue.</p><div><hr></div><h2>A Simple Thought Experiment</h2><p>To understand scale&#8212;not to propose a literal policy&#8212;consider a simplified model:</p><p><strong>Assumptions (for illustration only):</strong></p><ul><li><p>Total Boomer wealth: ~$83T</p></li><li><p>Estate tax rate: 40%</p></li><li><p>Wealth above an exemption is taxed once, over time</p></li><li><p>Ignore avoidance, deductions, timing, and behavior</p></li></ul><p>This is not how policy works. It is a measuring tool.</p><div><hr></div><h2>Could Boomer Wealth Retire the National Debt?</h2><ul><li><p><strong>Total gross debt (~$38T):</strong><br>Even taxing all Boomer wealth at 40% raises only ~$33T &#8594; <em>not enough</em>.</p></li><li><p><strong>Debt held by the public (~$31T):</strong><br>Mathematically achievable at a 40% rate with a very low exemption.</p></li></ul><p>The math shows <em>capacity</em>. But math alone is not policy.</p><div><hr></div><h2>The Overlooked Question: Would This Be Deflationary?</h2><p>Yes&#8212;<strong>by default</strong>, retiring all or most of the national debt would be <strong>deflationary</strong>.</p><p>This is where many &#8220;just pay it off&#8221; arguments quietly collapse.</p><p>Paying down federal debt removes financial assets from the private sector. Treasury securities are not just liabilities&#8212;they are core infrastructure of the financial system.</p><div><hr></div><h2>How Fast Matters More Than Whether</h2><p>The economic risk depends almost entirely on <strong>speed</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1avr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99f5bd-9a5d-4df1-86bd-770b56c6e09c_1600x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1avr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99f5bd-9a5d-4df1-86bd-770b56c6e09c_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!1avr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99f5bd-9a5d-4df1-86bd-770b56c6e09c_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!1avr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99f5bd-9a5d-4df1-86bd-770b56c6e09c_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!1avr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99f5bd-9a5d-4df1-86bd-770b56c6e09c_1600x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1avr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99f5bd-9a5d-4df1-86bd-770b56c6e09c_1600x1000.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ea99f5bd-9a5d-4df1-86bd-770b56c6e09c_1600x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:46290,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.timelight.com/i/184489154?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99f5bd-9a5d-4df1-86bd-770b56c6e09c_1600x1000.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_!1avr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99f5bd-9a5d-4df1-86bd-770b56c6e09c_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!1avr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99f5bd-9a5d-4df1-86bd-770b56c6e09c_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!1avr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99f5bd-9a5d-4df1-86bd-770b56c6e09c_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!1avr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99f5bd-9a5d-4df1-86bd-770b56c6e09c_1600x1000.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Retiring debt too quickly creates a powerful fiscal drag, increasing deflation and recession risk unless offset by spending or monetary easing....</figcaption></figure></div><p>What this chart shows:</p><ul><li><p>A <strong>slow payoff</strong> (~0.5T/year) creates manageable drag</p></li><li><p>A <strong>moderate payoff</strong> (~1T/year) is meaningfully contractionary</p></li><li><p>A <strong>fast payoff</strong> (~2T/year) risks recession and financial stress</p></li></ul><div><hr></div><h2>Three Payoff Paths</h2><h3>1. Fast Payoff (High Risk)</h3><p>Aggressive estate taxation and rapid debt retirement.</p><p><strong>Likely outcome:</strong><br>Strong deflationary pressure, tighter credit, recession risk.</p><div><hr></div><h3>2. Phased Payoff With Offsets</h3><p>Gradual debt reduction over decades, paired with:</p><ul><li><p>Public investment</p></li><li><p>Tax cuts elsewhere</p></li><li><p>Monetary accommodation</p></li></ul><p><strong>Likely outcome:</strong><br>Debt declines without choking demand.</p><div><hr></div><h3>3. Partial Payoff (Most Stable Option)</h3><p>Reduce debt <em>relative to GDP</em>, not to zero, while preserving a deep Treasury market.</p><p><strong>Likely outcome:</strong><br>Lower long-term fiscal risk without destabilizing the system.</p><div><hr></div><h2>The Deeper Insight</h2><p>The national debt is not like household debt.</p><p>From a macroeconomic perspective, it represents the <strong>net financial assets of the private sector</strong>. Eliminating it entirely would mean fewer safe assets, tighter credit, and less financial flexibility.</p><p>The goal should not be <em>zero debt</em>, but the <strong>right amount of debt</strong>, sensibly balanced against private inherited wealth.</p><div><hr></div><h2>Final Thought</h2><p>Over the coming decades, Baby Boomers will pass on <strong>more than $80 trillion</strong> in wealth.</p><p>We will choose:</p><ul><li><p>To fund the future through <strong>inheritance</strong>, or</p></li><li><p>To fund it through <strong>debt</strong></p></li></ul><p>Lowering the estate tax exemption would not magically solve everything. But it would force an honest reckoning with how wealth, risk, and responsibility are shared across generations.</p><p>The debt exists.<br>The wealth exists.<br>What remains is deciding <strong>which one we want to pass on</strong>.</p>]]></content:encoded></item><item><title><![CDATA[Carrots for Breakfast]]></title><description><![CDATA[Creative writing assignment #1]]></description><link>https://www.timelight.com/p/escalator</link><guid isPermaLink="false">https://www.timelight.com/p/escalator</guid><dc:creator><![CDATA[Peter O'Leary]]></dc:creator><pubDate>Sat, 04 Oct 2025 15:54:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!t21B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2594e309-65a5-4888-9dfe-f197de399612_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t21B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2594e309-65a5-4888-9dfe-f197de399612_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t21B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2594e309-65a5-4888-9dfe-f197de399612_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!t21B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2594e309-65a5-4888-9dfe-f197de399612_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!t21B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2594e309-65a5-4888-9dfe-f197de399612_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!t21B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2594e309-65a5-4888-9dfe-f197de399612_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t21B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2594e309-65a5-4888-9dfe-f197de399612_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2594e309-65a5-4888-9dfe-f197de399612_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&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_!t21B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2594e309-65a5-4888-9dfe-f197de399612_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!t21B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2594e309-65a5-4888-9dfe-f197de399612_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!t21B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2594e309-65a5-4888-9dfe-f197de399612_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!t21B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2594e309-65a5-4888-9dfe-f197de399612_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">2 carrots for breakfast with coffee</figcaption></figure></div><p>Carina is a 20 something broke, exhausted professional living alone in a tiny one room mid-Manhattan apartment. Her apartment is so small and cramped that her parrot Bart has more room in his <strong>cage</strong> than Carina does. </p><p>For someone so young and seemingly successful, Carina has never figured out how to correctly use an alarm clock to get herself to her subway train by 9:00am. She&#8217;s tried every conceivable <strong>trick</strong> over the years but nothing has worked and now she is still in bed asleep at 8:55am.</p><p>The sun is shining through the partially opened curtains and a narrow beam of sunlight pokes through into the room. The sunlight falls on Carina&#8217;s face, she yawns, stretch herself gently while the <strong>memory</strong> of a pleasant dream rolls around her head until her eyes snap open suddenly.</p><p>She casts her eyes around the apartment, she can&#8217;t even be sure where she put her alarm clock but she is certain that she is late again. Carina screws her eyes shut for a moment, she wants so much to go back to sleep and <strong>pretend</strong> this isn&#8217;t happening again.</p><p>She has been late so many times she is sure this time she will lose her job. She jumps out of bed, dashing across the room to her closet to get dressed but trips and falls over the only <strong>appliance</strong> in her place, a little refrigerator.</p><p>&#8220;You could have just asked me to wake you up Carina&#8221;, says Bart. Bart has never spoken before. Carina is so stunned she lays on the floor for a few moments before opening the fridge and giving Bart the only thing she finds in there: an old <strong>carrot</strong>.</p><p>It&#8217;s a rather lovely morning in the city Carina thinks when she reaches the street via the back stairwell. She has a second to check her looks in the reflection of the subway car window before she jumps <strong>aboard</strong>. </p>]]></content:encoded></item><item><title><![CDATA[Immortality, Expansion, and the Dark Forest]]></title><description><![CDATA[I recently revisited Isaac Asimov&#8217;s short story The Last Question. Without spoiling too much, it explores the fate of the universe and humanity&#8217;s place in it. The story traces the arc of human civilization: from living alongside artificial intelligence, to merging with it, to eventually spreading among the stars and populating entire galaxies.]]></description><link>https://www.timelight.com/p/immortality-expansion-and-the-dark</link><guid isPermaLink="false">https://www.timelight.com/p/immortality-expansion-and-the-dark</guid><dc:creator><![CDATA[Peter O'Leary]]></dc:creator><pubDate>Sun, 21 Sep 2025 22:53:18 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1526666923127-b2970f64b422?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxhbGllbnN8ZW58MHx8fHwxNzU4NDk0OTI2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1526666923127-b2970f64b422?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxhbGllbnN8ZW58MHx8fHwxNzU4NDk0OTI2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1526666923127-b2970f64b422?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxhbGllbnN8ZW58MHx8fHwxNzU4NDk0OTI2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1526666923127-b2970f64b422?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxhbGllbnN8ZW58MHx8fHwxNzU4NDk0OTI2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1526666923127-b2970f64b422?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxhbGllbnN8ZW58MHx8fHwxNzU4NDk0OTI2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1526666923127-b2970f64b422?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxhbGllbnN8ZW58MHx8fHwxNzU4NDk0OTI2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1526666923127-b2970f64b422?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxhbGllbnN8ZW58MHx8fHwxNzU4NDk0OTI2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="4928" height="3280" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1526666923127-b2970f64b422?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxhbGllbnN8ZW58MHx8fHwxNzU4NDk0OTI2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3280,&quot;width&quot;:4928,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;gray satellite disc on field&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="gray satellite disc on field" title="gray satellite disc on field" srcset="https://images.unsplash.com/photo-1526666923127-b2970f64b422?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxhbGllbnN8ZW58MHx8fHwxNzU4NDk0OTI2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1526666923127-b2970f64b422?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxhbGllbnN8ZW58MHx8fHwxNzU4NDk0OTI2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1526666923127-b2970f64b422?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxhbGllbnN8ZW58MHx8fHwxNzU4NDk0OTI2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1526666923127-b2970f64b422?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxhbGllbnN8ZW58MHx8fHwxNzU4NDk0OTI2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@wizwow">Donald Giannatti</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>I recently revisited Isaac Asimov&#8217;s short story <em>The Last Question</em>. Without spoiling too much, it explores the fate of the universe and humanity&#8217;s place in it. The story traces the arc of human civilization: from living alongside artificial intelligence, to merging with it, to eventually spreading among the stars and populating entire galaxies.</p><p>Running through the narrative is a powerful theme: human survival. Asimov asks whether, given humanity&#8217;s relentless expansion, there will always be enough resources to sustain us &#8212; no matter what form we take.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.timelight.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! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>At one point, Asimov describes a future where humans have achieved a kind of immortality. Consciousness is separated from the body, the body is perfectly preserved, and death is no longer possible. This liberation of consciousness allows humanity to exist and act indefinitely.</p><p>That idea made me think of Liu Cixin&#8217;s <em>The Dark Forest</em>, the second book in his <em>Three-Body Problem</em> trilogy. Its &#8220;dark forest theory&#8221; offers one of the most chilling answers to the Fermi Paradox &#8212; the question of why, in such a vast and ancient universe, we have never encountered alien life.</p><p>The dark forest theory suggests that the universe is teeming with intelligent civilizations, but that every civilization is both a potential threat and a potential target. Because resources are finite, any species that expands unchecked could one day endanger others. As a result, the safest strategy for any intelligent lifeform is to eliminate other civilizations as soon as they detect them.</p><p>The metaphor is that the universe is a dark forest. Every civilization is a hunter, moving silently through the woods. The moment one becomes aware of another, its survival instincts demand that it attack before it is attacked.</p><p>But Asimov&#8217;s vision raises an interesting challenge to this grim worldview. If a civilization achieves immortality &#8212; true immortality &#8212; does it still need to reproduce and expand? Reproduction is, in a way, a biological strategy for achieving immortality by passing on DNA. But if individuals never die, reproduction becomes unnecessary.</p><p>A species that no longer needs to reproduce would also no longer expand at the same rate, and its resource needs could eventually stabilize. In that scenario, such a civilization might no longer feel compelled to destroy potential competitors.</p><p>Of course, there&#8217;s another possibility: immortal civilizations might still feel threatened by species that <em>are</em> reproducing and expanding, and thus act as the &#8220;hunters&#8221; in the dark forest &#8212; wiping out younger species before they grow too large.</p><p>This interplay between immortality, reproduction, and survival opens up fascinating philosophical questions. Is endless expansion inevitable? Or could the path to universal peace lie in transcending the need to reproduce at all?</p><p>I highly recommend reading both Asimov&#8217;s <em>The Last Question</em> and Liu Cixin&#8217;s <em>The Dark Forest</em>. Together, they offer two very different but deeply thought-provoking visions of humanity&#8217;s future &#8212; and the universe we inhabit.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>This post was voice recorded, transcribed with speech to text then cleaned up with ChatGPT</p></div></div>]]></content:encoded></item><item><title><![CDATA[When You Don’t Need the Last Word]]></title><description><![CDATA[A Reflection on Growth, Ego, and Workplace Politics]]></description><link>https://www.timelight.com/p/when-you-dont-need-the-last-word</link><guid isPermaLink="false">https://www.timelight.com/p/when-you-dont-need-the-last-word</guid><dc:creator><![CDATA[Peter O'Leary]]></dc:creator><pubDate>Wed, 21 May 2025 21:31:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YFpz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c890c2-2e93-423f-a286-1667dd8efd8c_7936x5291.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_!YFpz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c890c2-2e93-423f-a286-1667dd8efd8c_7936x5291.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YFpz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c890c2-2e93-423f-a286-1667dd8efd8c_7936x5291.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YFpz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c890c2-2e93-423f-a286-1667dd8efd8c_7936x5291.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YFpz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c890c2-2e93-423f-a286-1667dd8efd8c_7936x5291.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YFpz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c890c2-2e93-423f-a286-1667dd8efd8c_7936x5291.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YFpz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c890c2-2e93-423f-a286-1667dd8efd8c_7936x5291.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/28c890c2-2e93-423f-a286-1667dd8efd8c_7936x5291.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12910998,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://peteoleary.substack.com/i/163967297?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c890c2-2e93-423f-a286-1667dd8efd8c_7936x5291.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YFpz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c890c2-2e93-423f-a286-1667dd8efd8c_7936x5291.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YFpz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c890c2-2e93-423f-a286-1667dd8efd8c_7936x5291.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YFpz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c890c2-2e93-423f-a286-1667dd8efd8c_7936x5291.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YFpz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c890c2-2e93-423f-a286-1667dd8efd8c_7936x5291.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.timelight.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.timelight.com/subscribe?"><span>Subscribe now</span></a></p><p>Something interesting happened to me recently during a staff meeting. It was a strategic discussion among senior engineering leaders, including my boss and several colleagues. We were talking about a new product development initiative&#8212;an area where the company had previously invested effort, but ultimately canceled the earlier project. I was part of that original effort, so I have some history with both the domain and the engineering team that worked on it.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p>Given my background, I offered my thoughts on how we might want to approach the internal conversations surrounding this new initiative. I emphasized the importance of involving and aligning with the broader organization as we move forward.</p><p>Then a newer colleague responded. His reaction made it clear that he didn&#8217;t agree with my take. In fact, he offered an alternative approach with a tone that came across as a bit dismissive and somewhat self-important. You know the kind: someone hears your perspective and immediately offers what sounds like a more &#8220;enlightened&#8221; way to handle the situation&#8212;something higher-minded, more strategic, more polished.</p><p>In the past, I would&#8217;ve felt the need to respond. To correct him. To clarify that I <em>had</em> considered that approach, or to explain why it might not be as straightforward as he seemed to think. I would have wanted to make sure I didn&#8217;t look like I missed something&#8212;or worse, let him have the last word.</p><p>But this time, I didn&#8217;t.</p><p>Instead, I sat with it. I let it pass.</p><p>Partly because I&#8217;m learning that in more political environments, timing and discretion matter. But mostly because I realized something deeper: I don&#8217;t need to correct every misunderstanding. I don&#8217;t need to defend every nuance of my thinking. And I certainly don&#8217;t need to prove that I&#8217;m the smartest person in the room.</p><p>If my colleague chooses to jump to conclusions about my perspective&#8212;if he assumes that my brief comment was the extent of my insight&#8212;that&#8217;s on him. If he decides not to engage further with someone who has experience and context he doesn&#8217;t yet have, that&#8217;s his mistake to make.</p><p>And I don&#8217;t need to stop him from making it.</p><p>Instead, I can take note. I can proceed accordingly. I can save my energy for when it matters most&#8212;and trust that the value I bring speaks for itself over time.</p><p>There&#8217;s power in restraint. In letting someone else have the last word&#8212;not because you lost the argument, but because you&#8217;ve already won something more important: perspective.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>This post was voice recorded, transcribed with speech to text then cleaned up with ChatGPT</p></div></div>]]></content:encoded></item><item><title><![CDATA[Made Up Delivery Dates]]></title><description><![CDATA[Thinking about entrepreneurship and delivering products on time]]></description><link>https://www.timelight.com/p/made-up-delivery-dates</link><guid isPermaLink="false">https://www.timelight.com/p/made-up-delivery-dates</guid><dc:creator><![CDATA[Peter O'Leary]]></dc:creator><pubDate>Wed, 21 May 2025 21:30:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ubsa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b99ddf1-2afc-466f-aa83-fab62bb94bee_6000x4000.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_!ubsa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b99ddf1-2afc-466f-aa83-fab62bb94bee_6000x4000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ubsa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b99ddf1-2afc-466f-aa83-fab62bb94bee_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ubsa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b99ddf1-2afc-466f-aa83-fab62bb94bee_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ubsa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b99ddf1-2afc-466f-aa83-fab62bb94bee_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ubsa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b99ddf1-2afc-466f-aa83-fab62bb94bee_6000x4000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ubsa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b99ddf1-2afc-466f-aa83-fab62bb94bee_6000x4000.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b99ddf1-2afc-466f-aa83-fab62bb94bee_6000x4000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7555556,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://peteoleary.substack.com/i/163968002?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b99ddf1-2afc-466f-aa83-fab62bb94bee_6000x4000.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ubsa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b99ddf1-2afc-466f-aa83-fab62bb94bee_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ubsa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b99ddf1-2afc-466f-aa83-fab62bb94bee_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ubsa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b99ddf1-2afc-466f-aa83-fab62bb94bee_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ubsa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b99ddf1-2afc-466f-aa83-fab62bb94bee_6000x4000.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I've been writing code now for more than 40 years and been a professional engineer for more than 30 years, most of that time in startup companies. I&#8217;ve been an individual contributor, manager, Vice President, CTO, every technical position you can hold within a startup company, I've done it. I've managed hundreds of engineers, across hundreds of releases and I have worked with my teams against many, many deadlines.</p><p>At this late stage in my career, I am managing a team of engineers again, at a startup company, working with younger engineers on many releases. One thing I hear over and over again, and when I think about it I've been hearing it for some time, for decades, from these engineers is this idea of a made up date. To many engineers it seems that releases often get defined before engineers get involved, and that deliverables, milestones, deadlines are dictated in a top down fashion. Therefore, they seem made up, not based in reality by anyone within the engineering organization.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.timelight.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! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>If you zoom out on startup companies, you've got this idea of an entrepreneur, the somewhat mythological figure that starts businesses. What that person is trying to do, a highly simplified version of what a startup company is, is they&#8217;ve identified a need in a market. They believe that need can be met with a product that has value to certain people, therefore those people will pay for that value, or you can find a way to monetize the value. So they have a way to make money but of course they need that product.</p><p>Most of the time, especially in modern software startup companies, you need money to realize that vision, you need money to execute on your plan starting usually with developing the product. So the entrepreneur has to go out and convince other people of their vision for the business in order to get the money they need. Those people you convince will become your investors.</p><p>One of the key things that needs to be added to your vision of the product and the value is going to be timing. Investors will start asking you, when is this going to happen? When are you going to deliver this product? When are you going to start realizing this value you are describing? As an entrepreneur, one of the first things that you will have to do is to come up with a date. This is an essential part not only of bringing your product to market but of explaining to investors when they will start to see returns from the company. You have to look out into the future and think about what your capabilities are, what you're trying to do and you have to come up with a date.</p><p>As I was saying earlier, you have to make up a date.</p><p>As an entrepreneur you have to pick a date practically out of thin air and say, yes, this is the date on which all this is going to happen. Then you have to set about making that a reality within your company. You begin a planning process from the top down and usually this goes through the product management organization and turns into milestones and deliverables that ultimately land in front of your engineers. That's when engineering says, whoa, whoa, these dates are totally made up.</p><p>In a later post, I will talk about what can be done about this but for now let me point out how important it is what has just happened. As the saying goes this is not a bug it&#8217;s a feature. The entrepreneur, the person who believes that they can solve a problem in the market, this person has decided when this needs to happen. This one thing, maybe more than anything else, is the fundamental thing about being an entrepreneur. You have to be willing to say when this will happen.</p><p>Think about that. You may have just started your company, you may not have written a single line of code yet and yet you have to decide on the future of the company. Not just any future: a definitive point in time when something is going to happen which has never happened before. If you are not capable of doing that, then you're not an entrepreneur. You are not somebody who should be starting a company. If you want to go to work for a start up company and therefore be entrepreneurial yourself you have to accept that this is a vital part of your decision.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.timelight.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! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Thoughts on a Pull Request from a Spicy Engineer]]></title><description><![CDATA[A hot take on Pull Request reviews]]></description><link>https://www.timelight.com/p/thoughts-on-a-pull-request-from-a</link><guid isPermaLink="false">https://www.timelight.com/p/thoughts-on-a-pull-request-from-a</guid><dc:creator><![CDATA[Peter O'Leary]]></dc:creator><pubDate>Wed, 21 May 2025 21:27:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zOWL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5afcd34-2759-46fc-b31f-6ea8ac9bd8ba_7680x4050.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_!zOWL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5afcd34-2759-46fc-b31f-6ea8ac9bd8ba_7680x4050.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zOWL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5afcd34-2759-46fc-b31f-6ea8ac9bd8ba_7680x4050.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zOWL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5afcd34-2759-46fc-b31f-6ea8ac9bd8ba_7680x4050.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zOWL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5afcd34-2759-46fc-b31f-6ea8ac9bd8ba_7680x4050.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zOWL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5afcd34-2759-46fc-b31f-6ea8ac9bd8ba_7680x4050.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zOWL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5afcd34-2759-46fc-b31f-6ea8ac9bd8ba_7680x4050.jpeg" width="1456" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f5afcd34-2759-46fc-b31f-6ea8ac9bd8ba_7680x4050.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11419259,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://peteoleary.substack.com/i/164115018?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5afcd34-2759-46fc-b31f-6ea8ac9bd8ba_7680x4050.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zOWL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5afcd34-2759-46fc-b31f-6ea8ac9bd8ba_7680x4050.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zOWL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5afcd34-2759-46fc-b31f-6ea8ac9bd8ba_7680x4050.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zOWL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5afcd34-2759-46fc-b31f-6ea8ac9bd8ba_7680x4050.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zOWL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5afcd34-2759-46fc-b31f-6ea8ac9bd8ba_7680x4050.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I recently joined a new engineering team and was given my first coding assignment. I was told that time was of the essence in this case and so did a rather hasty implementation in Ruby and opened a PR fully expecting to get some interesting suggestions and even some of the dreaded &#8220;change requests&#8221;</p><p>I got some legitimate questions and concerns about the code, in particular related to getting the tests to run in our CI system.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.timelight.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! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>There were two types of comments that I took issue with.</p><p>The first was &#8220;not idiomatic&#8221; which I have heard before, especially from Ruby engineers. All modern languages have their cool language features and their eccentricities and learning those things is part of the fun. Knowing a particular language well - be it Javascript, Ruby, Go, Rust, Haskell, whatever - is a real accomplishment and people should be proud of doing so. But they should not use that pride and knowledge to belittle people who write code &#8220;with an accent&#8221;.</p><p>In my case, I have written production code in perhaps 20 different languages over my 30+ years in this business and still actively code in 3 or 4 at any given time. When I haven&#8217;t used a particular language heavily in a few months it takes me a while to get caught up and fluent again. I have learned a lot in the past from PR comments and suggestions and I have no problem incorporating these into my code going forward.</p><p>The refrain I often hear from the &#8220;idiomatic&#8221; perspective is &#8220;your code is too hard for me to read&#8221;. I find this a weak argument with elitist implications. In this development team, as is almost always the case in the year 2022, we have a few engineers who speak English with an accent. On our Standup calls with these engineers, we don&#8217;t interrupt them and say &#8220;I can&#8217;t understand you because of your accent, can you please speak more like a native&#8221;. If we don&#8217;t understand someone, we politely ask them to perhaps try another explanation or maybe write out their ideas. We take it upon ourselves to help understand them, we don&#8217;t put that burden completely on them.</p><p>I once worked with a very talented and sharp Ruby engineer, someone I admire and learned a great deal from. This engineer spoke Spanish and English fluently but had a significant speech impediment. Not once when I worked with him did I stop him and say &#8220;can you please not stutter when you speak, I can&#8217;t understand you&#8221;. Instead I waited patiently for him to work through his stutter and I appreciated the enormous effort that he made to communicate.</p><p>The other comment I received which bears some examination is &#8220;no reason&#8221;. As in &#8220;there is no reason to do it this way&#8221;. This is a breathtakingly arrogant thing to say to another person regardless of the context. When I hear someone say this I mentally convert their statement into &#8220;I can&#8217;t think of a reason&#8221; or perhaps &#8220;I am too lazy/dumb/narrow-minded to think of a reason&#8221;. Younger people who may be reading this, take some advice from a middle aged professional who used to be as narrow-minded and arrogant as anyone: there is always a reason why people do what they do. Just because you don&#8217;t understand their reason, or disagree with it does not mean they didn&#8217;t have one.</p><p>A younger, less experienced version of me would have been insulted by these types of comments. Lucky for me, I am not that engineer anymore. I am well-seasoned: salty and spicy.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.timelight.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! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>