<?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:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[The Pragmatic Engineer]]></title><description><![CDATA[Observations across the software engineering industry.]]></description><link>https://blog.pragmaticengineer.com/</link><image><url>https://blog.pragmaticengineer.com/favicon.png</url><title>The Pragmatic Engineer</title><link>https://blog.pragmaticengineer.com/</link></image><generator>Ghost 5.79</generator><lastBuildDate>Tue, 20 Feb 2024 17:11:29 GMT</lastBuildDate><atom:link href="https://blog.pragmaticengineer.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[The Pulse: Will US companies hire fewer engineers due to Section 174?]]></title><description><![CDATA[It’s rare that a tax change causes panic across the tech industry, but it’s happening in the US. If Section 174 tax changes stay, the US will be one of the least desirable countries to launch startups]]></description><link>https://blog.pragmaticengineer.com/section-174/</link><guid isPermaLink="false">6596eccedc089f00014dcde3</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 04 Jan 2024 17:38:21 GMT</pubDate><media:content url="https://blog.pragmaticengineer.com/content/images/2024/01/Screenshot-2024-01-04-at-21.17.27-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.pragmaticengineer.com/content/images/2024/01/Screenshot-2024-01-04-at-21.17.27-1.png" alt="The Pulse: Will US companies hire fewer engineers due to Section 174?"><p><em>&#x1F44B; Hi, this is</em><a href="https://twitter.com/gergelyorosz?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em> Gergely</em></a><em> with a bonus, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover topics related to Big Tech and startups through the lens of engineering managers and senior engineers. In this article, we cover one out of four topics from today&#x2019;s subscriber-only </em><a href="https://newsletter.pragmaticengineer.com/p/the-pulse-75?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>The Pulse issue</em></a><em>. To get full issues twice a week, </em><a href="https://newsletter.pragmaticengineer.com/about?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>subscribe here</em></a><em>.</em></p><p>In October, we looked into <a href="https://newsletter.pragmaticengineer.com/p/lessons-from-bootstrapped-companies?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">bootstrapped companies founded by software engineers</a> and the article resonated with many readers; I got lots of messages from bootstrapped founders following that issue. Many messages were complaints about something called &#x201C;Section 174 changes.&#x201D; Here&#x2019;s what one founder said:</p><blockquote>&#x201C;Have you heard of a change in Section 174 of the US tax law that kicked in a few years ago? This change is making bootstrapped software businesses completely unsustainable.&#xA0;<br><br>Basically, all costs related to R&amp;D cannot be expensed, including labor for software development. These costs have to be capitalized and amortized over 5 years &#x2013; or 15 if labor is done outside of the US. I have no other way to put it: this change is completely insane. Everyone I talk to says the same.<br><br>I am curious if this has come up in your discussions with other bootstrapped companies?&#x201D;</blockquote><p>I did some research, and The Wall Street Journal and a handful of other news outlets have <a href="https://www.wsj.com/articles/small-businesses-face-big-tax-bills-from-research-deduction-change-a189b113?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">covered</a> this change since last March. Still, founders reaching out shared that it feels like public awareness is low about just how large a problem this tax change is. Back last April, Ben Thompson at Stratechery <a href="https://stratechery.com/2023/buzzfeed-shutters-news-startups-and-the-rd-tax-credit/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">covered</a> this change, also expressing his surprise on how impacted companies seemed to be blissfully unaware of this regulation:</p><blockquote>&#x201C;I&#x2019;ve been very surprised that few people in tech seem to know about this issue, at least in the private conversations that I have had, even though startups are arguably the hardest hit companies of all.&#x201D;</blockquote><p>I <a href="https://x.com/GergelyOrosz/status/1735030983173230944?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">took to social media</a> to gather more information, and a surprising number of complaints from US tech businesses came in.</p><p>In this issue, we cover:</p><ul><li>An unexpectedly high tax bill out of nowhere</li><li>A tax change never intended to make it into law</li><li>Why did Big Tech and VCs not raise the alarm?&#x201D;</li><li>The impact of this change on US tech companies and devs working at them</li><li>Why is forced amortization of software labor objectively bad?</li><li>Will the US be content being a less competitive place for startups?</li></ul><h4 id="an-unexpectedly-high-tax-bill-out-of-nowhere">An unexpectedly high tax bill out of nowhere</h4><p>Many US software businesses amassed surprisingly high tax bills in 2023, seemingly out of nowhere, due to a tax change which took effect in July the previous year, which many small companies knew nothing about until finalizing their 2022 returns. The change was expected to be repealed (reversed) in December 2022, so many accountants didn&#x2019;t inform customers for that reason. So, businesses got a surprise when the first tax payments fell due last April.</p><p>The amendment to S174 means employing software engineers can no longer be accounted as a direct cost in the year they are paid &#x2013; unlike the norm, globally. Here&#x2019;s a simplified example of the change from the final tax year before the change.</p><p>Take an imaginary bootstrapped software business called &#x201C;Acme Corp.&#x201D; This company generates $1,000,000 of revenue per year running a SaaS service. It employs five engineers, and pays each $200,000. That is $1,000,000 paid in labor costs. <em>For simplicity, we omit other costs like servers and hosting, even though those costs can also fall under the new R&amp;D rules, and have to be amortized. </em>So, how much taxable profit does this company make?</p><p>In 2021, the answer would be zero profit. In 2022, the answer was $900,000 in profits(!!) This is because from 2022, software engineer labor costs <em>must</em> be amortized over five years. Here is how amortization works:</p><ul><li>10% amortized for the first year</li><li>20% amortized for years 2 to 5</li><li>10% for year 6</li></ul><p>Let&#x2019;s break this down:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2024/01/Screenshot-2024-01-04-at-21.17.27.png" class="kg-image" alt="The Pulse: Will US companies hire fewer engineers due to Section 174?" loading="lazy" width="1618" height="1010" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2024/01/Screenshot-2024-01-04-at-21.17.27.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2024/01/Screenshot-2024-01-04-at-21.17.27.png 1000w, https://blog.pragmaticengineer.com/content/images/size/w1600/2024/01/Screenshot-2024-01-04-at-21.17.27.png 1600w, https://blog.pragmaticengineer.com/content/images/2024/01/Screenshot-2024-01-04-at-21.17.27.png 1618w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">The impact of Section 174 changes on a company that has $1M in revenue and $1M in labor costs.</span></figcaption></figure><p>What happens to a small, bootstrapped company without $189,000 in cash floating around with which to pay this tax? There are two options:</p><ol><li>Take out a loan at a relatively high interest rate (likely at around 10% or so.) <em>I&#x2019;ve heard of small businesses needing to use personal loans to pay tax.</em>&#xA0;</li><li>Lay off a software engineer on $200,000 per year and use this saving to pay the bill!</li></ol><p><strong>Less hiring of software engineers and more software engineering layoffs are already happening at smaller US tech companies. </strong>In January last year, in a Wall Street Journal article, policy analyst, Alex Muresianu, <a href="https://www.wsj.com/articles/why-does-the-u-s-tax-code-penalize-r-d-big-tech-innovation-manufacturing-production-growth-inflation-silicon-valley-11674415751?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">estimated</a> this tax code change would cost the US about 20,000 full-time software engineering jobs. And I have more real-world accounts of how US businesses are being hit, straight from the companies themselves:</p><ul><li>A business <a href="https://x.com/nanonichole/status/1735286724413038616?s=20&amp;ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">posted</a> a $90K loss in 2022 by the old rules, but is taxed on a $1M profit.</li><li>Infra startup Gruntwork is <a href="https://x.com/OhMyGoshJosh/status/1735115351795568861?s=20&amp;ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">hiring less</a> in 2024 because of the change.</li><li>A startup that raised $1.25M and hired five employees, is <a href="https://x.com/spcomstock/status/1635722639099527171?s=20&amp;ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">likely to face</a> a $150,000 tax bill it did not account for.</li><li>A seed-stage startup that raised $3M and was operating at a loss became profitable due to the S174 change, so must budget for higher taxes.</li><li>Another US company let go of 23 engineers employed in India because of the tax change. Software engineers abroad can be amortized only over 15 years.</li></ul><h4 id="a-tax-change-never-intended-to-make-it-into-law">A tax change never intended to make it into law</h4><p>So, what are &#x201C;Section 174 changes?&#x201D; We need to go back some years to understand. In 2017, then-President, Donald Trump, signed the 2017 Tax Cuts &amp; Jobs act, which overhauled tax codes and reduced tax &#x2013; for example, it reduced the top tax bracket from 39.6% to 37%. To make the bill pass strict budgetary rules, the Senate used a process called reconciliation: adding in tax code changes that delayed tax increases. These delayed increases &#x201C;balanced out&#x201D; the tax reduction.</p><p>One of these changes was Section 174, set to come into effect 5 years later, in 2022. These parts <a href="https://www.law.cornell.edu/uscode/text/26/174?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">deliver the blow</a> by making it clear that software development costs <em>need</em> to be amortized over 5-15 years. Most experts expected Congress to push back the Section 174 amendment to a later date, or simply remove it. But Congressional negotiations to repeal the changes fell apart at the last minute in December 2022, meaning it became law.</p><h4 id="why-did-big-tech-or-vcs-not-raise-the-alarm">Why did Big Tech or VCs not raise the alarm?</h4><p>Why did we not hear the largest tech companies protesting the tax change? Actually, several did, but their protests failed to cut through on the news agenda.</p><p>Large tech companies tend to speak up about issues like this via coalitions, trade associations, and lobbyists. Amazon, Microsoft, Intel, Ford, Lockheed Martin, and other US companies created the US <a href="https://investinamericasfuture.org/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">R&amp;D Coalition</a> in 2018 to advocate in reversing this change. This group <a href="https://investinamericasfuture.org/tax-treatment-legislative-history/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">concludes</a>:</p><blockquote>&#x201C;[The Section 174 changes are] a dramatic shift in the tax treatment of business investments in research and innovation, and it will leave the United States with a system unlike any other in the industrialized world.&#xA0;<br><br>By diminishing the near-term value of R&amp;D expenditures, the Tax Cuts and Jobs Act will reduce incentives for companies to invest in the development of new products, ultimately hurting consumers and businesses alike.&#x201D;</blockquote><p>Here is how the S174 change impacted some companies, based on what I found in their annual reports:</p><ul><li><strong>Microsoft</strong>: $4.8B additional tax paid in 2023. <em>The company generated a $72B profit that year, so this tax increase was manageable. It&#x2019;s still a very large amount!</em></li><li><strong>Netflix: </strong>around $368M in additional tax paid &#x2013; <em>also manageable with $4.4B annual profit.</em></li><li><strong>Google</strong>: the tax change was minimal, because Google was voluntarily amortizing software development expenses for most staff, already. This was for all projects that reached &#x201C;technological feasibility,&#x201D; which is a milestone products pass before public release.</li></ul><p>For companies with large cash reserves, the tax change was inconvenient, but manageable.<strong> </strong>Over a five-year period, the amount of tax evens out. After five years, there can even be tax benefits to this kind of accounting.</p><p>What about VC-funded companies? For loss-making companies this change doesn&#x2019;t make much of a difference. But the change does impact VC-funded companies near to break even. Most VC-funded companies close to breakeven have big-enough cash buffers with which to pay unexpected tax bills. However, these companies might reduce hiring &#x2013; or even consider letting go staff.&#xA0;</p><h4 id="impact-on-us-tech-companies-and-devs-working-at-them">Impact on US tech companies and devs working at them</h4><p>Assuming Section 174 stays and all US companies <em>must</em> amortize software developer costs over 5 years, this will have an immediate impact on early-stage and small tech companies:</p><ul><li><strong>Less hiring of software engineers in the US/more layoffs. </strong>Small and medium-sized tech companies facing higher tax bills in 2023 and 2024 will hire fewer developers. Redundancies might happen for cash flow purposes to replace in-house developers with vendors, which brings us to the next likely impact:</li><li><strong>Firing of non-US software engineers employed by US companies. </strong>The tax change is very hostile to software developers employed abroad: their wages need to be deducted over 15 years. Unless a US company has massive cash reserves, it now makes no sense to remotely employ or contract with individual software developers. An engineer shared how their company fired 23 developers employed in India <em>because of</em> Section 174.</li><li><strong>A boon for SaaS companies and vendors? </strong>US software companies now have a strong reason to buy, instead of build, software in-house. In February last year, we covered the <a href="https://newsletter.pragmaticengineer.com/p/vendor-spend-cuts?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">trend of tech companies aggressively cutting vendor spend</a>. This tax change greatly incentivizes US companies to increase vendor spend &#x2013; and either not hire more devs, or let some go!</li><li><strong>It makes a <em>lot</em> less sense to incorporate tech startups in the US. </strong>Assuming there&#x2019;s a choice to incorporate a startup in the US or somewhere else, then any other country makes so much more sense. In the first few years of a startup, it&#x2019;s typical to make a loss while building something that might not work out. Thanks to the amortization rules, in the US this loss could turn into a taxable profit!&#xA0;</li><li><strong>Startup software IP will likely be moved out of the US. </strong>Foreign founded venture-backed startups have been overwhelmingly incorporated in Delaware, US, until now. The Delaware company would then hold the intellectual property (IP) of the startup. With the Section 174 changes, the simplest way to not be subject to US amortization requirements is to move the IP to a foreign subsidiary &#x2013; and then this subsidiary can employ developers, without being subject to the 15-year amortization requirements. This is what newly founded VC-funded startups are doing, already! <em>As usual, this is not legal or business advice. Consult a professional for guidance on this matter.</em></li><li><strong>Creative workarounds, like &#x201C;inversion buying.&#x201D;</strong> Say that you run a US company with a Canadian subsidiary, with most developers working in Canada. With Section 174 changes, Canadian developers need to be amortized over 15 years (!). A tempting workaround is to have the Canadian subsidiary buy the US company! Now this is a Canadian company, and Section 174 doesn&#x2019;t apply to developers in Canada. However, such workarounds can be expensive and complicated from a tax perspective, due to Passive Foreign Investment Company (PFIC) rules. Still, plenty of founders are exploring setups like this.</li></ul><p><strong>Tech companies are now forced to understand &#x2013; and use &#x2013; R&amp;D credits.</strong> The S174 amendment forcibly categorizes pretty much all software development as R&amp;D. The upside of this that R&amp;D credits do offset the tax bill, but only partially:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2024/01/Screenshot-2024-01-04-at-18.23.22.png" class="kg-image" alt="The Pulse: Will US companies hire fewer engineers due to Section 174?" loading="lazy" width="1072" height="620" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2024/01/Screenshot-2024-01-04-at-18.23.22.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2024/01/Screenshot-2024-01-04-at-18.23.22.png 1000w, https://blog.pragmaticengineer.com/content/images/2024/01/Screenshot-2024-01-04-at-18.23.22.png 1072w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">R&amp;D costs eligible for the R&amp;D Tax Credit are typically a smaller subset of all R&amp;D costs. Image source: </em></i><a href="https://www.aprio.com/brace-for-impact-changes-to-rd-deductions-begin-this-year/?ref=blog.pragmaticengineer.com" target="_blank" rel="noopener noreferrer nofollow"><i><em class="italic" style="white-space: pre-wrap;">Aprio Insights</em></i></a></figcaption></figure><p>For more details on tax credits and Section 174, Gusto created a <a href="https://gusto.com/resources/calculators/business/section-174?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Section 174 tax liablities caluculator</a>. <em>Do consider getting professional advice, as always, if you are running a business impacted by this change.</em></p><p><strong>Innovation across all US software companies will take a hit if Section 174 stays. </strong>The tax change incentivizes software companies without large cash reserves to invest <em>less</em> in research and development. Or they can just move abroad.</p><p>But the change isn&#x2019;t just bad for small software companies; it hurts even the largest ones &#x2013; it is why Microsoft and Amazon are also advocating for its reversal.</p><h4 id="why-is-forced-amortization-of-software-labor-objectively-bad">Why is forced amortization of software labor objectively bad?</h4><p>The concept of amortization (also referred to as depreciation) is as follows. Say you purchase a powerful server for $2,000 to serve traffic for your SaaS business. You pay $2,000 on the spot. However, the expected lifespan of this server is 4 years, after which you expect to replace it. Therefore, it is reasonable to argue that you are getting about $500 worth of &#x201C;value&#x201D; every year from this server, and so you amortize (depreciate) a quarter of the value of this server every accounting year, until year 4.</p><p>This kind of depreciation is sensible, as you could sell your server for around $1,000 after two years (assuming that is how its value depreciation.) Tax authorities in different countries have come up with depreciation frameworks that businesses follow along these lines. For example, in the US, the <a href="https://fasb.org/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Financial Accounting Standards Board</a> (FASB) created the Generally Accepted Accounting Principles (GAAP) provisions, which include a framework on how to deal with depreciation.</p><p><strong>Amortizing software development over years makes sense &#x2013; but only in <em>some</em> cases. </strong>If you have launched a software product, have customers, and you can forecast demand for this product pretty accurately, then investing developer hours to keep this SaaS running feels similar to buying hardware. The software engineer could build a new feature for the SaaS which generates revenue for years to come. So there is <em>some</em> argument to treat software development akin to buying a server.</p><p>But is comparing physical goods to software, accurate? Take a company that buys a server office it plans to use for 20 years. After a massive one-off investment, the only cost is maintenance, which is a pretty minimal cost.</p><p>Now take the example of creating software to generate revenue for 20 years. If you do barebones maintenance, the software becomes obsolete in a year or two! You need to keep adding new features and keep up with the competition. As you add more features, you run into tech debt and architecture issues, so you refactor the software and within a few years you rewrite the whole thing!</p><p><strong>Building software is like continuously renovating &#x2013; and rebuilding &#x2013; a property. </strong>While it is tempting to see why an accountant would want to treat software development amortized like physical goods, this is simply not the reality of how software products behave, or are maintained.</p><p>Before Section 174, companies could <em>choose</em> how they categorized software developers, and could opt into deducting costs. This is what stable and highly profitable businesses like Google have done: for software products in production (and making money) it deducted developer costs over 5 years. For pre-launch projects, Google simply expensed those developers. This is the sensible way to run a software business, after all!</p><p><strong>Google employing lots of devs in Switzerland starts to make a <em>lot</em> more sense, especially now. </strong>Ever wondered why Google has such a large software engineering center in Switzerland &#x2013; despite the high cost of software engineers within Europe? Switzerland has a very powerful research and development incentive: the country <a href="https://mll-legal.com/wp-content/uploads/2020/04/MLL-New-Swiss-Company-Tax-Regime-Presentation-E.pdf?ref=blog.pragmaticengineer.com"><u>allows expensing</u></a> 135% of R&amp;D-related salaries in the year they are incurred.&#xA0;</p><p>Switzerland&#x2019;s taxation is pretty much the polar opposite of that of the US with Section 174. Is Section 174 stays, I would not be surprised if some US companies considered following Google&#x2019;s lead and explore setting up engineering offices in this country.</p><h4 id="will-the-us-be-content-being-a-less-competitive-place-for-startups">Will the US be content being a less competitive place for startups?</h4><p>All founders whom I talked with hoped Congress would revert this disastrous tax code change, given its devastating impact on tech startups. However, this has not happened &#x2013; and it&#x2019;s unclear if it will.</p><p>Founders have been trying to get the attention of Congress: sending a <a href="https://www.evagarland.com/innovationtax/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">letter signed by 1,000+ software businesses</a>, and creating coalitions like the <a href="https://www.modernfortis.com/american-innovators-coalition?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">American Innovators Coalition</a>. Another group formed in March this year is the <a href="https://ssballiance.org/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Small Software Business Alliance</a>, created by indie SaaS founder Michele Hansen, supported by over 600 small software company founders.&#xA0;</p><p>I asked Michele why she thinks the general public isn&apos;t aware of the threat to US companies. She said:</p><blockquote>&#x201C;1. For years, the perception has been that tax changes impact big companies, not small ones.&#xA0;<br><br>2. Tax policy issues are boring for the general public. It takes a strong social impact &#x2013; for example, mass layoffs &#x2013; for news like this to break into mainstream media.<br><br>3. Section 174 was never supposed to take effect, and was widely assumed that it would be fixed before it took effect. So, there was little interest in a problem likely to go away.&#x201D;</blockquote><p>Michele said there is reason for hope, though. Congress appears to have struck a deal: revert Section 174 changes on R&amp;D expensing. Lawmakers are now <a href="https://subscriber.politicopro.com/article/2023/12/headlinegoeshere-00133053?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">looking for ways to finance this deal</a>.</p><p>One country making software development less competitive obviously benefits other countries. Thanks to the S174 amendment, starting a tech company <em>outside</em> the US is far more attractive &#x2013; including for raising startup capital. Still, the US has long been the global innovation hub for technology, and the country kneecapping technological innovation might let the rest of the world catch up. But I cannot see this being beneficial for innovation, as a whole, globally.</p><p><em>Thank you to </em><a href="https://twitter.com/mjwhansen?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>Michele Hansen</em></a><em> and </em><a href="https://twitter.com/jakozaur?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>Jacek Migda&#x142;</em></a><em> for their insights and reviewing a draft of this section.</em></p><p><em>Updates to the article after publishing: 6 January &#x2014; added a reference to Stratechery that covered this change last April</em></p><hr><p>This was one out of the four topics covered in this week&#x2019;s The Pulse. The full edition additionally covers:</p><ol><li><strong>Industry pulse.</strong> A roundup of recent events, with commentary. The New York Times is suing OpenAI, Canva to offer a secondary equity sale, Cloudflare receiving 3x as many applications in 2023 than a year ago, and more.</li><li><strong>Uber is now worth more than all competitors, combined. </strong>Two years ago, food delivery company DoorDash and ridesharing company Lyft were worth more than Uber. Now, Uber&#x2019;s worth more than DoorDash, Lyft, Didi, Zomato, Grab, Delivery Hero, Instacart, and half a dozen other competitors.</li><li><strong>The largest known Ruby codebases.</strong> Stripe and Shopify almost certainly operate the world&#x2019;s largest Ruby codebase. A look at other companies known to work with massive Ruby repositories.</li></ol><p><a href="https://newsletter.pragmaticengineer.com/p/the-pulse-75?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Read the full The Pulse.</a></p>]]></content:encoded></item><item><title><![CDATA[The Pragmatic Engineer Newsletter in 2023]]></title><description><![CDATA[The articles you enjoyed most this year, my personal favorites, and a recap of an unusually turbulent year in tech.]]></description><link>https://blog.pragmaticengineer.com/2023-review/</link><guid isPermaLink="false">65845cd8dc089f00014dcd9f</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 21 Dec 2023 15:44:03 GMT</pubDate><media:content url="https://blog.pragmaticengineer.com/content/images/2023/12/2021-Review--2-.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.pragmaticengineer.com/content/images/2023/12/2021-Review--2-.png" alt="The Pragmatic Engineer Newsletter in 2023"><p>2023 was the second full year of <a href="https://newsletter.pragmaticengineer.com/about?ref=blog.pragmaticengineer.com" rel="noreferrer">The Pragmatic Engineer Newsletter</a>, and this newsletter is now almost two and a half years old; the first issue came out on 26 August 2021. Thank you for being a reader, I greatly value your support.</p><p>This year, 102 newsletter issues were published, and this is number 103. You received a deepdive issue on Tuesdays, and every Thursday it was&#xA0;<a href="https://newsletter.pragmaticengineer.com/s/the-pulse?ref=blog.pragmaticengineer.com">&#x201C;The Pulse&#x201D;</a>&#xA0;&#x2013; formerly The Scoop. Occasionally, there was a bonus article on Wednesdays, too, such as about&#xA0;<a href="https://newsletter.pragmaticengineer.com/p/dead-code-getting-untangled-and-coupling?ref=blog.pragmaticengineer.com">the book, Tidy First?</a></p><p>Like&#xA0;<a href="https://newsletter.pragmaticengineer.com/p/the-pragmatic-engineer-in-2022?ref=blog.pragmaticengineer.com">last year</a>, these newsletters all add up to 5-7 books&#x2019; worth of information. And speaking of books, this year I&#xA0;<em>finally</em>&#xA0;published the project I&#x2019;ve been busy writing for years on the side of the newsletter:&#xA0;<a href="https://www.engguidebook.com/?ref=blog.pragmaticengineer.com">The Software Engineer&#x2019;s Guidebook</a>. This turned into a four-year-long endeavor; thank you to everyone who purchased the paperback edition. Kindle and audiobook formats are expected in early 2024.</p><p><a href="https://newsletter.pragmaticengineer.com/p/the-pragmatic-engineer-in-2023?ref=blog.pragmaticengineer.com" rel="noreferrer"><strong>Today&#x2019;s issue</strong></a> is a look back at 2023, with pointers to articles you may want to reread, or discover for the first time. We cover:</p><ol><li>The newsletter&#x2019;s evolution</li><li>The most popular articles, and my personal favorites</li><li>New resources and templates for engineers and managers added this year</li><li>Tech industry pulse in 2023</li></ol><p><a href="https://newsletter.pragmaticengineer.com/p/the-pragmatic-engineer-in-2023?ref=blog.pragmaticengineer.com" rel="noreferrer"><strong>Read the 2023 recap here.</strong></a></p><p><em>For reviews of earlier years, see The Pragmatic Engineer&#xA0;</em><a href="https://newsletter.pragmaticengineer.com/p/2021-review?ref=blog.pragmaticengineer.com"><em>in 2021</em></a><em>&#xA0;and&#xA0;</em><a href="https://newsletter.pragmaticengineer.com/p/the-pragmatic-engineer-in-2022?ref=blog.pragmaticengineer.com"><em>in 2022</em></a><em>.</em></p>]]></content:encoded></item><item><title><![CDATA[Mentoring software engineers or engineering leaders]]></title><description><![CDATA[Great mentors are useful for professional growth, and have benefitted both informal and formal mentorship from experienced engineers and managers. A collection of free and paid resources where you can find mentors to help with your professional growth.]]></description><link>https://blog.pragmaticengineer.com/mentoring/</link><guid isPermaLink="false">658011e3dc089f00014dcd23</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Mon, 18 Dec 2023 09:49:30 GMT</pubDate><content:encoded><![CDATA[<p>I get asked every now and then if I offer 1:1 mentoring for either software engineers or engineering managers or leaders. While I used to do this in the past, I <a href="https://blog.pragmaticengineer.com/now/" rel="noreferrer">don&apos;t offer this any more.</a> I collected much of the advice I have to offer for software engineers in <a href="https://www.engguidebook.com/?ref=blog.pragmaticengineer.com" rel="noreferrer"><strong>The Software Engineer&apos;s Guidebook</strong></a>. I also write <a href="https://newsletter.pragmaticengineer.com/?ref=blog.pragmaticengineer.com" rel="noreferrer"><strong>The Pragmatic Engineer Newsletter</strong></a> where I do cover topics like <a href="https://newsletter.pragmaticengineer.com/p/what-is-a-senior-software-engineer?ref=blog.pragmaticengineer.com" rel="noreferrer">what it means to be a senior engineer at various companies</a>, how to deal with <a href="https://newsletter.pragmaticengineer.com/p/low-quality-eng-culture?ref=blog.pragmaticengineer.com" rel="noreferrer">a low-quality engineering culture</a>, and <a href="https://newsletter.pragmaticengineer.com/?sort=top&amp;ref=blog.pragmaticengineer.com" rel="noreferrer">other topics</a>.</p><p><strong>I do believe great mentors are useful for professional growth</strong>, and have benefitted both informal and formal mentorship from experienced engineers and managers. <em>I wrote more on the </em><a href="https://blog.pragmaticengineer.com/developers-mentoring-other-developers/" rel="noreferrer"><em>benefits of developers mentoring other developers</em></a><em> in the past.</em></p><p>Here are approaches, as well as people I can recommend:</p><ul><li><strong>If you are working at a large company</strong>: look for mentors, internally. Mentors who are inside the organization will be able to offer insights and observations that external mentors would likely not be able to help with. How do you find these people? They could be people you already worked with; or you can ask your management chain to connect you with folks who might be open to mentoring.</li><li><strong>If you are in an engineering leadership position at a smaller company</strong>, a paid coach/mentor could be a good investment, which could potentially be footed by your company. See a list of <a href="https://blog.pragmaticengineer.com/coaches-and-mentors-for-engineering-managers/" rel="noreferrer">paid coaches and engineering managers</a> based on both people I know personally; and recommendations from engineering managers who worked with them.</li><li><strong>If you are a software engineer</strong>, try to connect with and learn from more experienced people at your workplace. See advice on various approaches in my article <a href="https://blog.pragmaticengineer.com/coaches-and-mentors-for-engineering-managers/" rel="noreferrer">Developers mentoring other developers: practices I&apos;ve seen work well.</a> You can also consider connecting with more experienced folks online: either through free sites, or via paid ones. See a <a href="https://blog.pragmaticengineer.com/developers-mentoring-other-developers/#places-to-find-mentors" rel="noreferrer"><strong>list of these sites to connect with mentors</strong></a>.</li></ul><p><strong>Mentoring doesn&apos;t have to be a big deal. </strong>Software engineer and engineering leader <a href="https://www.linkedin.com/in/errebepe/?ref=blog.pragmaticengineer.com" rel="noreferrer">Rodrigo Pimentel</a> shares this advice (<a href="https://www.linkedin.com/posts/errebepe_i-highly-recommend-getting-yourself-a-mentor-activity-7142496375019118592-c9CX?utm_source=share&amp;utm_medium=member_desktop" rel="noreferrer">read his full post</a>):</p><blockquote>&quot;For a long time, I hesitated to actually try and find a mentor. Not only am I not good at asking for help, but I felt embarrassed to ask the people on my radar. <br><br>But then it turned out *I* was mentoring someone and I didn&apos;t even know it! A friend and former team member asked me to keep having our 1-1s (which I always have with everyone on my teams) after I left the company and moved to a different country. Which was fine by me, I enjoyed the chats, I learned a lot from them. One day, this friend casually referred to himself as my &quot;mentee&quot;, and I was taken aback. I had no idea!<br><br>This made me realise that being a mentor doesn&apos;t have to be a big imposition. So I approached a friend whom I admire and asked for a recurring chat. It was very unstructured, and we didn&apos;t even manage to have many sessions, but the ones we did have were valuable to me.<br><br>(...)<br><br>If you find yourself not having a mentor because of some (perhaps self-imposed) friction, try to unblock yourself by lowering the task. Ask a friend you admire for some of their time. Most people are happy to help.</blockquote><p>I hope you find these pointers useful.</p>]]></content:encoded></item><item><title><![CDATA[A Tech Conference Listed Fake Speakers for Years: I Accidentally Noticed]]></title><description><![CDATA[For 3 years straight, the DevTernity conference listed non-existent software engineers representing Coinbase and Meta as featured speakers. When were they added and what could have the motivation been?]]></description><link>https://blog.pragmaticengineer.com/devternity-fake-speakers/</link><guid isPermaLink="false">656b288d7997070001540f57</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Sat, 02 Dec 2023 13:43:29 GMT</pubDate><media:content url="https://blog.pragmaticengineer.com/content/images/2023/12/Screenshot-2023-12-02-at-14.30.23.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.pragmaticengineer.com/content/images/2023/12/Screenshot-2023-12-02-at-14.30.23.png" alt="A Tech Conference Listed Fake Speakers for Years: I Accidentally Noticed"><p><em>For 3 years straight, the DevTernity conference listed non-existent software engineers representing Coinbase and Meta as featured speakers. When were they added and what could have the motivation been?</em></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/12/Screenshot-2023-12-02-at-14.30.23-1.png" class="kg-image" alt="A Tech Conference Listed Fake Speakers for Years: I Accidentally Noticed" loading="lazy" width="1972" height="1374" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/12/Screenshot-2023-12-02-at-14.30.23-1.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/12/Screenshot-2023-12-02-at-14.30.23-1.png 1000w, https://blog.pragmaticengineer.com/content/images/size/w1600/2023/12/Screenshot-2023-12-02-at-14.30.23-1.png 1600w, https://blog.pragmaticengineer.com/content/images/2023/12/Screenshot-2023-12-02-at-14.30.23-1.png 1972w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Three featured speakers listed at DevTernity 2021, 2022 and 2023, and JDKon 2024. These people do not exist.</span></figcaption></figure><p>A year ago, I spent months doing an investigative report on how UK events tech company Pollen had its staff work for free, as it had run out of money but still kept operating. The company kept promising that missing wages would arrive &#x2013; but they never did. Not only that, but the company stopped paying health insurance to US staff without informing them. The company went bankrupt, and the <a href="https://newsletter.pragmaticengineer.com/p/pollen?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">details I uncovered were troubling</a>. A year later, the BBC made a documentary about the company called <a href="https://www.bbc.co.uk/iplayer/episode/m001n327/crashed-800m-festival-fail?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Crashed: $800M Festival Fail</a>.&#xA0;</p><p>That BBC report required more resources than I have available. My report also created potential legal jeopardy for me &#x2013; and I had to review it with lawyers before publication. I decided that while I greatly respect investigative reportage, it&#x2019;s not an area I would venture into, again. And I intended to keep this promise.</p><p>However, last week I saw a post on my timeline in which a good friend of mine was announced as a speaker at the <a href="https://devternity.com/?ref=blog.pragmaticengineer.com" rel="noreferrer">DevTernity tech conference</a> on 7-8 December. It&#x2019;s a paid, online-only conference, with tickets ranging &#x20AC;399-798 per person ($435-870). The speaker lineup features some of the best-known speakers in the tech industry: ones like Scott Hanselman, Kelsey Hightower, Sam Newman, David Heinemeier Hansson, Dave Farley, Allen Houb and others.</p><p>I clicked to check out what his talk will be about, and to look at the speaker lineup. Most speakers were familiar, and I also checked out the others. One profile caught my attention: Anna Boyko, a core contributor to Ethereum:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/12/Screenshot-2023-11-24-at-17.46.21.png" class="kg-image" alt="A Tech Conference Listed Fake Speakers for Years: I Accidentally Noticed" loading="lazy" width="2000" height="1070" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/12/Screenshot-2023-11-24-at-17.46.21.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/12/Screenshot-2023-11-24-at-17.46.21.png 1000w, https://blog.pragmaticengineer.com/content/images/size/w1600/2023/12/Screenshot-2023-11-24-at-17.46.21.png 1600w, https://blog.pragmaticengineer.com/content/images/2023/12/Screenshot-2023-11-24-at-17.46.21.png 2184w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Six of the 24 speakers from DevTernity 2023. Source: </em></i><a href="https://web.archive.org/web/20231109140408/https://devternity.com/" target="_blank" rel="noopener noreferrer nofollow"><i><em class="italic" style="white-space: pre-wrap;">DevTernity</em></i></a></figcaption></figure><p>There aren&#x2019;t many core Ethereum contributors, and I found it curious that someone committed to working on an open source crypto platform would join Coinbase at the same time. Eager to learn more about Anna&#x2019;s professional history, I turned to LinkedIn. No matches. Google. No matches, save for this conference. I looked through the Ethereum core contributors, but found no one remotely similar. Finally, I reached out to friends at Coinbase who said they never heard of anyone called &#x2018;Anna Boyko.&#x2019;</p><p>By now, I was suspicious. Could Anna be a fake profile? Surely not for such a high-profile conference? I assumed I was missing something, and I wanted to see if this could be a one-off of inventing a fake profile to make the conference lineup look more impressive than it actually is. So I looked at other conferences by the same organizer, Dev Events. And sure enough, I found yet another non-existent speaker for JDKon 2024 called <a href="https://twitter.com/GergelyOrosz/status/1728314552121459154?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Alina Prokhoda</a>: Senior Engineer at WhatsApp, and Microsoft MVP. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/12/F_w07BJWMAA21MC.jpeg" class="kg-image" alt="A Tech Conference Listed Fake Speakers for Years: I Accidentally Noticed" loading="lazy" width="1170" height="970" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/12/F_w07BJWMAA21MC.jpeg 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/12/F_w07BJWMAA21MC.jpeg 1000w, https://blog.pragmaticengineer.com/content/images/2023/12/F_w07BJWMAA21MC.jpeg 1170w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Alina Prokhoda, listed in the JDKon 2024 lineup. This person also does not exist.</span></figcaption></figure><p>But there is no such MVP, and I confirmed with my sources that no one by this name works at Meta.</p><p>I then looked at previous DevTernity conferences. In 2022, another odd profile stood out: a speaker with no Twitter handle and a weird title; Natalie Stadler &#x201C;Software Craftswoman at Coinbase:&#x201D;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/12/Screenshot-2023-11-30-at-14.30.04.png" class="kg-image" alt="A Tech Conference Listed Fake Speakers for Years: I Accidentally Noticed" loading="lazy" width="1482" height="1340" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/12/Screenshot-2023-11-30-at-14.30.04.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/12/Screenshot-2023-11-30-at-14.30.04.png 1000w, https://blog.pragmaticengineer.com/content/images/2023/12/Screenshot-2023-11-30-at-14.30.04.png 1482w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Speakers at DevTernity 2022. Natalie Stadler was made up, even then. Source: </em></i><a href="https://web.archive.org/web/20221128060607/https://devternity.com/" target="_blank" rel="noopener noreferrer nofollow"><i><em class="italic" style="white-space: pre-wrap;">DevTernity</em></i></a></figcaption></figure><p>I don&#x2019;t know about you, but I cannot imagine any Coinbase employee agreeing to such a title for a conference. Still, chatting with a contact at Coinbase, I asked them if Natalie also worked there; and she did not.&#xA0;But it didn&#x2019;t stop here. Natalie Stadler was a listed speaker <a href="https://web.archive.org/web/20211118022611/https://devternity.com/" rel="noopener noreferrer nofollow">on the 2021 edition of the conference</a>, as well.</p><h2 id="when-and-why-were-the-fake-speakers-added-to-the-conferences">When and why were the fake speakers added to the conferences?</h2><p>You&#x2019;ll notice that all the fake speakers were women. Is this a coincidence? There&apos;s a timing that questions whether this could have been an accident.</p><p>To answer, first, let&apos;s meet the conference&apos;s cofounder, Julia Kirsina (Coding Unicorn). She <a href="https://twitter.com/UnicornCoding/status/1620697453778579456?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">confirmed</a> to hold this role in 2023:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa73c5452-6cc5-42da-9791-36bb2f128536_958x398.png" class="kg-image" alt="A Tech Conference Listed Fake Speakers for Years: I Accidentally Noticed" loading="lazy" width="958" height="398"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Julia (Coding Unicorn) mentioned she&#x2019;s the cofounder of the conference in order to get in touch with a DevTernity speaker. Julia says she&#x2019;s an ambassador at DevTernity in </em></i><a href="https://twitter.com/UnicornCoding?ref=blog.pragmaticengineer.com" target="_blank" rel="noopener noreferrer nofollow"><i><em class="italic" style="white-space: pre-wrap;">her profile</em></i></a><i><em class="italic" style="white-space: pre-wrap;">.</em></i></figcaption></figure><p>On 3 August 2021, at 5pm GMT (6pm CEST), a complaint was made on Twitter, which message <a href="https://twitter.com/UnicornCoding/status/1422590252418539522?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">called out</a> the all-male panel for the 2021 DevTernity lineup:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd31b485a-8c23-4187-84dc-27b7a0cb0272_974x852.png" class="kg-image" alt="A Tech Conference Listed Fake Speakers for Years: I Accidentally Noticed" loading="lazy" width="974" height="852"><figcaption><span style="white-space: pre-wrap;">Julia (cofounder of DevTernity) reacting to a complaint on the all-male lineup for DevTernity 2021. She never sent a DM to Matty to chat about the situation, as I confirmed with Matty</span></figcaption></figure><p><strong>&quot;Natalia Slater, Software Craftswoman at Coinbase&quot; was added a few hours after this complaint on the lack of diversity was made. </strong> The DevTernity website is open source, with all changes observable, so we can <a href="https://github.com/devternity/devternity.github.io/commit/78f07343f40cb34dacab965acead22296c7815db?ref=blog.pragmaticengineer.com" rel="noreferrer">find the exact commit on 3 August 2021</a> that added the first fake speaker. It happened at 7pm GMT (8pm CEST), so <em>only</em> 2 hours after the complaint made:</p><figure class="kg-card kg-image-card"><img src="https://blog.pragmaticengineer.com/content/images/2023/12/Screenshot-2023-12-02-at-14.01.49.png" class="kg-image" alt="A Tech Conference Listed Fake Speakers for Years: I Accidentally Noticed" loading="lazy" width="2000" height="889" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/12/Screenshot-2023-12-02-at-14.01.49.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/12/Screenshot-2023-12-02-at-14.01.49.png 1000w, https://blog.pragmaticengineer.com/content/images/size/w1600/2023/12/Screenshot-2023-12-02-at-14.01.49.png 1600w, https://blog.pragmaticengineer.com/content/images/size/w2400/2023/12/Screenshot-2023-12-02-at-14.01.49.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>The <a href="https://github.com/devternity/devternity.github.io/commit/78f07343f40cb34dacab965acead22296c7815db?ref=blog.pragmaticengineer.com" rel="noreferrer">same commit</a> also added Julia Kirsina, the cofounder of the conference as a speaker: but Julia delivered no talk on this conference. Given the timing, it seems highly likely that the conference&apos;s organizers invented a woman profile to address the concerns raised by Matty Stratton.</p><p>On 6 August 2021, Natalia&apos;s name was <a href="https://github.com/devternity/devternity.github.io/commit/8ad3e9dd397916237bee2493c473932a83385f9f?ref=blog.pragmaticengineer.com" rel="noreferrer">changed</a> to &quot;Natalia Stadler:&quot;</p><figure class="kg-card kg-image-card"><img src="https://blog.pragmaticengineer.com/content/images/2023/12/Screenshot-2023-12-02-at-14.08.02.png" class="kg-image" alt="A Tech Conference Listed Fake Speakers for Years: I Accidentally Noticed" loading="lazy" width="2000" height="623" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/12/Screenshot-2023-12-02-at-14.08.02.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/12/Screenshot-2023-12-02-at-14.08.02.png 1000w, https://blog.pragmaticengineer.com/content/images/size/w1600/2023/12/Screenshot-2023-12-02-at-14.08.02.png 1600w, https://blog.pragmaticengineer.com/content/images/size/w2400/2023/12/Screenshot-2023-12-02-at-14.08.02.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>Natalie Stadler was present in the 2021 conference lineup, as well as for the 2022 one. </p><p>For the DevTernity 2023 website, Natalia Stadler was no longer part of the site when it <a href="https://github.com/devternity/devternity.com.src/commit/3e1c50f765177c6fd0a46b322c9c60eb3c1e952a?ref=blog.pragmaticengineer.com" rel="noreferrer">went live on 3 January 2023</a>. Her &quot;colleague,&quot; Anna Boyko was added <a href="https://github.com/devternity/devternity.com.src/commit/13e3726737dbd33e4cdcd20cb4742f3bbcb5f874?ref=blog.pragmaticengineer.com" rel="noreferrer">on 21 January</a>:</p><figure class="kg-card kg-image-card"><img src="https://blog.pragmaticengineer.com/content/images/2023/12/Screenshot-2023-12-02-at-14.14.52.png" class="kg-image" alt="A Tech Conference Listed Fake Speakers for Years: I Accidentally Noticed" loading="lazy" width="2000" height="916" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/12/Screenshot-2023-12-02-at-14.14.52.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/12/Screenshot-2023-12-02-at-14.14.52.png 1000w, https://blog.pragmaticengineer.com/content/images/size/w1600/2023/12/Screenshot-2023-12-02-at-14.14.52.png 1600w, https://blog.pragmaticengineer.com/content/images/size/w2400/2023/12/Screenshot-2023-12-02-at-14.14.52.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>The original image of Anna Boyko looked like it was generated from the website <a href="https://this-person-does-not-exist.com/en?ref=blog.pragmaticengineer.com" rel="noreferrer">This Person Doesn&apos;t Exist</a>. This image was updated to a perhaps more realistic one on 24 January, <a href="https://github.com/devternity/devternity.com.src/commit/2f244b408bf763d585be112b80bb8ed1208865f1?ref=blog.pragmaticengineer.com" rel="noreferrer">in a commit</a> that updated several speaker images:</p><figure class="kg-card kg-image-card"><img src="https://blog.pragmaticengineer.com/content/images/2023/12/Screenshot-2023-12-02-at-14.16.46.png" class="kg-image" alt="A Tech Conference Listed Fake Speakers for Years: I Accidentally Noticed" loading="lazy" width="2000" height="905" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/12/Screenshot-2023-12-02-at-14.16.46.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/12/Screenshot-2023-12-02-at-14.16.46.png 1000w, https://blog.pragmaticengineer.com/content/images/size/w1600/2023/12/Screenshot-2023-12-02-at-14.16.46.png 1600w, https://blog.pragmaticengineer.com/content/images/size/w2400/2023/12/Screenshot-2023-12-02-at-14.16.46.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>Finally, Alina Prokhoda <a href="https://github.com/devternity/devternity.com.src/commit/9ffdbda4cdef518324e3996be404143ed11be61c?ref=blog.pragmaticengineer.com" rel="noreferrer">was added</a> to the JDKon lineup on 14 October 2023:</p><figure class="kg-card kg-image-card"><img src="https://blog.pragmaticengineer.com/content/images/2023/12/Screenshot-2023-12-02-at-14.18.24.png" class="kg-image" alt="A Tech Conference Listed Fake Speakers for Years: I Accidentally Noticed" loading="lazy" width="2000" height="903" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/12/Screenshot-2023-12-02-at-14.18.24.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/12/Screenshot-2023-12-02-at-14.18.24.png 1000w, https://blog.pragmaticengineer.com/content/images/size/w1600/2023/12/Screenshot-2023-12-02-at-14.18.24.png 1600w, https://blog.pragmaticengineer.com/content/images/size/w2400/2023/12/Screenshot-2023-12-02-at-14.18.24.png 2400w" sizes="(min-width: 720px) 720px"></figure><h2 id="is-there-more-to-this-than-fake-coinbase-and-meta-speaker-profiles">Is there more to this, than fake Coinbase and Meta speaker profiles?</h2><p>What do you do when you find four instances of non-existent speakers at four conferences held in different years? All this took about 30 minutes of research to find out, including the pinging of contacts at Coinbase and Meta. Other people <em>must have</em> discovered what I did with such little effort, but it seems they said nothing. My choices seem to be to stay silent and let this deceit continue: or speak up, and hopefully help end this practice.</p><p><strong>I decided to share that this conference advertises fake speakers, and has done so for years. </strong>This statement is easily verifiable by anyone in the same way that I did. I&#x2019;ve not seen this deceit at any other tech conference, and I&#x2019;ve seen enough that I didn&#x2019;t want to keep quiet.</p><p>So, I publicly shared <a href="https://x.com/GergelyOrosz/status/1728177708608450705?s=20&amp;ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">on Twitter</a> and <a href="https://www.linkedin.com/posts/gergelyorosz_software-engineer-anna-boyko-has-an-impressive-activity-7134825190613491712-e0GS?utm_source=share&amp;utm_medium=member_desktop" rel="noopener noreferrer nofollow">LinkedIn</a> that these speakers are made up. People were obviously not happy, and asked questions. </p><p>The DevTernity conference is organized &#x201C;by a small team of software engineers from Singapore, Estonia, and the Netherlands,&#x201D; as per <a href="https://web.archive.org/web/20231109140408/https://devternity.com/" rel="noopener noreferrer nofollow">the website</a>. One of the conference&#x2019;s organizers responded in public, <a href="https://x.com/eduardsi/status/1728422017417032140?s=20&amp;ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">offering an explanation</a> that made no sense: such as stating that this was a one-off mistake, when it&#x2019;s a multi-year practice.</p><p><strong>Further disturbing details have emerged from efforts by investigative reporters. </strong>The Verge <a href="https://www.theverge.com/2023/11/28/23978254/devternity-jdkon-developer-conference-fake-women-speakers?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">confirmed</a> no &#x201C;Julija Kirsina&#x201D; graduated from The RISEBA University of Applied Science, which is listed on this <a href="https://www.linkedin.com/in/codingunicorn/?ref=blog.pragmaticengineer.com" rel="noreferrer">speaker&#x2019;s LinkedIn profile</a> as her professional education, and The Verge could also not reach her.</p><p>Is there even a real female software engineer behind the &#x201C;Coding Unicorn&#x201D; account, and does a developer with the name Julia Kirsina exist?<strong> </strong>404Media <a href="https://www.404media.co/coding-unicorn-instagram-julia-kirsina-devternity/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">reported</a> that the conference&#x2019;s male founder seems to be heavily involved behind Julia Kirsina&#x2019;s &#x201C;Coding Unicorn&#x2019;s&#x201D; Instagram account. Despite being listed as a featured speaker at DevTernity in 2021, 2022 and 2023, Kirsina never delivered a talk at the conference. In another relevant detail, the conference organizer was previously banned from tech social media site Lobst.ers <a href="https://www.404media.co/coding-unicorn-instagram-julia-kirsina-devternity/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">for sockpuppeting</a> the Coding Unicorn account.</p><p>The DevTernity conference is no longer taking place: I understand this may be because several speakers canceled after learning of the deception. I hope everyone who paid for tickets and prefers a refund gets one; for an ethically run conference, this should be a given. Hopefully, this is the last time a paid tech conference advertises invented speakers with AI-generated images who don&#x2019;t actually exist.</p><h2 id="the-myth-of-there-are-not-enough-women-speakers">The myth of &quot;there are not enough women speakers&quot;</h2><p>One of the organizers of the conference <a href="https://x.com/eduardsi/status/1728422017417032140?s=20&amp;ref=blog.pragmaticengineer.com" rel="noreferrer">responded</a> on Twitter, claiming &quot;There have been 1000s of events chasing the same small sub-group of female speakers.&quot; This sounds like a cheap excuse. The community response to this claim has been also strong contradiction, and people sharing resources on where women speakers can be found. A couple of these:</p><ul><li><a href="https://github.com/fempire/women-tech-speakers-organizers?ref=blog.pragmaticengineer.com" rel="noreferrer">Women in tech speakers and organizers</a>: a continuously updated list on GitHub. 400+ speakers.</li><li><a href="https://twitter.com/i/lists/1417523775021662218?ref=blog.pragmaticengineer.com" rel="noreferrer">STEM Ladies</a>: a list on Twitter/X with 1,600 members</li><li>&quot;<a href="https://twitter.com/t3dotgg/status/1729617178188509517?ref=blog.pragmaticengineer.com" rel="noreferrer">Reply to this thread with a woman in tech you look up to:</a>&quot; 300+ responses </li><li><a href="https://hanselminutes.com/?ref=blog.pragmaticengineer.com" rel="noreferrer">Guests on the Hanselminutes podcast</a>: 920+ guests working in tech (or areas related to tech), the majority from diverse backgrounds</li></ul><h2 id="more-coverage">More coverage</h2><p>We&apos;ve not seen anything of this kind of deceit in tech - a conference inventing speakers, including fake images - and the mainstream media covered this first-of-a-kind unethical approach to organizing a conference, extensively:</p><ul><li><a href="https://www.404media.co/coding-unicorn-instagram-julia-kirsina-devternity/?ref=blog.pragmaticengineer.com" rel="noreferrer">Male tech conference founder is behind popular woman coding influencer account</a> (404Media)</li><li><a href="https://www.theverge.com/2023/11/28/23978254/devternity-jdkon-developer-conference-fake-women-speakers?ref=blog.pragmaticengineer.com" rel="noreferrer">This dev conference organizer seems addicted to making up women</a> (The Verge)</li><li><a href="https://thenewstack.io/meet-anna-boyko-how-a-fake-speaker-blew-up-devternity/?ref=blog.pragmaticengineer.com" rel="noreferrer">Meet &#x2018;Anna Boyko&#x2019;: how a fake speaker blew up DevTernity</a> (The New Stack)</li><li><a href="https://www.engadget.com/a-popular-female-coding-influencers-instagram-is-apparently-run-by-a-man-115046245.html?ref=blog.pragmaticengineer.com" rel="noreferrer">A popular female coding influencer&apos;s Instagram is apparently run by a man</a> (Endgadget)</li><li><a href="https://fortune.com/2023/11/27/devternity-tech-conference-fake-women-speakers-profiles-engineering/?ref=blog.pragmaticengineer.com" rel="noreferrer">&#x2018;What a strange tale&#x2019;: Tech conference canceled after execs flee report of fake women speakers</a> (Fortune)</li><li><a href="https://boingboing.net/2023/11/28/a-conference-organizer-lists-imaginary-women-speakers-to-increase-the-appearance-of-diversity-at-his-events.html?ref=blog.pragmaticengineer.com" rel="noreferrer">A conference organizer lists imaginary women speakers to increase the appearance of diversity at his events</a> (Boing Boing)</li><li><a href="https://arstechnica.com/tech-policy/2023/11/backlash-over-fake-female-speakers-shuts-down-developer-conference/?ref=blog.pragmaticengineer.com" rel="noreferrer">Backlash over fake female speakers shuts down developer conference </a>(Ars Technica)</li><li><a href="https://meetings.skift.com/tech-conference-accused-of-creating-fake-women-speakers/?ref=blog.pragmaticengineer.com" rel="noreferrer">Tech conference accused of creating fake women speakers</a> (Skift)</li><li><a href="https://www.bloomberg.com/news/articles/2023-11-28/tech-conference-faces-backlash-on-claims-of-fake-women-speakers?ref=blog.pragmaticengineer.com" rel="noreferrer">Developer conference axed after fake female profiles outcry</a> (Bloomberg)</li><li><a href="https://www.theregister.com/2023/11/28/devternity_conference_fake_speakers/?ref=blog.pragmaticengineer.com" rel="noreferrer">DevTernity conference collapses amid claims women speakers were faked</a> (The Register)</li><li><a href="https://www.businessinsider.com/tech-conference-organizer-accused-of-using-fake-female-panelists-2023-11?ref=blog.pragmaticengineer.com" rel="noreferrer">Tech conference organizer accused of using fake female panelists</a> (Business Insider)</li><li><a href="https://www.washingtonpost.com/business/2023/11/28/tech-conference-fake-women-ai-generated-devternity/2de58dca-8e25-11ee-95e1-edd75d825df0_story.html?ref=blog.pragmaticengineer.com" rel="noreferrer">Fake AI-generated woman on tech conference agenda leads Microsoft and Amazon execs to drop out</a> (Washington Post)</li></ul><p><em>A shorter version of this article was shared published in </em><a href="https://newsletter.pragmaticengineer.com/p/the-pulse-71-the-tech-behind-stripes?ref=blog.pragmaticengineer.com" rel="noreferrer"><em>The Pragmatic Engineer Newsletter on 30 November</em></a><em>. </em></p>]]></content:encoded></item><item><title><![CDATA[The Roots of Today's Modern Backend Engineering Practices]]></title><description><![CDATA[What accidentally taking down Amazon.com in 1997 taught Joshua Burgin; tech industry veteran and one of Amazon’s first 100 employees]]></description><link>https://blog.pragmaticengineer.com/the-roots-of-modern-backend-engineering-practices/</link><guid isPermaLink="false">655cde8b243f360001167196</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 21 Nov 2023 16:48:44 GMT</pubDate><media:content url="https://blog.pragmaticengineer.com/content/images/2023/11/Screenshot-2023-11-21-at-17.16.31.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.pragmaticengineer.com/content/images/2023/11/Screenshot-2023-11-21-at-17.16.31.png" alt="The Roots of Today&apos;s Modern Backend Engineering Practices"><p><em>&#x1F44B; Hi, this is</em><a href="https://twitter.com/gergelyorosz?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em> Gergely</em></a><em> with a bonus, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover topics related to Big Tech and startups through the lens of engineering managers and senior engineers. In this article, we cover thee out of nine topics from today&#x2019;s subscriber-only issue: </em><a href="https://newsletter.pragmaticengineer.com/p/the-past-and-future-of-backend-practices?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>The Past and Future of Modern Backend Practices</em></a><em>. To get full issues twice a week, </em><a href="https://newsletter.pragmaticengineer.com/about?ref=blog.pragmaticengineer.com" rel="noreferrer"><em>subscribe here</em></a><em>.</em></p><p>It&#x2019;s fascinating how what is considered &#x201C;modern&#x201D; for backend practices keep evolving over time; back in the 2000s, virtualizing your servers was the cutting-edge thing to do; while around 2010 if you onboarded to the cloud, you were well ahead of the pack. If you had a continuous deployment system up and running around 2010, you were ahead of the pack: but today it&#x2019;s considered strange if your team would <em>not</em> have this for things like web applications.&#xA0;</p><p><strong>How have practices considered cutting edge on the backend changed from its early days, and where is it headed in future?</strong></p><p>To answer this big question, I turned to an industry veteran who&#x2019;s been there, seen it, and done it &#x2013; and is still active in the game. <a href="https://joshuaburgin.io/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Joshua Burgin</a> was an early Amazon employee, joining in 1997, back when Amazon was just an internet bookstore and cloud computing wasn&#x2019;t even a speck on the horizon.&#xA0;</p><p>He then worked at the casual games company Zynga, building their in-game advertising platform. After Zynga, he rejoined Amazon, and was the General Manager (GM) for Compute services at AWS, and later chief of staff, and advisor to AWS executives like Charlie Bell and Andy Jassy (Amazon&#x2019;s current CEO.) Joshua is currently VP of Product &amp; Strategy at VMware, a cloud computing and virtualization technology company. Joshua has remained technical while working as an executive.</p><p>Joshua also writes an excellent <a href="https://joshuaburgin.substack.com/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Substack newsletter</a> about how to design products which customers love, how to operate live services at scale, grow and optimize your technology orgs, and the history of the tech industry. <a href="https://joshuaburgin.substack.com/subscribe?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>Subscribe here</em></a><em>.</em></p><p>In this issue, we cover:</p><ol><li>Year 1 on the job: accidentally taking Amazon.com offline</li><li>The birth of ARPANET (1969)</li><li>The rise of the internet and web-based computing (1989)</li></ol><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/11/Screenshot-2023-11-21-at-17.15.52.png" class="kg-image" alt="The Roots of Today&apos;s Modern Backend Engineering Practices" loading="lazy" width="1874" height="892" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/11/Screenshot-2023-11-21-at-17.15.52.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/11/Screenshot-2023-11-21-at-17.15.52.png 1000w, https://blog.pragmaticengineer.com/content/images/size/w1600/2023/11/Screenshot-2023-11-21-at-17.15.52.png 1600w, https://blog.pragmaticengineer.com/content/images/2023/11/Screenshot-2023-11-21-at-17.15.52.png 1874w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">A timeline of the evolution of modern backend practices</span></figcaption></figure><p><strong>In this article, we use the word &#x201C;modern&#x201D; to describe what larger, more established businesses consider cutting edge today.</strong> We also use it in a historical sense to describe previous generations of technology that were pioneering in their time. It&#x2019;s important to note there are no one-size-fits-all choices with technology, especially for things like microservices or Kubernetes, which are still considered relatively modern at large companies today. Startups and midsized companies are often better off not jumping to adopt new technologies, especially ones which solve problems a business does not have.</p><p><em>With that, it&#x2019;s over to Joshua:</em></p><h1 id="1-year-1-on-the-job-accidentally-taking-amazoncom-offline">1. Year 1 on the job: accidentally taking Amazon.com offline</h1><p>My journey in backend development began with an unexpected stumble, not a carefully considered first step on a pre-planned career path. In 1997, when Amazon was a one-floor, sub-100 person startup trying to sell books online, I experienced what every engineer dreads.</p><p><strong>Backend code I wrote and pushed to prod took down Amazon.com for several hours. </strong>This incident was my initiation into the high-stakes world of internet-scale services. Back in those days, the &#x201C;cloud&#x201D; wasn&#x2019;t even something you could explain with hand gestures, and of course not something to which you deployed applications, and scaled on a whim.&#xA0;</p><p>Our tools were simple: shell scripting, <strong>Perl </strong>(<em>yes, really!</em>) and hand-rolled <strong>C</strong>-code. We used a system called <strong>CVS </strong>(<a href="https://en.wikipedia.org/wiki/Concurrent_Versions_System?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Concurrent Versions System</a>) for version control, as Git did not exist until 2005 when <a href="https://git-scm.com/book/en/v2/Getting-Started-A-Short-History-of-Git?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Linus Torvalds</a> created it. Our server setup was primitive by today&apos;s standards; we had a single, full-rack size &#x201C;AlphaServer&#x201D; box manufactured by Digital Equipment Corporation (DEC):</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/puf_Y-vrpb4LFQOFn27sLNHeiuOXlqO_9Gju5r0IYtbktkS74ROh-YuieTSUE5cL7TClSSwNiM3-PPSB5-djOoyJdcnIdzuLlKR4d5ST90sAVvu0dzUmRYEb2t8-F7eF5tv177MyrYMkXahdfxDwrhg" class="kg-image" alt="The Roots of Today&apos;s Modern Backend Engineering Practices" loading="lazy" width="358" height="465"><figcaption><i><em class="italic" style="white-space: pre-wrap;">The DEC AlphaServer 8400 box. Image source: </em></i><a href="http://www.bitsavers.org/pdf/dec/brochures/DEC-AlphaServer-8000-System.pdf?ref=blog.pragmaticengineer.com" target="_blank" rel="noopener noreferrer nofollow"><i><em class="italic" style="white-space: pre-wrap;">DEC AlphaServer 8000 Brochure</em></i></a><i><em class="italic" style="white-space: pre-wrap;">. All of Amazon.com ran on such a server in 1997!</em></i></figcaption></figure><p>On the Alpha box, we had an &#x201C;online&#x201D; and &#x201C;offline&#x201D; directory. To update code, we flipped a symlink (<em>a symbolic link is a file whose purpose is to point to a file or directory</em>) to swap between the code and HTML files contained in these directories. At the time, this approach was our best effort to deliver code on the nascent web.&#xA0;</p><p>Amazon.com ran on top of a monolithic C binary named &#x201C;Obidos,&#x201D;<strong> </strong>named after the narrowest, swiftest section of the Amazon river, in Brazil. Obidos shouldered the entire load of a business which became an online retail behemoth.&#xA0;</p><p>I remember the physicality of our systems; the blinking lights of the network traffic, having to put thermometers on servers because we were using converted conference rooms as data centers, and how we put a tarp in one corner because the roof leaked! All our servers had names, including some named after Muppets characters like Bert and Ernie.&#xA0;</p><p><strong>We didn&#x2019;t build our applications in neat containers, but in bulky monoliths which commingled business, database, backend, and frontend logic</strong>. Our deployments were initially manual. Avoiding downtime was nerve-wracking, and the notion of a &apos;rollback&apos; was as much a <em>relief</em> as a technical process.&#xA0;</p><p>To succeed as a software engineer, you needed to be a jack-of-all-trades. We dabbled in network engineering, database management, and system administration. Oh, and did I mention this was <em>on top of</em> writing the code which fueled Amazon&apos;s growth? We were practicing varying shades of DevOps before it existed as a concept.</p><p><strong>On the day I broke the site, I learned the importance of observability. </strong>I mean &#x201C;importance&#x201D; as a fundamental necessity, not a buzzword. Here&#x2019;s how the outage played out:</p><ol><li>I pushed code from dev to staging <em>using a script </em>where everything worked fine.</li><li>I then <em>half-manually</em> pushed code from staging to production. I still used a script, but had to specify parameters.</li><li>I inadvertently specified the wrong parameters for this script. I set the <em>source</em> and <em>destination</em> Apache configuration as the same.</li><li>Rather than failing with an error, this encountered an existing bug in the DEC Unix &#x201C;copy&#x201D; (cp) command, where cp simply overwrote the source file <em>with a zero-byte file</em>.</li><li>After this zero-byte file was deployed to prod, the Apache web server processes slowly picked up the empty configuration file. And it lost pointers to all its resources!</li><li>Apache started to log like a maniac. The web server began diligently recording logs and errors it encountered.</li><li>Eventually, the excessive Apache logs exhausted the number of inodes you can have in a single directory</li><li>Which resulted in the servers becoming completely locked up!</li><li>To resolve this, we had to do a <em>hard </em>reboot. This involved literally pushing the power button button on the server!</li></ol><p><strong>Our ability to monitor what was happening for users on the website was overly simple, it turned out. </strong>It&#x2019;s wasn&#x2019;t that we hadn&#x2019;t thought about monitoring because we automated plenty of things, such as:&#xA0;</p><ul><li>Network monitoring: inbound/outbound traffic</li><li>Database monitoring: for example, keeping track of order volume</li><li>Semi-automated QA process for our &#x201C;dev&#x201D; and &#x201C;staging&#x201D; environments</li></ul><p>Of course, we had no synthetic monitoring back then; as in simulating website usage, and thereby getting notified when things went wrong before users experienced it. Instead, we were regularly notified of bugs when executives&#x2019; spouses and partners encountered issues while trying to buy things!&#xA0;</p><p>Looking back, I could&#x2019;ve done a better job with bounds checking and input validation. By bounds checking, I mean determining whether an input variable is within acceptable bounds before use and input validation. And for input validation, I mean that I could have analyzed inputs and disallowed ones considered unsuitable. I made these improvements after the outage, as part of <a href="https://newsletter.pragmaticengineer.com/p/incident-review-best-practices?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">the post-mortem process</a>, which at Amazon is known as a &#x201C;COE&#x201D; (Correction of Errors,) and uses the &#x201C;<a href="https://www.mindtools.com/a3mi00v/5-whys?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">5 whys methodology</a>&#x201D; developed originally at Toyota, which is still common today across the US. The AWS re:invent conference in 2022 hosted a good <a href="https://youtu.be/Prd2VvSo_p8?si=oduMAQ8FG9tJn5V0&amp;ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">in-depth overview of Amazon&#x2019;s COE process</a>.</p><p>&#x201C;The more things change, the more they stay the same,&#x201D; is one theme of this article. And this was proved true not long after I returned to Amazon in 2014, when a very large AWS service outage was caused by&#x2026; you guessed it; the absence of bounds checking and parallelized execution.</p><p>The outage I caused in 97 taught me that developing robust systems goes hand-in-hand with the development of robust monitoring and observability tooling &#x2013; which should exist <strong>outside</strong> of whatever code you&#x2019;re writing because you can&#x2019;t always anticipate how your code will operate. And of course the incident was a lesson in humility and accountability, demonstrating that how you respond to outages or problems you cause, is a reflection of your character and professional integrity. Nobody&#x2019;s perfect, and reacting positively to challenges and critical feedback significantly enhances how others perceive you.</p><p><strong>But this article isn&apos;t just about learning from the past; it&apos;s about understanding the <em>roots</em> of current backend engineering practices. </strong>Let&#x2019;s dive into the evolution of backend development, from computing&#x2019;s early days up to the present, and try and predict what the future holds. As we go on this journey, remember:</p><p>Every complex system today stands on the shoulders of lessons from earlier, formative times.</p><h1 id="2-the-birth-of-arpanet-1969">2. The birth of ARPANET (1969)</h1><p>To appreciate the magnitude of progress in backend development, we need to go back to 1969 and the birth of <a href="https://en.wikipedia.org/wiki/ARPANET?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">ARPANET</a>. This pioneering project was conceived during the Cold War between the US and the USSR. ARPANET was the world&#x2019;s first major foray into networked computing. This project&#x2019;s advancements laid the groundwork for many technologies still with us today, seven decades later.</p><p><strong>The concept of a distributed network was revolutionary, back then</strong>. ARPANET <a href="https://www.sciencemuseum.org.uk/objects-and-stories/arpanet-internet?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">was designed</a> to maintain communications during outages. This is a principle that has since become a cornerstone of modern backend architecture. But back then, the challenge wasn&apos;t just in building a network; it was about proving distributed systems could be <em>reliable</em>, <em>efficient</em>, and <em>secure,</em> on a scale never attempted before.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/iMgPurErQVbc4XSVLACgd-Vg6rYr1c89jypMs3bFGgM0IyWm05bIz31rS86eI953Jg5pmL7i1tlj7hcFOeiC-ZV0qkJDk4eyKxSlVFvyPQI0l588zI2hJ5pi5Ok7A1HXjgcmMmFIGbkfMSS01sdcuQA" class="kg-image" alt="The Roots of Today&apos;s Modern Backend Engineering Practices" loading="lazy" width="624" height="461"><figcaption><i><em class="italic" style="white-space: pre-wrap;">The structure of ARPANet in Dec 1969, which connected four universities using different computers, all massive is size and cost</em></i></figcaption></figure><p><strong>Consistent experimentation was a hallmark of this era</strong>. Protocols and practices we now regard as rudimentary were cutting-edge breakthroughs.</p><p><a href="https://ethw.org/Packet_Switching?ref=blog.pragmaticengineer.com"><u>Packet switching</u></a> was the method ARPANET used to send data, which laid the foundation for the future internet. In the early 1960s the prevailing communication networks consisted of continuous, analog circuits primarily utilized for persistent voice telephone connections. This approach was transformed by the advent of <strong>packet switching</strong>, which introduced a digital, intermittent framework for networks. This method transmits data in discrete packets, doing so only as needed. Although this introduced the compromises of signal discontinuity and conversion overhead, packet-switching had several advantages:&#xA0;</p><ol><li>Digital signal could be made &quot;error-free&quot;</li><li>Software processing was upgradeable at the connection points</li><li>Redundancy meant networks could survive damage</li><li>Sharing links boosted efficiency</li></ol><p>For more on how packet switching works, <a href="https://ethw.org/Packet_Switching?ref=blog.pragmaticengineer.com"><u>this overview on the Engineering &amp; Technology History Wiki</u></a> is a good start, and it also provides details on how ARPANET was originally connected:</p><blockquote><em>&#x201C;ARPANET was linked by leased communication lines that sent data at speeds of fifty kilobits per second. Operating on the principles of packet switching, it queued up data and subdivided it into 128-byte packets programmed with a destination and address. The computer sent the packets along whichever route would move it fastest to a destination.&#x201D;</em></blockquote><p>Sending digital packages allowed for robust, adaptable communication pathways that could withstand points of failure. This resistance to failure is what modern cloud services replicate in their designs for fault tolerance and high availability.</p><p>There were a lot of technical hurdles which ARPANET had to overcome. The biggest was how to create a network that operated across disparate, geographically separated nodes. To solve this, network engineers devised innovative solutions that went on to influence the development of protocols and systems which underpin today&#x2019;s web. For example, this was when these protocols were invented:</p><ul><li><a href="https://en.wikipedia.org/wiki/Transmission_Control_Protocol?ref=blog.pragmaticengineer.com"><u>TCP/IP</u></a></li><li><a href="https://en.wikipedia.org/wiki/Telnet?ref=blog.pragmaticengineer.com"><u>Telnet</u></a></li><li><a href="https://en.wikipedia.org/wiki/File_Transfer_Protocol?ref=blog.pragmaticengineer.com"><u>FTP protocol</u></a></li><li><a href="https://en.wikipedia.org/wiki/Email?ref=blog.pragmaticengineer.com"><u>Network email</u></a></li></ul><p>All these protocols were built for or, first implemented, on ARPANET!</p><p><strong>As a backend developer, acknowledging ARPANET&apos;s influence is vital.</strong> The engineers who built ARPANET show us the importance of expecting and designing for failure, which is the core principle of backend and distributed systems development practices today. Notions of redundancy, load balancing, and fault tolerance which we work with are the direct descendants of strategies devised by ARPANET&#x2019;s architects.</p><h1 id="3-the-rise-of-the-internet-and-web-based-computing-1989">3. The rise of the internet and web-based computing (1989)</h1><p>ARPANET&apos;s influence expanded in the 1980s when the <a href="https://www.nsf.gov/news/news_summ.jsp?cntn_id=103050&amp;ref=blog.pragmaticengineer.com"><u>National Science Foundation Network</u></a> (NSFNet) provided access to a network of supercomputers across the US. By 1989, the modern Internet as we know it was born, The first commercial Internet Service Providers (ISPs) emerged in the US and Australia, kicking off a radical shift in global communication.</p><p>At the same time as the first ISPs were founded, in 1991 Sir Tim Berners-Lee proposed and implemented the <a href="https://en.wikipedia.org/wiki/HTTP?ref=blog.pragmaticengineer.com"><u>Hypertext Transfer Protocol</u></a> (HTTP.) It defined internet-based communications between a server and a client. HTTP triggered an explosion in connectivity &#x2013; and we can now safely say this protocol proved to be one of two fundamental catalysts of rapid internet adoption.</p><p>What was the other driver of adoption? Well, until 1993, the most common way to access the internet was via text-based interfaces, and the Gopher browser, which looked like this:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/skzmpYDG3z6s_i32ACqmnKYw2V1joy6VuwGWJdH5N2Nmr4l3TqR86Tgl0MOqcpDjsAg7Ysj5cphhQ2R8oPMI_vlnbN5wCCLFfkiBZlfRAQdHyhEhatuB_zdzqG-W-y42kb7cbxurcSYEtK_Mb18R0GQ" class="kg-image" alt="The Roots of Today&apos;s Modern Backend Engineering Practices" loading="lazy" width="624" height="471"><figcaption><i><em class="italic" style="white-space: pre-wrap;">The Gopher browser was how people browsed the internet in the early &#x2018;90s. I used it in college! Image source: </em></i><a href="https://www.howtogeek.com/661871/the-web-before-the-web-a-look-back-at-gopher/?ref=blog.pragmaticengineer.com"><u><i><em class="italic underline" style="white-space: pre-wrap;">HowToGeek</em></i></u></a></figcaption></figure><p>Then in 1993 Marc Andreessen and his team built and launched the first modern web browser, <a href="https://www.livinginternet.com/w/wi_mosaic.htm?ref=blog.pragmaticengineer.com"><u>Mosaic</u></a>, which provided a graphical interface for browsing the internet, making it accessible to a non-technical audience. This milestone is widely considered a critical point in the digital revolution, by enabling the average person to easily and meaningfully engage with online information and resources.</p><p><strong>Scaling challenges became more interesting on the backend side of things. </strong>As the internet&apos;s reach grew, businesses faced the daunting task of making their infrastructure available on this thing called the &#x201C;<em>internet</em>,&#x201D; and scaling it to allow more users to access their services at once. There were several parts of this challenge:&#xA0;</p><ul><li><strong>Serving international audiences</strong>: All code, databases, HTML web pages, customer service tools, etc., were in english only. The localization (l10n) and internationalization (i18n) projects were many months-long undertakings just to launch amazon.de (Germany.) Later, adding support for &#x201C;<a href="https://en.wikipedia.org/wiki/Double-byte_character_set?ref=blog.pragmaticengineer.com"><u>double-byte characters</u></a>&#x201D; to launch amazon.jp (Japan) took just as long.</li><li><strong>Managing increasing, unpredictable website loads</strong>: Amazon was growing tens-of-thousands-of-percent a year by order volume (and 100s of percent in staffing.) Third-party events like &#x201C;<a href="https://en.wikipedia.org/wiki/Oprah%27s_Book_Club?ref=blog.pragmaticengineer.com"><u>Oprah&#x2019;s book club</u></a>&#x201D; could send traffic and orders spiking 1000s of percent. And 1998 was the beginning of Amazon&#x2019;s &#x201C;peak season spike,&#x201D; with a significant increase in sales the day after Thanksgiving, and the Christmas holidays. Even within that period there were waves, peaks and valleys that varied by several orders of magnitude.</li><li><strong>Safeguarding data and systems</strong>: There weren&#x2019;t common tools like public/private key encryption, role-based-access-control (RBAC), zero-trust, least-privilege and other &#x201C;<a href="https://www.fortinet.com/resources/cyberglossary/defense-in-depth?ref=blog.pragmaticengineer.com"><u>defense in depth</u></a>&#x201D; measures that we have today. For example, it used to be common to check your database password into your version control system, and at most obfuscate the password (i.e. by rotating the letters using a ROT13 cypher,) to reduce the risk of storing it plain-text. Clearly, something more secure was needed.</li></ul><p>The early &#x2018;90s also saw the emergence of novel solutions to challenges such as:</p><ul><li>Database management</li><li>Server clustering</li><li>Load balancing</li></ul><p>Today, these challenges still exist but are so much easier to solve, with no shortage of open source or commercial solutions. But 30 years ago, these problem areas demanded hands-on expertise and in-house, custom development.</p><p>At Amazon.com, we had our fair share of backend infrastructure challenges. The business was <a href="https://www.businessinsider.com/jeff-bezos-amazon-history-facts-2017-4?ref=blog.pragmaticengineer.com#bezos-liked-to-move-incredibly-fast-which-often-created-chaos-especially-in-amazons-distribution-centers-8"><u>founded in 1994</u></a>, a year after the Mosaic browser, and grew fast. This rapid growth put constant stress on the infrastructure to just keep up; not to mention Amazon&#x2019;s stated ambition of becoming a global marketplace.&#xA0;</p><p>Internally, we seemed to hit another hard scaling limit every 6 months. This limit was almost always on how much we could scale out monolithic software. Each time we hit such a limit, we were pushed further into implementing distributed systems, and figuring out how to scale them up for demand.</p><p><strong>At the time, it felt like Amazon was forever one bad customer experience away from going under.</strong> It was a high-pressure environment, and yet we needed to build systems for the present, and also for unpredictable but ever-increasing future loads.</p><hr><p><em>These were three out of the nine topics covered in </em><a href="https://newsletter.pragmaticengineer.com/p/the-past-and-future-of-backend-practices?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>The Past and Future of Modern Backend Practices</em></a><em>. The full article additionally covers:</em></p><ol><li>The struggle for scale at Amazon and the birth of SOA (late 1990s)</li><li>Virtualization: the new frontier (1999-2002)</li><li>Cloud computing: A paradigm shift (2006-2009)</li><li>Containers and Kubernetes: reshaping the backend landscape (2013-2019)</li><li>Today&#x2019;s backend ecosystem: defining &#x201C;modern&#x201D;</li><li>Envisioning the future of backend development</li></ol><p><a href="https://newsletter.pragmaticengineer.com/p/the-past-and-future-of-backend-practices?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><strong>Read the full article.</strong></a></p>]]></content:encoded></item><item><title><![CDATA[Asked to do something illegal at work? Here’s what these software engineers did]]></title><description><![CDATA[At FTX, Frank, and Pollen, software engineers were asked to do something potentially illegal, or to go along with what looked like fraud. They obliged in two out of three cases, landed in hot water, and now face jail time. A reminder why it’s never a good idea to go along with such requests. ]]></description><link>https://blog.pragmaticengineer.com/asked-to-do-something-illegal-at-work/</link><guid isPermaLink="false">654d36abcd8b030001a7fbb9</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 09 Nov 2023 19:47:07 GMT</pubDate><media:content url="https://blog.pragmaticengineer.com/content/images/2023/11/Screenshot-2023-11-09-at-11.46.08-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.pragmaticengineer.com/content/images/2023/11/Screenshot-2023-11-09-at-11.46.08-1.png" alt="Asked to do something illegal at work? Here&#x2019;s what these software engineers did"><p><em>The below topic was sent out to full subscribers of </em><a href="https://newsletter.pragmaticengineer.com/about?ref=blog.pragmaticengineer.com" rel="noreferrer"><em>The Pragmatic Engineer</em></a><em>, three weeks ago, in </em><a href="https://newsletter.pragmaticengineer.com/p/the-pulse-66?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>The Pulse #66</em></a><em>. I have received several messages from people asking if they can pay to &#x201C;unlock&#x201D; this information for others, given how vital it is for software engineers. It is vital, and so I&#x2019;m sharing this with all readers, without a paywall. In the unlikely case that you are asked to do something fishy or illegal: I hope the below will help decide how to do the right thing. </em><a href="https://newsletter.pragmaticengineer.com/about?ref=blog.pragmaticengineer.com" rel="noreferrer"><em>Sign up to The Pragmatic Engineer</em></a><em> to get articles like this earlier in your inbox.</em></p><p>What would you do if you learned your company is up to something illegal like stealing customer funds, or you&#x2019;re asked to make code changes that will enable something illegal to happen, like misleading investors, or defrauding customers? Here are three real-life cases, where what engineers and engineering managers did had serious consequences.</p><h4 id="ftx-an-engineering-director-went-along-with-the-fraud">FTX: an engineering director went along with the fraud</h4><p>A trial related to FTX, the cryptocurrency exchange which allegedly defrauded investors of $9B, is ongoing. Day 9 of the trial of former FTX CEO Sam Bankman-Fried trial, heard testimony from Nishad Singh, who joined the business as a software engineer, and later became an engineering director. Here is software engineer and writer</p><p>Molly White</p><p><a href="https://newsletter.mollywhite.net/p/the-ftx-trial-day-nine-nishad-singh?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">summarizes of his evidence</a>:</p><p>&#x201C;To hear Singh tell it, he didn&#x2019;t even really realize what was going on at FTX and Alameda Research until September 2022 &#x2014; only a month or two before everything came crashing down. (...) Several times throughout various testimonies, we&#x2019;ve seen a document written by Sam Bankman-Fried, in which he describes his thinking that Alameda Research should be shut down. That document was, ultimately, how Singh learned in September 2022 that Alameda Research had taken billions of dollars of customer funds from FTX.&#xA0;</p><p>This was when Gary Wang told Singh that Alameda was borrowing massive amounts of customer money from FTX &#x2014; at the time, around $13 billion of it. Singh testified that he felt &#x2018;really afraid&#x2019;, and called an in-person meeting immediately. Bankman-Fried, who was sitting next to Singh at the time, &#x2018;seemed unsurprised and made up what I understood to be a false excuse for dodging the meeting.&#x2019; Singh, Ellison, and Wang met without him, and Singh confirmed his fears: that he had not misunderstood Wang, and that Alameda had actually taken customer funds to that extent.&#x201D;</p><p>Okay, so in September 2022, Singh had confirmation that something illegal was happening at the company, which he had no direct knowledge of, <em>until then</em>. At that point, if he wanted to avoid being an accomplice to potentially illegal activity, his options were:</p><ol><li>Talk to a lawyer on how to avoid assisting a crime</li><li>Turn whistleblower. See the <a href="https://thesignalsnetwork.org/twh/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">tech whistleblower guide</a></li><li>Quit the company, ensuring he did not further aid this activity&#xA0;</li></ol><p>The smart thing would have been to do #1. The profitable thing could have been to do #2 because in the US, a whistleblower may receive a <a href="https://www.phillipsandcohen.com/whistleblower-rewards?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">whistleblower reward</a> of between 10-30% of what the government recovers from fraudulent activities. The final choice #3 is hard, but could have meant Singh would not have had to plead guilty as he did.&#xA0;</p><p>Here&#x2019;s what Singh did instead: he asked for a personal meeting with Bankman-Fried and confronted him about the missing funds. However, Bankman-Fried replied there not much to worry about, and that they&#x2019;d repay the funds by raising more money from investors (!!) This should have been the point at which Singh quit. Instead:</p><p>&#x201C;He thought about leaving the company then, he testified, but worried that his departure could cause everything to fall apart. He felt that if he stayed, maybe he could help the companies make back what they owed.&#x201D;</p><p>For the next two months, Singh tried to make things better, but it was fruitless. FTX collapsed in November 2022.</p><p><strong>Lesson #1: when you discover fraud may be happening, do not &#x201C;stay around to fix it.&#x201D; </strong>Any other approach would have been better for Singh; seeking legal advice, turning whistleblower, or quitting on the spot.</p><p>To be fair, Singh didn&#x2019;t seen <em>totally</em> clueless, and it seems he decided to profit on the developments. Days after he found about this fraud, he took a $3.7M loan from FTX (!!) to buy a house, The Verge <a href="https://www.theverge.com/2023/10/17/23921745/sam-bankman-fried-nishad-singh-house-loan?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">pointed out</a>. It&#x2019;s exactly the type of thing you don&#x2019;t want to do after you discover fraud.</p><p>Now, Singh is facing up to 75 years in jail thanks to his decision to aid the company after discovering the fraud. His sentence will most likely be reduced due to his plea deal, but any course of action which leads to a criminal conviction is surely a grave error of judgment.</p><h4 id="frank-a-software-engineer-refuses-to-fake-customer-data">Frank: a software engineer refuses to fake customer data</h4><p>Frank was a student loan startup founded by Charlie Javice in 2016. In 2019, Javice was featured on the Forbes &#x201C;30 under 30&#x201D; <a href="https://www.forbes.com/30-under-30/2019/finance/?ref=blog.pragmaticengineer.com#67e877a27e80" rel="noopener noreferrer nofollow">finance list</a>, suggesting she was a high-flying founder:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/11/Screenshot-2023-11-09-at-11.46.08.png" class="kg-image" alt="Asked to do something illegal at work? Here&#x2019;s what these software engineers did" loading="lazy" width="1180" height="414" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/11/Screenshot-2023-11-09-at-11.46.08.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/11/Screenshot-2023-11-09-at-11.46.08.png 1000w, https://blog.pragmaticengineer.com/content/images/2023/11/Screenshot-2023-11-09-at-11.46.08.png 1180w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">How Charlie Javice appeared on the Forbes 30 under 30 list in 2019. We now know the 300,000 user number was fake. Source: Forbes</span></figcaption></figure><p>It certainly seemed like Charlie Javice was a standout founder; in 2021, JP Morgan purchased Frank for $175M. However, things turned sour quickly. JP Morgan thought it bought a startup with 5 million customers, which worked with 6,000 schools. But after the purchase, this data was found to be mostly fake.</p><p>Let&#x2019;s get to a software engineer&#x2019;s involvement. This April, founder Charlie Javice was arrested, and a lawsuit is ongoing between her, former Chief Growth Officer Olivier Amar, and JP Morgan. From to this lawsuit, we get an inside look at how events unfolded inside Frank.</p><p><strong>In 2021, an engineer was asked to produce fake data for 4.2M non-existent customers. </strong>As acquisition talks were ongoing, JP Morgan wanted to validate that Frank had the nearly 5M customers it claimed. In reality, Frank had 293,000 customers, so the CEO asked an engineer to fake the data and turn this list into 4.2M members. Here&#x2019;s what happened next &#x2013; from<a href="https://www.documentcloud.org/documents/23570243-frank_suit?ref=blog.pragmaticengineer.com#document/p21" rel="noopener noreferrer nofollow"> the lawsuit</a>:</p><p>&#x201C;[In 2021] Javice [CEO], Amar [Chief Growth Officer] and the Director of Engineering then had a Zoom meeting during which Javice and Amar asked the Director of Engineering to help them create a synthetic list of customer data. She asked the Director of Engineering if he could help take a known set of FAFSA application data and use it to artificially augment a much larger set of anonymous data tht her systems had collected over time.</p><p>The Director of Engineering questioned whether creating and using such a data set was legal, but Javice tried to assure the engineer by claiming that this was perfectly acceptable in an investment situation and she did not believe that anyone would end up in an &#x2018;orange jumpsuit&#x2019; over this project.&#x201D;</p><p><strong>Lesson #2: when your manager claims they don&#x2019;t believe anyone would end up in an &#x201C;orange jumpsuit,&#x201D; assume that someone definitely could. </strong>The engineering director&#x2019;s next step? They refused:</p><p>&#x201C;The Director of Engineering was not persuaded and told Javice and Amar that he would not perform the task, and only would send them the file containing Frank&#x2019;s actual users, which amounted to approximately 293,000 individuals at the time.&#x201D;</p><p>And this engineering director played it right, as the people who are likely to go to jail and end up in orange jumpsuits are the other two people on the call, who knowingly went along with the illegal.</p><h4 id="pollen-an-engineer-told-to-double-charge-customers-by-the-ceo">Pollen: an engineer told to double charge customers by the CEO</h4><p>Last year, I published my first &#x2013; and to date only&#x2013; investigative article on <a href="https://newsletter.pragmaticengineer.com/p/pollen?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">how events tech startup Pollen raised $200M and then collapsed</a>, owing months of wages to staff. In the investigation, I focused on an unusual detail: $3.2M worth of funds taken months early from customers. The incident was described internally by Pollen as a mistake, and an incident review <em>should</em> have followed. Even more confusing, the company blamed the payments processor Stripe for the incident.</p><p>The reality was that this was a very deliberate double charge. I could not share this fact at the time &#x2013; as the company threatened me with libel after I informed them of this detail &#x2013; but the BBC has now produced a documentary <a href="https://www.bbc.co.uk/iplayer/episode/m001n327/crashed-800m-festival-fail?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">revealing details</a> about this deliberate double charge that was covered up as an outage. From <a href="https://www.bbc.co.uk/programmes/m001n327?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">the documentary</a>:</p><p>[Narrator] &#x201C;Pollen initially told some customers that the problem was with their payments provider. Later, Callum [the CEO] addressed his staff who were demanding to know what happened.&#x201D;</p><p>[CEO of Pollen talking] &#x201C;All that happened was that a couple millions of dollars of payment plans that were due to be paid at a later month were then paid earlier. It&#x2019;s being investigated. We&#x2019;ve committed already that once that investigation is done, it will be shared with the company so that people understand what happened.&#x201D;</p><p>[Narrator] &#x201C;With over 1,500 customers impacted, rumors began to circulate about the causes of the incident.&#x201D;</p><p>[Dan Taylor, managing editor at Tech.eu] &#x201C;From my understanding, there was a creative code &#x2018;malfunction&#x2019; that all of the sudden, double charged customers. But that double charge magically happened to meet Pollen&#x2019;s payroll, that month. Hmm! Odd, don&#x2019;t you think?&#x201D;</p><p>[Narrator] &#x201C;The internal investigation due to be shared with the company was never completed, but a group of Pollen staff did their own, unofficial digging. (...) The code contained in the report confirms that the customer&apos;s monthly payment plans had been manually altered, which meant that double or triple charges will take place on a single day, without the customer&#x2019;s authorization.&#x201D;</p><p>The engineer making this change even did a test run the day before, to ensure that this code change &#x201C;correctly&#x201D; double charges customers! A former Pollen software engineer appearing in the documentary also makes the point that any code changing production code in payments needs to go through code review, so whoever made this change could have not been acting alone.</p><p>Two days after the incident, a senior engineering team member sent an internal chat message to 3 colleagues, where they admit that they had run the script at the request of the CEO. Here is what this message said:</p><p>&#x201C;Also want to come clean that it was me who ran a bad script - in hindsight I wasn&#x2019;t knowledgeable enough to alter a subset of payment plans for Balvin [one of the events organized by Pollen]. I did this as a special request from Callum and didn&#x2019;t want to raise on call to handle. It&#x2019;s been a long week and I displayed a very poor form of judgement.&#x201D;</p><p>In the video, a Pollen software engineer is shown the message, and he says: &#x201C;I&#x2019;m not sure I buy this. It seems a bit fishy.&#x201D;</p><p><strong>Lesson #3: if the CEO asks you to do something potentially illegal &#x2013; document it, and consider not doing it. </strong>We don&#x2019;t know what happened with the senior engineering member who carried out the code changes, following a request from the CEO. This person could have said no, like the engineering director at Frank did. The message sent a few days ago already said that this person regretted doing so, and it&#x2019;s unlikely that this action was worth the risk it carried.</p><p><strong>If you take one lesson from this, it&#x2019;s that you can always say no. </strong>In these three stories, the only engineer who&#x2019;s legally safe is the former engineering director at Frank who point blank refused to assist what could be an illegal request. The engineering director at FTX who stayed after he confirmed fraud was occurring is now facing jail time, while the senior engineering member at Pollen is at the mercy of the UK police, and how they deal with what could be a potential wire fraud case.&#xA0;</p>]]></content:encoded></item><item><title><![CDATA[Handling a Regional Outage: Comparing the Response From AWS, Azure and GCP]]></title><description><![CDATA[This year, AWS, Azure, and Google Cloud have all suffered comparable regional outages. How did they respond, and why do Azure’s processes stand out compared to its rivals?]]></description><link>https://blog.pragmaticengineer.com/aws-azure-and-gcp-regional-outages/</link><guid isPermaLink="false">6541516ffd7f00000184c668</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 31 Oct 2023 19:19:46 GMT</pubDate><media:content url="https://blog.pragmaticengineer.com/content/images/2023/10/Screenshot-2023-10-31-at-19.51.23.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.pragmaticengineer.com/content/images/2023/10/Screenshot-2023-10-31-at-19.51.23.png" alt="Handling a Regional Outage: Comparing the Response From AWS, Azure and GCP"><p><em>&#x1F44B; Hi, this is<a href="https://twitter.com/gergelyorosz?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em> Gergely</em></a> with a bonus, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover topics related to Big Tech and startups through the lens of engineering managers and senior engineers. In this article, we cover three out of seven topics from today&#x2019;s subscriber-only issue <a href="https://newsletter.pragmaticengineer.com/p/three-cloud-providers-three-outages?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>Three Cloud Providers, Three Outages: Three Different Responses</em></a>. To get full issues twice a week, <a href="https://newsletter.pragmaticengineer.com/about?ref=blog.pragmaticengineer.com" rel="noreferrer"><em>subscribe here</em></a>.</em></p><p>It&#x2019;s rare that all three major cloud providers suffer regional outages, but that&#x2019;s exactly what happened between April and July:</p><ul><li><strong>25 April 2023: GCP</strong>. A Google Cloud region (europe-west-9) went offline for about a day, and a zone was offline for two weeks (europe-west-9-a.) (<a href="https://status.cloud.google.com/incidents/dS9ps52MUnxQfyDGPfkY?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">incident details</a>). <em>We did a deepdive into this incident in <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-61?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>What is going on at Google Cloud?</em></a></em></li><li><strong>13 June 2023: AWS.</strong> The largest AWS region (us-east-1) degraded heavily for 3 hours, impacting 104 AWS services. A joke says that when us-east-1 sneezes the whole world feels it, and this was true: Fortnite matchmaking stopped working, McDonalds and Burger King food orders via apps couldn&#x2019;t be made, and customers of services like Slack, Vercel, Zapier and <a href="https://newsletter.pragmaticengineer.com/i/128551200/awss-us-east-outage?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">many more</a> all felt the impact. (<a href="https://aws.amazon.com/message/061323/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">incident details</a>). <em>We did a deepdive into this incident earlier in <a href="https://newsletter.pragmaticengineer.com/i/128551200/awss-us-east-outage?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>AWS&#x2019;s us-east-1 outage</em></a>.</em></li><li><strong>5 July 2023: Azure</strong>. A region (West Europe) partially went down for about 8 hours due to a major storm in the Netherlands. Customers of Confluent, CloudAmp, and several other vendors running services out of this region suffered disruption. (<a href="https://azure.status.microsoft/en-gb/status/history/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">incident details</a>). <em>We touched on this outage in <a href="https://newsletter.pragmaticengineer.com/i/133470251/how-can-a-storm-damage-fiber-cables?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>The Scoop #55: how can a storm damage fiber cables?</em></a></em></li></ul><p>A regional outage is rare for any cloud provider because regions are built to be resilient. The fact each major cloud provider suffered one allows us to compare their responses, and take some learnings about best practices. We&#x2019;ll also learn how this article contributed to AWS publishing its first public postmortem in two years!</p><p>Today, we cover:</p><ul><li>1. Communicating during the incident</li><li>2. Preliminary incident details</li><li>3. Incident postmortem and retrospective<ul><li>3.1 Azure&#x2019;s standout postmortem and retrospective</li><li>3.2 Google Cloud&#x2019;s detailed incident review</li><li>3.3 Silence of AWS (until this article was about to publish)</li></ul></li></ul><h2 id="1-communicating-during-the-incident">1. Communicating during the incident</h2><p>How did the cloud providers communicate during the incidents? A summary:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/10/Screenshot-2023-10-31-at-21.11.00.png" class="kg-image" alt="Handling a Regional Outage: Comparing the Response From AWS, Azure and GCP" loading="lazy" width="1296" height="786" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/10/Screenshot-2023-10-31-at-21.11.00.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/10/Screenshot-2023-10-31-at-21.11.00.png 1000w, https://blog.pragmaticengineer.com/content/images/2023/10/Screenshot-2023-10-31-at-21.11.00.png 1296w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">How each cloud provider communicated during the incident, and how easy incident notes are to find after an outage is resolved</span></figcaption></figure><p><strong>Google Cloud</strong> is the only cloud provider that preserved the incident communication log <a href="https://status.cloud.google.com/incidents/dS9ps52MUnxQfyDGPfkY?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">on the incident page</a>, so we can see which updates occurred and when. I like that every status update followed this template:</p><blockquote>&#x201C;Summary: {short summary}<br>Description: {more details, based on what is known}<br>{When the next update can be expected}<br>Diagnosis: {summary if this is known}<br>Workaround: {possible workaround for customers}&#x201D;</blockquote><p>The incident at Google Cloud was a particularly nasty one; flames spread through a data center hosting the europe-west-9-a zone, and also some clusters from the europe-west-9-c zone. The incident caused the entire europe-west-9 region to be inaccessible for around 14 hours. There was little to tell customers beyond that they needed to fail over to other regions. Google Cloud posted regular updates sharing what they could, such as this, four hours into the incident:</p><blockquote>&#x201C;Summary: We are investigating an issue affecting multiple Cloud services in the europe-west9-a zone<br><br>Description: Water intrusion in europe-west9-a led to an emergency shutdown of some hardware in that zone. There is no current ETA for recovery of operations in europe-west9-a, but it is expected to be an extended outage. Customers are advised to fail over to other zones if they are impacted.<br><br>We will provide an update by Wednesday, 2023-04-26 00:30 US/Pacific with current details.<br><br>We apologize to all who are affected by the disruption.<br><br>Diagnosis: Customers may be unable to access Cloud resources in europe-west9-a<br><br>Workaround: Customers can fail over to other zones.&#x201D;</blockquote><p>After the first few hours, updates became pretty much copy-paste and uninformative. However, GCP kept providing them, and was clear about when the next update was due.&#xA0;</p><p>While I appreciate continuous updates, these were unnecessarily verbose and robotic in tone; as if someone was resending the same template every 30 minutes. It was also hard to tell when an update contained new information. Despite that, it&#x2019;s better to send updates and make them visible after an incident, than to not send them, or remove them post-incident.</p><p><strong>AWS</strong> did the best job of sharing concise, clear and frequent-enough updates among all the cloud providers. Here are the updates from the first hour of the incident:</p><blockquote><strong>&#x201C;[5 June 2023] 12:08 PM PDT</strong> We are investigating increased error rates and latencies in the US-EAST-1 Region.<br><br><strong>12:19 PM PDT</strong> AWS Lambda function invocation is experiencing elevated error rates. We are working to identify the root cause of this issue.<br><br><strong>12:26 PM PDT</strong> We have identified the root cause of the elevated errors invoking AWS Lambda functions, and are actively working to resolve this issue.<br><br><strong>12:36 PM PDT </strong>We are continuing to experience increased error rates and latencies for multiple AWS Services in the US-EAST-1 Region. We have identified the root cause as an issue with AWS Lambda, and are actively working toward resolution. For customers attempting to access the AWS Management Console, we recommend using a region-specific endpoint (such as: https://us-west-2.console.aws.amazon.com). We are actively working on full mitigation and will continue to provide regular updates.<br><br><strong>1:14 PM PDT</strong> We are continuing to work to resolve the error rates invoking Lambda functions. We&apos;re also observing elevated errors obtaining temporary credentials from the AWS Security Token Service, and are working in parallel to resolve these errors.<br><br><strong>1:38 PM PDT</strong> We are beginning to see an improvement in the Lambda function error rates. We are continuing to work towards full recovery.&#x201D;</blockquote><p>Ninety minutes into the incident, an update provided a summary of progress:</p><blockquote><strong>&#x201C;1:48 PM PDT</strong> Beginning at 11:49 AM PDT, customers began experiencing errors and latencies with multiple AWS services in the US-EAST-1 Region. Our engineering teams were immediately engaged and began investigating. We quickly narrowed down the root cause to be an issue with a subsystem responsible for capacity management for AWS Lambda, which caused errors directly for customers (including through API Gateway) and indirectly through the use by other AWS services. We have associated other services that are impacted by this issue to this post on the Health Dashboard.<br><br>Additionally, customers may experience authentication or sign-in errors when using the AWS Management Console, or authenticating through Cognito or IAM STS. Customers may also experience intermittent issues when attempting to call or initiate a chat to AWS Support.<br><br>We are now observing sustained recovery of the Lambda invoke error rates, and recovery of other affected AWS services. We are continuing to monitor closely as we work towards full recovery across all services.&#x201D;</blockquote><p>And an update inside the final hour and a half of the outage:</p><blockquote><strong>&#x201C;2:00 PM PDT</strong> Many AWS services are now fully recovered and marked Resolved on this event. We are continuing to work to fully recover all services.<br><br><strong>2:29 PM PDT</strong> Lambda synchronous invocation APIs have recovered. We are still working on processing the backlog of asynchronous Lambda invocations that accumulated during the event, including invocations from other AWS services (such as SQS and EventBridge). Lambda is working to process these messages during the next few hours and during this time, we expect to see continued delays in the execution of asynchronous invocations.<br><br><strong>2:49 PM PDT</strong> We are working to accelerate the rate at which Lambda asynchronous invocations are processed, and now estimate that the queue will be fully processed over the next hour. We expect that all queued invocations will be executed.&#x201D;</blockquote><p><strong>Azure</strong> is the only cloud provider whose updates from during the incident cannot be viewed after it was resolved. I tracked this incident at the time and there were regular updates. However, today there is no paper trail to see their contents.&#xA0;</p><p>There is plenty to like about how Azure handles public communications, but it is the only major cloud provider that makes incident notes inaccessible to public view after an outage is resolved.</p><h2 id="2-preliminary-incident-details">2. Preliminary incident details</h2><p>With any incident, mitigation comes first. An investigation starts after everything is back to normal and customers can use a service as normal. This investigation can be time consuming, so it&#x2019;s hard to tell customers exactly when to expect more details. However, in these cases we aren&#x2019;t talking about a small engineering team with a few users; but the largest cloud providers in the world upon whom tens of thousands of businesses rely. And these businesses expect some full details when a full investigation is complete. Here&#x2019;s how the providers compared:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/10/Screenshot-2023-10-31-at-19.33.18.png" class="kg-image" alt="Handling a Regional Outage: Comparing the Response From AWS, Azure and GCP" loading="lazy" width="1608" height="902" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/10/Screenshot-2023-10-31-at-19.33.18.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/10/Screenshot-2023-10-31-at-19.33.18.png 1000w, https://blog.pragmaticengineer.com/content/images/size/w1600/2023/10/Screenshot-2023-10-31-at-19.33.18.png 1600w, https://blog.pragmaticengineer.com/content/images/2023/10/Screenshot-2023-10-31-at-19.33.18.png 1608w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">How the cloud providers did in making preliminary incident reviews public</span></figcaption></figure><p><strong>AWS</strong> was extremely fast in providing a summary of the incident, and did so in just 5 minutes (!!) after the incident was mitigated. Below is the update added to the status page:</p><blockquote><strong>&#x200B;&#x200B;3:42 PM PDT</strong> Between 11:49 AM PDT and 3:37 PM PDT, we experienced increased error rates and latencies for multiple AWS Services in the US-EAST-1 Region. Our engineering teams were immediately engaged and began investigating. We quickly narrowed down the root cause to be an issue with a subsystem responsible for capacity management for AWS Lambda, which caused errors directly for customers (including through API Gateway) and indirectly through the use of other AWS services. Additionally, customers may have experienced authentication or sign-in errors when using the AWS Management Console, or authenticating through Cognito or IAM STS.<br><br>Customers may also have experienced issues when attempting to initiate a Call or Chat to AWS Support. As of 2:47 PM PDT, the issue initiating calls and chats to AWS Support was resolved.<br><br>By 1:41 PM PDT, the underlying issue with the subsystem responsible for AWS Lambda was resolved. At that time, we began processing the backlog of asynchronous Lambda invocations that accumulated during the event, including invocations from other AWS services. As of 3:37 PM PDT, the backlog was fully processed. The issue has been resolved and all AWS Services are operating normally.&#x201D;</blockquote><p>Call me amazed. Credit where it is due, this communication was fast and on point. Unfortunately, it was also almost the last time AWS communicated anything publicly about this outage.</p><p>Google Cloud posted a preliminary incident review 14 days after the regional outage was resolved, at the time when the europe-west-9-a zone was still down. The fact that the zonal outage lasted 14 days makes it a little tricky to judge whether Google Cloud posted the preliminary report one day after the <em>full</em> outage was resolved, or 14 days after the <em>regional</em> outage was mitigated.</p><p>I am leaving the 14 days here, because a regional outage is far wider-reaching than a zonal outage, and Google did leave customers who were dependent on the europe-west-9 region &#x2013; but not the europe-west-9-a zone &#x2013; waiting two weeks for preliminary details.</p><p><strong>Azure</strong> is the only cloud provider that publishes timelines on preliminary PIRs (production incident reviews) &#x2013; and for full incident reviews:</p><blockquote>&#x201C;We endeavor to publish a &#x2018;Preliminary&#x2019; PIR within 3 days of incident mitigation, to share what we know so far. After our internal retrospective is completed (generally within 14 days) we will publish a &#x2018;Final&#x2019; PIR with additional details/learnings.&#x201D;</blockquote><p>In this case, I remember Azure did publish such a review, and it was within the 3-day timeframe. However, after the final review was published the preliminary review was no longer publicly available.</p><h2 id="3-incident-postmortem-and-retrospective">3. Incident postmortem and retrospective</h2><p>Until this post, the 3 cloud providers did comparably well at handling their incidents. Post-incident is where things diverged significantly:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/10/Screenshot-2023-10-31-at-19.42.48.png" class="kg-image" alt="Handling a Regional Outage: Comparing the Response From AWS, Azure and GCP" loading="lazy" width="1698" height="906" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/10/Screenshot-2023-10-31-at-19.42.48.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/10/Screenshot-2023-10-31-at-19.42.48.png 1000w, https://blog.pragmaticengineer.com/content/images/size/w1600/2023/10/Screenshot-2023-10-31-at-19.42.48.png 1600w, https://blog.pragmaticengineer.com/content/images/2023/10/Screenshot-2023-10-31-at-19.42.48.png 1698w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">How the providers handled the final post-incident review</span></figcaption></figure><h3 id="31-azure%E2%80%99s-standout-postmortem-and-retrospective">3.1 Azure&#x2019;s standout postmortem and retrospective</h3><p>On 5 July 2023, one of the worst storms to ever hit the Netherlands struck, which I can attest to, first-hand. In The Scoop #55 I <a href="https://newsletter.pragmaticengineer.com/i/133470251/how-can-a-storm-damage-fiber-cables?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">shared a photo</a> of a tree uprooted and felled by the storm winds, just a few blocks from my house. I wrote that such an event could tear cables. Well, it turns out this is exactly what happened in Azure&#x2019;s case; the storm uprooted a tree which yanked a data center fiber path out from under the ground:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/Jmr7eLfdQat5lsDkaOjdMw24iKtZujPiqXs8J7rlOD654x-XJrUqj7KMzW8vYXyyjtKTxCK_gmt7qnZdcbPC3kH32h7aHbqx12K-PDWzKOpr-n_huCoRtMV_mqj56gmfyL3fId6BkiGZoFXWegHVhBE" class="kg-image" alt="Handling a Regional Outage: Comparing the Response From AWS, Azure and GCP" loading="lazy" width="602" height="333"><figcaption><i><em class="italic" style="white-space: pre-wrap;">The Azure fiber paths that were cut, thanks to a massive storm in the Netherlands. Image source: </em></i><a href="https://www.youtube.com/watch?v=tODJb-Tm_q0&amp;ref=blog.pragmaticengineer.com"><u><i><em class="italic underline" style="white-space: pre-wrap;">Microsoft</em></i></u></a><i><em class="italic" style="white-space: pre-wrap;">.</em></i></figcaption></figure><p>The <a href="https://azure.status.microsoft/en-gb/status/history/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">full production incident review</a> was published within two weeks of mitigation, and contained these sections:</p><ul><li>&#x201C;What happened?&#x201D;</li><li>&#x201C;What went wrong and why?&#x201C;</li><li>&#x201C;How did we respond?&#x201D;</li><li>&#x201C;How are we making incidents like this less likely or less impactful?&#x201C;</li><li>&#x201C;How can customers make incidents like this less impactful?&#x201D;</li></ul><p>The storm severed a cable which caused 25% of network links between two West Europe data centers to become unavailable. The problem was that network capacity was already above target utilization &#x2013; and packets started to drop as a result of the capacity loss. Azure responded by starting to rebalance traffic in its network, and sent technicians to repair the cable. Cable restoration took longer thanks to the extreme weather, and functionality was restored thanks to rebalancing the network.</p><p><strong>Azure was the only provider to share dates alongside not-yet-completed action items. </strong>Not only was Azure the fastest of all providers to publish their final postmortem: but it is the only cloud provider to do this with dates as ETAs:</p><blockquote>&#x201C;How are we making incidents like this less likely or less impactful?<br><br>- We have repaired the impacted networking links, in partnership with our dark fiber provider in the Netherlands. (Completed)<br><br>- Within 24 hours of the incident being mitigated we brought additional capacity online, on the impacted network path. (Completed)<br><br>- Within a week of the incident, we are 90% complete with our capacity augments that will double capacity in our West Europe region to bring utilization within our design targets. (Estimated completion: July 2023)<br><br>- As committed in a previous Post Incident Review (PIR), we are working towards auto-declaring regional incidents to ensure customers get notified more quickly (Estimated completion: August 2023).&#x201D;</blockquote><p>Now this is what I call self-imposed accountability!</p><p><strong>Azure took the incident review further than other cloud providers, by holding a post-incident video discussion. </strong>This discussion is like a video retrospective, and Azure describes it like this:</p><blockquote>&#x201C;In addition to providing a written post-incident review after major outages, we also now host these retrospective conversations. You&#x2019;re about to watch a recording of a livestream, where we invited impacted customers through Azure Service Health to join our panel of experts in a live Q&amp;A.&#x201D;</blockquote><p>The video discussion is 23 minutes long, and <a href="https://www.youtube.com/watch?v=tODJb-Tm_q0&amp;ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">well worth a watch</a> for anyone interested in reliability or networking:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/_uYYv8KCSCOSXTcmWt1ePZgZhhqndnXVg-_uMvLMm1r5JY5Ha8WqIjeGCkuuXYDWx0cw6Nz2Zs2YIFZPJvUJCm3Usg7qJp1vyhBBzYbokNl8cDf9n71kjvitoIKvvBQ2O5P-_ViaQfvWQAZ84w2qeAM" class="kg-image" alt="Handling a Regional Outage: Comparing the Response From AWS, Azure and GCP" loading="lazy" width="602" height="264"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Azure&#x2019;s incident retrospective video is a conversation that includes Microsoft&#x2019;s learnings, and guidance for customers on how to improve reliability. Source: </em></i><a href="https://www.youtube.com/watch?v=tODJb-Tm_q0&amp;ref=blog.pragmaticengineer.com"><u><i><em class="italic underline" style="white-space: pre-wrap;">Microsoft</em></i></u></a></figcaption></figure><p>This video retrospective featured several people:</p><ul><li>The hosts: David Steele (Senior Program Manager on the Post-Incident Transparency team) and Sami Kubba (Principal PM Manager and Communications Team Lead)</li><li>Dave Moltz: Head of the Networking team</li><li>Jitendra Padhye: Partner Software Engineering Manager</li><li>Frank Rey: Partner Technical Program Manager</li></ul><p>The video retrospective was surprisingly useful, with a lot of information the PIR did not contain. For example:</p><ul><li>Azure sees about 40 fiber cut issues per day(!), meaning a fiber cut is &#x201C;business as usual.&#x201D; During the recording, a fiber cut was being handled in the UK which was invisible to customers.</li><li>The Western Europe region was &#x201C;running hot&#x201D; compared to other regions, in not having as much networking redundancy as Azure prefers. The team ended up adding enough capacity to create more resilience.</li></ul><p><strong>My impression of Azure from a reliability perspective has greatly improved after watching this incident review. </strong>It feels like the Azure team took the incident seriously, were transparent about what happened, and were very clear about what improvements they were making to avoid similar outages. The review also helped reveal the scale at which Azure operates, with more than three dozen fiber cuts occurring every day, globally!</p><p>The review closed with these words:</p><blockquote>&#x201C;At the scale at which our [Azure&#x2019;s] Cloud operates, incidents are inevitable. Just as Microsoft is always learning and improving, we hope our customers and partners can learn from these two, and provide a lot of reliability guidance through the <a href="https://learn.microsoft.com/en-us/azure/well-architected/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Azure Well-Architected Framework</a>. (...)<br><br><strong>We&#x2019;re really focused on being as transparent as possible and showing up as being accountable after these major incidents</strong>.&#x201D;</blockquote><p>Azure not only talks the talk; it walks the walk. Outstanding incident transparency is a blueprint any vendor can follow &#x2013; if you want to go above and beyond on transparency and accountability, that is.</p><h3 id="32-google-cloud%E2%80%99s-detailed-incident-review">3.2 Google Cloud&#x2019;s detailed incident review</h3><p>The good thing about Google Cloud is that it published a preliminary incident review, and followed up with a postmortem two months after the incident on 23 June, after the region went offline on 25 April. The bad thing is that these two reviews contradict one another: the preliminary postmortem makes clear that two zones operated out of one data center (!), but the final review omitted this rather significant detail. Even worse, Google Cloud did not address this contradiction, despite me asking them about it for about a month. In September, I covered the outage in depth in <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-61?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">The Pulse #61: What is Going on at Google Cloud?</a>, writing:</p><blockquote><em>&#x201C;In Paris, Google Cloud seems to have partially operated two zones from the same data center. The fire that took the &#x201C;europe-west9&#x201D; region offline was caused by a water leak in the battery room at a Globalswitch data center, which is where one of Google Cloud&apos;s zones operates.&#xA0;<br><br>Google published a preliminary incident report two weeks after the incident, on 10 May. In this report they wrote:</em><br><br>- A water leak caused a fire in a Paris data center, in the battery room.<br><br>- The water leak initially impacted a portion of europe-west9-a; however, <strong>the subsequent fire required all of europe-west9-a and a portion of europe-west9-c to be temporarily powered down</strong> (...) Many regional services were affected while europe-west9-c was partially unavailable.<br><br>It&#x2019;s clear the fire was in the data center where the europe-west9-a zone was based. But why would a fire in europe-west9-a require the powering down of a portion of an independent data center? The obvious explanation is that some instances of europe-west9-c were operated in the same data center location as europe-west9-a operates from!&#xA0;<br><br><em>I asked Google if europe-west9-a and europe-west9-c are in the same building, at least partially. The company responded, but failed to answer the question.</em>&#x201D;</blockquote><p>Ultimately, Google Cloud went through the process of providing status updates, then providing a preliminary postmortem, and then closing with a final incident review. However, in comparison with the other cloud providers:</p><ul><li>AWS did a better job with concise and informative status updates.</li><li>Both Azure and AWS provided a preliminary incident report much faster than Google Cloud did. Azure had its final incident report ready in the 14 days Google took to publish a preliminary report.</li><li>Azure was more up front in sharing the root cause of the outage, and changes they made for greater resilience. Google did a decent job with the root cause though.</li></ul><p><strong>Google Cloud <em>did</em> provide the most detailed written post-incident analysis of all three providers. </strong>It also addressed how one building could bring down a whole region, and what they were doing about it, <a href="https://status.cloud.google.com/incidents/dS9ps52MUnxQfyDGPfkY?ref=blog.pragmaticengineer.com#73mBtVKKfeJGJ1yaY7hV" rel="noopener noreferrer nofollow">writing</a>:</p><blockquote>&#x201C;Google uses an internal version of regional Spanner as a back-end database to several Google Cloud services such as IAM and various control planes that manage our infrastructure and services for a region. The outage had a regional impact as this regional Spanner was not configured correctly across the three buildings in the region for it to maintain its quorum. Regional Spanner should have had one replica in each of the three buildings in the region. Instead, it had two of its three replicas in two different clusters in the building that was powered down. (...)<br><br>We are currently conducting a detailed per-region audit (and conducting any required remediation if needed) of our internal regional Spanner allocations to confirm all regions fully meet Google Cloud expectations for fault isolation to prevent this issue in the future.&#x201D;</blockquote><p>This incident is hard to separate from what looks like a deliberate design choice by Google to partially operate two zones out of one data center. This is the type of approach that would be impossible to fathom AWS doing because the company is clear that &#x201C;two zones&#x201D; always means two separate locations, far enough away from each other. So even if a data center goes up in flames &#x2013; as happened to Google &#x2013; the region is still operational.</p><h3 id="33-silence-of-aws-until-this-article-was-about-to-publish">3.3 Silence of AWS (until this article was about to publish)</h3><p>AWS did not follow up with any form of postmortem for more than four months after the incident. The company maintains a page <a href="https://aws.amazon.com/premiumsupport/technology/pes/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">with postmortems</a>, stating that the page contains incidents deemed significant. On average, there has been once postmortem published per year, and none since December 2021:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/_v5pzRzUjhGLE8sjtBDvMkPMtgVn4uM73Hw_iPcxIBvvLCHshi_4Tx4VfNnQDpX4Y1B2qIVSZ4A9E4j98L6Jy_13K0QDS8Gpwe2Oc5zTADENzmSxRKzC-v1-kziFNCcGQHOeVLMe6dHiIcb56-SQkDI" class="kg-image" alt="Handling a Regional Outage: Comparing the Response From AWS, Azure and GCP" loading="lazy" width="602" height="415"><figcaption><i><em class="italic" style="white-space: pre-wrap;">AWS publishes surprisingly few postmortems compared to rival cloud providers</em></i></figcaption></figure><p>We can easily compare this publishing cadence with other providers:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/EdmEPhEvR8lmof5eVu9SR2k1_fDe1KD8a7RacD6yunrPFdycKi6n1g8lBlzJS37eXUjuvvzPW-4m81iQWYxucyphukrWjl3k5ZIYSNFQrj1sw98zcOUAvr0lM3QmIRUv-wc385Av8AevQV8r6hg4tr4" class="kg-image" alt="Handling a Regional Outage: Comparing the Response From AWS, Azure and GCP" loading="lazy" width="602" height="519"><figcaption><i><em class="italic" style="white-space: pre-wrap;">No other cloud provider makes postmortems public as rarely as AWS does</em></i></figcaption></figure><p>Looking at 2023 incidents for 2023:</p><ul><li>Google Cloud <a href="https://status.cloud.google.com/summary?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">published</a> more than 100 production incident reviews, and is the most granular of all providers in reporting incidents</li><li>Azure <a href="https://azure.status.microsoft/en-gb/status/history/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">published</a> 15 production incident reviews</li><li>AWS <a href="https://aws.amazon.com/premiumsupport/technology/pes/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">published</a> zero&#x2026; until 20 October</li></ul><p>As I was writing this article, it struck me as very odd that despite AWS&#x2019;s outage having the largest customer impact and being felt across the globe, AWS was the only provider not publishing any form of postmortem. So I reached out to the company on 15 October &#x2013; more than 4 months after the outage of 4 June &#x2013; and asked if it would publish a postmortem.&#xA0;</p><p>I said I was writing this article which compares how cloud providers respond to regional outages, and also that out of GCP, Azure, and AWS, only they (AWS) had failed to publish a postmortem for a major outage. I also asked for a definition of what &#x201C;broad and significant customer impact&#x201D; means: as this is the definition AWS uses in deciding when to publish a public postmortem.</p><p>On 19 October, a spokesperson from AWS responded, and asked for a bit more time. On 20 October, this person responded by <a href="https://aws.amazon.com/message/061323/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">linking to a new postmortem</a>. This was the first public postmortem from AWS in two years!</p><p>It is pretty clear AWS published this postmortem because of the press inquiry. While I&#x2019;m glad about this, it makes me wonder: why does it take someone writing an article about how AWS avoids publishing postmortems after major incidents, for AWS to finally publish a postmortem?</p><p><strong>AWS&#x2019;s public postmortem lacks some key details about what happened. </strong>In the face of AWS&#x2019;s absence of public communication on the outage at the time, I did some digging to find out what caused such a large region to go down. From June&#x2019;s <a href="https://newsletter.pragmaticengineer.com/p/the-scoop-52?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">The Scoop #52: AWS&#x2019;s us-east-outage</a>:</p><blockquote>&#x201C;While no postmortem yet published, I talked with current Amazon engineers who said it was a load test for AWS Lambda which caused the incident:<br><br>- The load test seems to have overloaded AWS Lambda. Many services depend on Lambda and started to degrade<br><br>- When the engineering team figured out the likely cause, they killed the load test and added more capacity to Lambda. The test was killed about an hour into the outage<br><br>- The next 2-3 hours of the outage were spent recovering degraded services. Some needed to be restarted, and the recovery of others was slower than expected&#x201D;</blockquote><p>The postmortem AWS <a href="https://aws.amazon.com/message/061323/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">shared</a> gives more details on how Lambda works, and why it couldn&#x2019;t handle more capacity. However, the postmortem omits mentioning the increase in load was due to a load test, and that mitigation involved stopping the load test.</p><p>It&#x2019;s actually a great sign that AWS regularly does load testing; but within AWS there were plenty of questions about why it took so long to notice that capacity was pushed overboard by the test, and why it took so long to stop the test. The public postmortem reads as abstract, and I don&#x2019;t get the feeling that transparency was a goal of this document.</p><hr><p>These were three out of the seven topics covered in the subscriber-only article <a href="https://newsletter.pragmaticengineer.com/p/three-cloud-providers-three-outages?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Three Cloud Providers, Three Outages: Three Different Responses</a>. The full edition additionally covers:</p><ul><li>What is a cloud region and how does it differ between cloud providers? A recap.</li><li>Why is AWS so opaque to the public?</li><li>Why is Azure stepping up in transparency and accountability?</li><li>Lessons for engineering teams from the three cloud providers</li></ul><p><a href="https://newsletter.pragmaticengineer.com/p/three-cloud-providers-three-outages?ref=blog.pragmaticengineer.com">Read the full article here</a></p>]]></content:encoded></item><item><title><![CDATA[Code Review on Printed Paper: an Excerpt from the Twitoons Comic Book]]></title><description><![CDATA[<p><em>&#x1F44B; Hi, this is<a href="https://twitter.com/gergelyorosz?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em> Gergely</em></a> with a bonus, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover topics related to Big Tech and startups through the lens of engineering managers and senior engineers. In this article, we cover two out of seven topics from today&#x2019;s</em></p>]]></description><link>https://blog.pragmaticengineer.com/the-man-behind-the-big-tech-comics/</link><guid isPermaLink="false">6537ec4c7e6a300001f0b6d5</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 24 Oct 2023 16:26:30 GMT</pubDate><media:content url="https://blog.pragmaticengineer.com/content/images/2023/10/Screenshot-2023-10-24-at-17.49.52.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.pragmaticengineer.com/content/images/2023/10/Screenshot-2023-10-24-at-17.49.52.png" alt="Code Review on Printed Paper: an Excerpt from the Twitoons Comic Book"><p><em>&#x1F44B; Hi, this is<a href="https://twitter.com/gergelyorosz?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em> Gergely</em></a> with a bonus, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover topics related to Big Tech and startups through the lens of engineering managers and senior engineers. In this article, we cover two out of seven topics from today&#x2019;s full issue on <a href="https://newsletter.pragmaticengineer.com/p/manu?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>The Man Behind the Big Tech Comics</em></a>. To get full issues twice a week, <a href="https://newsletter.pragmaticengineer.com/about?ref=blog.pragmaticengineer.com" rel="noreferrer"><em>subscribe here</em></a>.</em></p><p>If you ever worked at Google, I probably don&#x2019;t need to introduce Manu Cornet. And if you&#x2019;re not a Googler or a Xoogler, then here&#x2019;s a short recap of some of his comics. For example, if you don&#x2019;t know what a Xoogler is (ex Googler) or a Noogler (new Googler) or a Doogler (the pet dogs owned by Googlers) and now you&#x2019;re wondering why Google has all these terms, Manu created a comic on this:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/wNY7Ak54Q-kXiC8V3fH0VBm5bEL768be7ejevGpUknrkT_hMCXr3jTxWghSHwAn8PxjNbufiYf9a9mqvX2RPKoVfG0XKvWsnROxYnOfdj4vPVRQvQ3vL7WQ2wpYDXXQQyF5mXtjL0SWfAnQyIfjFTtc" class="kg-image" alt="Code Review on Printed Paper: an Excerpt from the Twitoons Comic Book" loading="lazy" width="602" height="457"><figcaption><span style="white-space: pre-wrap;">Source: </span><a href="https://goomics.net/139/?ref=blog.pragmaticengineer.com"><u><span class="underline" style="white-space: pre-wrap;">Manu Cornet / Goomics</span></u></a></figcaption></figure><p>Today&#x2019;s issue will be a <em>lot</em> more visual than usual. The topic will also be more lighthearted: Big Tech, Twitter, and comics. Manu recently published his book <a href="https://twittoons.com/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Twitoons: one employee&#x2019;s cartoon chronicle of Twitter&#x2019;s accelerated descent</a>. I read the book: it&#x2019;s funny! I still can&#x2019;t decide if it&#x2019;s funny because of Manu&#x2019;s style, or if it&apos;s funny because it&#x2019;s <em>true</em>.</p><p>Today&#x2019;s newsletter closes with a full chapter from this book, visualizing when Elon Musk demanded all Twitter software engineers print out their code on paper (!!) and report for code review. But before we get there, we touch on how one of the most referenced Big Tech comics was created. <a href="https://goomics.net/62/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">This one</a>.</p><p>With this, my questions and comments are in italic, and Manu&#x2019;s answers in regular fonts.</p><p><em>As usual, none of these links are affiliate ones, and I have not been paid to mention any of them. More on this&#xA0;<a href="https://blog.pragmaticengineer.com/ethics-statement/"><em>here</em></a>.</em></p><h2 id="drawing-the-famous-microsoft-oracle-amazon-facebook-google-apple-comic">Drawing the famous Microsoft, Oracle, Amazon, Facebook, Google, Apple comic</h2><p><em>How did you come up with the &#x201C;famous&#x201D; organizational chart comic that you are most known for?</em></p><p>Initially, the punch line was meant to be Oracle. At the time, this company was suing Google over its use of Java, and I decided to make fun of how Oracle has a much larger legal department than engineering, so I drew this:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/YKSIuZDxXpDm27hDWZHGjfyWuQHU6ccEsCTa1Sly0oz-8fJeGdabXwrJwr_0DCbT7GfqWqVLjrOUsUaIRrM4DFzdolm91XZwlpOaJJD0uK-YOmlfQxTpQi2-3jbDP5fn0zErkjeRt419OQ-f4KOYrO4" class="kg-image" alt="Code Review on Printed Paper: an Excerpt from the Twitoons Comic Book" loading="lazy" width="406" height="264"><figcaption><i><em class="italic" style="white-space: pre-wrap;">The first org chart Manu drew</em></i></figcaption></figure><p>To make a good punchline, you need a buildup.<strong> </strong>So to make this a good comic, I needed to draw other companies for a comparison. So I drew four more:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/CkHzUNeYa9NF3Jpnth8zmzd9vAETgSjCRBmVv4Wj5UGG_OZPCXmjUc4aRIl6DW-UXLVjUZ424sHZ1xeWMZNHHPEjJtmxKIgUJheZBgWMdiszcU95ZH6wXDqBgKcxsIs22pMC_bFJMZgTcDZjrG6jzpE" class="kg-image" alt="Code Review on Printed Paper: an Excerpt from the Twitoons Comic Book" loading="lazy" width="602" height="397"><figcaption><i><em class="italic" style="white-space: pre-wrap;">The next four</em></i></figcaption></figure><p>I still needed one last one, to make it six and make it symmetric. Microsoft was, of course, the obvious missing one. So I researched the culture at Microsoft a little bit and came up with that &#x2014; now famous &#x2014; gun drawing:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/C1V1Ogmc-3TafW-mCK4Fv2IO_nXERh5zm8rAV4ziG0ke6Tb3DdwjHs7fd7gvkiAua01Be_Dslu6YlD7X-2mHlt7Lp_JqT3h2SuQM50S8_Q8F0RP6uzeGQcDyhEb2AIDGD6rgbcRwSQVJ9yufLeUSY7U" class="kg-image" alt="Code Review on Printed Paper: an Excerpt from the Twitoons Comic Book" loading="lazy" width="348" height="227"><figcaption><i><em class="italic" style="white-space: pre-wrap;">The final one, on Microsoft</em></i></figcaption></figure><p>After you&#x2019;ve been working on an idea for a while, you completely lose track of whether it&#x2019;s actually funny or not. After I finished it, I didn&#x2019;t find it funny. I showed it to my partner at the time, and she didn&#x2019;t find it funny either. I was very close to not releasing this cartoon, in the end! Then I just published it.</p><p>It&#x2019;s ironic because this comic became probably my most popular comic, and the Microsoft drawing with the guns was the one that people found the most funny. It shows you how clueless I am about predicting what will work!</p><h2 id="code-review-on-printed-paper-an-excerpt-from-the-twitoons-book">Code review on printed paper: an excerpt from the Twitoons book</h2><p><em>A year ago, the end of October 2022 was a very turbulent time at Twitter. In the article <a href="https://newsletter.pragmaticengineer.com/p/the-scoop-30?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>Turmoil at Twitter</em></a>, we covered both how engineers were told to print out code on paper (!!) for Elon Musk to review, as well as how firings on the spot had started. Manu was one of the several people let go after pulling a 7-day week, working through the weekend.&#xA0;</em></p><p><em>Manu&#x2019;s book covers this period with far more detail than we&#x2019;ve accessed, along with new, previously unpublished illustrations. The below excerpt is from Part 6 of the <a href="https://twittoons.com/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>Twitoons book</em></a>, from the chapter titled &#x201C;Code Review.&#x201D;</em></p><hr><p>Despite the long hours, we were all still painfully aware that the chopping block was dangerously near.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/gfJGjFHGfYbxzw6oBD0W-deCynTQTFASdF63NB64SYq2FsDq4Qc5QUTciIO0Aa2yOjjwuHDEmceTzBJAjxCXJFxJEJ9wrZS8gn4APQmI-RBn1O5a7v2enwyHTo_wdrQqDY6ed9RCik2grEtRK69Zh44" class="kg-image" alt="Code Review on Printed Paper: an Excerpt from the Twitoons Comic Book" loading="lazy" width="602" height="236"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Source: </em></i><a href="https://twittoons.com/?ref=blog.pragmaticengineer.com"><u><i><em class="italic underline" style="white-space: pre-wrap;">Twitoons, the comic</em></i></u></a></figcaption></figure><p>Regardless of how hard we worked, would the dreaded termination email still show up, on a bright Sunday, with the usual (and newly ironic) friendly chime?</p><p>Indeed, in parallel with the urgent product changes, Elon Musk kickstarted the dreaded &#x201C;reduction in force.&#x201D;. Given that he had clearly stated he wanted virtually no moderation on the platform, it was easy to guess what would happen to all the teams responsible for that: all fired. For engineers, it was a little trickier: he needed at least some of them to keep the site running. But which ones?</p><p>One important problem with software engineering is that evaluating workers is extremely difficult. Large technology companies spend an enormous amount of resources trying to monitor, evaluate, and eventually accurately reward contributions from their expensive workforce.</p><p>For a team that makes cars in a factory, measuring performance isn&apos;t exactly easy, but it&apos;s feasible: you measure the number of cars produced per month, you take into account things like customer return rate and mechanical failures, and with a little trial-and-error you can reach something reasonable.</p><p>For software, it&apos;s foolish to measure quantity: a shorter program (fewer lines of code) is often better than a longer one. You could measure things like bug reports or software crashes, but most projects are so complex and involve so many moving parts produced by different teams and intertwined dependencies that any such attempt usually turns out to be a wild goose chase.</p><p>So performance measurement is already difficult in normal conditions, when it serves as an input to decisions affecting an employee&apos;s role and career. Now imagine you are part of a team of engineers coming from Tesla, tasked with determining which 20% of engineers Twitter should continue employing, and which 80% it should fire. On top of that, you need to figure it out by next Monday because otherwise they all get more stock options the following week, as planned, and that&apos;s gonna cost your boss. And on top of that, consider that the engineers doing the evaluation are not only unfamiliar with the material they need to evaluate (the code that makes Twitter work); they aren&apos;t even familiar with the very industry, since the software <em>they</em> usually write is destined for cars. It&apos;s like asking a tricycle maker to pilot a spaceship because, well, it&apos;s all transportation.</p><p>Tesla engineers thus resorted to measuring what most experts will tell you is completely meaningless: the quantity of code contributed to Twitter by each engineer. The number of files they changed, insertions, and deletions (lines of code added and removed). As if these numbers were the only thing that mattered in one&apos;s entire tenure, sometimes their entire career.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/1eDLwxzyZckCBX6gHwlNlvRGmpd6X0U5HGnY8G7X8sBwXj8MbmoWF5ZhQaeWDOPbgVXkYagP2hjzrmiLUAzeCc7uQKKfk3X8LjWuaFR3vMpXpiVw11em0K3pRYT2Xri6cK6UPyi4Etb01jhc1XUy1tA" class="kg-image" alt="Code Review on Printed Paper: an Excerpt from the Twitoons Comic Book" loading="lazy" width="466" height="707"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Source: </em></i><a href="https://twittoons.com/?ref=blog.pragmaticengineer.com"><u><i><em class="italic underline" style="white-space: pre-wrap;">Twitoons, the comic</em></i></u></a></figcaption></figure><p>Given the harsh conditions and time constraints the Tesla folks were under (and had, by the way, probably been under for months or years), it&apos;s hard to blame them. Meaningless, but expeditious.</p><p>The whole process was dubbed by Mr. Musk a &#x201C;code review&#x201D; where each Twitter engineer was asked to pick their own &#x201C;most salient&#x201D; code contributions, print them out on paper, and bring them to their interview, nay, their trial, by Tesla engineers. The printing out part caused so much mess and confusion that the process was eventually simplified and people could use a computer screen to showcase the reasons why they claimed they shouldn&apos;t be fired.</p><p>Let me emphasize that this is a complete perversion of the common expression &#x201C;code review&#x201D;: engineers usually review each other&apos;s code in a well-established practice aimed at catching bugs, making the code better, and sharing knowledge. Not at selecting people for employment termination.</p><p>Oh, and knowing Elon, he might have devised a slightly different flavor of &#x201D;reviews&#x201D; for female employees?</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/_D6UVYpMY2SzwSgwF7PYH--4sAWd3eruk0HDhpHlbupKREdArBHaUHGlhbu3vTTyfn5-4lVQgP6w8yxrQs-s1fryGtxEnph1OWBDWQb_SPUf8-AaYJaNZYGJ6GkdhrI_xDTjrxnhKG3kvJoWOcTl5Xg" class="kg-image" alt="Code Review on Printed Paper: an Excerpt from the Twitoons Comic Book" loading="lazy" width="602" height="401"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Source: </em></i><a href="https://twittoons.com/?ref=blog.pragmaticengineer.com"><u><i><em class="italic underline" style="white-space: pre-wrap;">Twitoons, the comic</em></i></u></a></figcaption></figure><p>For those who were paying close attention to the timeline of employee terminations, even that raw code quantity number didn&apos;t seem to explain it at all. My team&apos;s most productive engineer by a long run, in terms of pure quantity, was let go alongside everyone else. There were also petty little arrangements where an engineering director who knew one of Elon&apos;s goons requested that employees X and Y should be kept on the payroll, and so on. But to whoever wasn&apos;t privy to all this underground barter...</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/UFbN_Sgmv2zOhw5uoOC1JeI-ak04bPomBr49SmzEdVLU7Ss63oKU5-o8MCNl9nNo1d1z1k5_fUVEJcZmKmSao59Yiq4SxdnEhCgL5sE1c1nemDMMCn3OBdrJjKtjnK_Qw1nlPjs1nuSR42s_FinCHP4" class="kg-image" alt="Code Review on Printed Paper: an Excerpt from the Twitoons Comic Book" loading="lazy" width="602" height="892"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Source: </em></i><a href="https://twittoons.com/?ref=blog.pragmaticengineer.com"><u><i><em class="italic underline" style="white-space: pre-wrap;">Twitoons, the comic</em></i></u></a></figcaption></figure><p>...it all seemed rather random, and it probably was.</p><p>The press, who had a good idea of what was happening at the headquarters, sent reporters to camp at the entrance in hopes of getting a quote or a video clip from fired employees. Two pranksters who claimed to be Rahul Ligma and Daniel Johnson showed up with cardboard boxes and were able to temporarily convince the media they were part of the early layoffs, starting a trail of misinformation on social media. Ironic.</p><p>As far as I was concerned, I&apos;m glad I didn&apos;t have to submit to any of those &#x201C;code review&#x201D; sessions, since I was fired on November 1, a few days before the large waves of layoffs. As I was attending a team meeting about a new critically important project, I was kicked out of the meeting, my work email and calendar blanked out, and my work laptop locked itself up. I thought I may have been hacked. It was only half an hour later that I received an actual termination email. It didn&apos;t state a cause, but the apparent immediate reason was that I was trying to help my coworkers safeguard some documentation (performance reviews, praises from peers, etc.) that would be valuable should they need to seek employment.&#xA0;</p><p>More broadly, did it have anything to do with my critical cartoons? It&apos;s hard to tell, since the person who fired me (my boss&apos;s boss, a.k.a. director) was also fired the following week (I actually kind of liked him, and still do). So was my direct boss. And the director&apos;s boss (I quite liked her, too). And her boss.</p><p>Anyway, it&apos;s fair to say that I was deemed a little too much of a troublemaker under the new leadership. I don&apos;t blame them.</p><p>I had been planning to make a cartoon where I would depict myself standing in front of the office entrance, alongside reporters and recruiters. After my termination, the cartoon (you wouldn&apos;t think I would stop drawing about Twitter just because I was fired, would you?) took a slightly different meaning, which I quite liked.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/HK-eZZdCM_oJRm4NcPWc9RUBv-yc7ocbDS5UV8S2xWxbx8zd_2fl85ndtqbE_6vHKaSUSiMF4n2HzRP97R-F4L9WZhyTLX6iu0k4dsqBZWjVODwbdzT6Vtc8zyZd5DJ1S7wflsUvZYw1mSX7I142Yh8" class="kg-image" alt="Code Review on Printed Paper: an Excerpt from the Twitoons Comic Book" loading="lazy" width="602" height="384"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Source: </em></i><a href="https://twittoons.com/?ref=blog.pragmaticengineer.com"><u><i><em class="italic underline" style="white-space: pre-wrap;">Twitoons, the comic</em></i></u></a></figcaption></figure><hr><p><em>This is Gergely again.</em></p><p>If you enjoyed these comics, you can buy Manu&#x2019;s book <a href="https://twittoons.com/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Twitoons, here</a> &#x2014; priced at a modest $12.90 &#x2014; and the one on <a href="https://www.amazon.com/Goomics-Googles-corporate-revealed-internal/dp/1952629004?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Google&#x2019;s corporate culture, here</a>. You can view more of Manu&#x2019;s comics <a href="https://ma.nu/graphics/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">on his website</a>. <em>As usual, none of these links are affiliate ones, and I have not been paid to mention any of them. More on this <a href="https://blog.pragmaticengineer.com/ethics-statement/" rel="noopener noreferrer nofollow"><em>here</em></a>.</em></p><p>It&#x2019;s been almost exactly one year that about 50% of the staff at Twitter got fired &#x2014; Manu being booted a few days earlier than most. I asked Manu if he had received severance owed to him as per his contract: and he has not gotten anything just yet.</p><p>Other former Twitter engineers are in the same situation as Manu &#x2014; waiting on severance overdue. In a smaller win for former emplyoees, the National Labor Relations board issues its first complaint against X Corp for illegally firing Yao Yue, a widely respected principal engineer at the company.</p><p><a rel="noopener">Zo&#xEB; Schiffer</a> at <a rel="noopener">Platformer</a> reported this in the article <a href="https://www.platformer.news/p/how-one-former-twitter-employee-could?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">How one former Twitter employee could beat Elon Musk in court</a>. Still, this case only goes to trial in January &#x2014; and Elon Musk&#x2019;s strategy clearly seems to be to not worry about potentially breaking regulations in the impulse of the moment: instead, deal with these years later, in court. More than 2,000 employees <a href="https://storage.courtlistener.com/recap/gov.uscourts.ded.83087/gov.uscourts.ded.83087.13.0.pdf?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">have filed</a> arbitration claims against Twitter: and eventually the jury will get to all of these, and decide on severance due.</p><p>Originally, I reached out to Manu intending just to ask for permission to publish a part of his book, as it was quite relevant for last year&#x2019;s events at Twitter. But as we started talking, I realized I&#x2019;ve never met a real-life cartoonist before, much less a software engineer cartoonist! So our conversation turned into a lot more than just about the latest book.</p><p>In the full issue of today&#x2019;s newsletter, we dive into several other topics we discussed:</p><ol><li><strong>The motivation to draw caricature comics</strong>. How Manu started to draw comics, and why.</li><li><strong>Fourteen years at Google as a software engineer.</strong> Getting into Google, spending 8 years on the Gmail team; working on Android and ChromeOS, and what Manu learned from his time at Google.</li><li><strong>Comics at Google</strong>. About 1/10th of Google employees subscribed to Manu&#x2019;s comics. When did Manu get into the most trouble because of comics?</li><li><strong>Working at Twitter</strong>. Twitter&#x2019;s web app and tech stack. Internal tooling at Twitter, versus Google.</li><li><strong>The best and the worst of &#x201C;old Twitter&#x201D;</strong>. The things &#x201C;Twitter 1.0&#x201D; did vey well, and where it clearly struggled &#x2014; Manu&#x2019;s insider view.</li><li><strong>How to draw cartoons as a software engineer</strong>. The similarities and differences in drawing a good cartoon vs writing good code; Manu&#x2019;s cartoon drawing toolset; and advice to get started.</li></ol><p><a href="https://newsletter.pragmaticengineer.com/p/manu?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Read the full article here.</a></p>]]></content:encoded></item><item><title><![CDATA[Going from Developer to CEO: Chronosphere]]></title><description><![CDATA[From learning to code in Australia, to launching Chronosphere in Silicon Valley: cofounder and CEO Martin Mao shares his story.]]></description><link>https://blog.pragmaticengineer.com/chronosphere/</link><guid isPermaLink="false">65257903ab93290001938deb</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 10 Oct 2023 16:18:57 GMT</pubDate><media:content url="https://blog.pragmaticengineer.com/content/images/2023/10/Screenshot-2023-10-10-at-17.42.40.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.pragmaticengineer.com/content/images/2023/10/Screenshot-2023-10-10-at-17.42.40.png" alt="Going from Developer to CEO: Chronosphere"><p><em>&#x1F44B; Hi, this is<a href="https://twitter.com/gergelyorosz?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em> Gergely</em></a> with a bonus, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover topics related to Big Tech and startups through the lens of engineering managers and senior engineers. In this article, we cover three out of eight topics from today&#x2019;s <a href="https://newsletter.pragmaticengineer.com/p/chronosphere?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>deepdive into tech scaleup Chronosphere</em></a>. To get full issues twice a week, <a href="https://newsletter.pragmaticengineer.com/about?ref=blog.pragmaticengineer.com" rel="noreferrer"><em>subscribe here</em></a>.</em></p><p>We don&#x2019;t frequently have CEOs on The Pragmatic Engineer: in fact, today is the first issue when we&#x2019;re talking with a CEO &#x2013; partially &#x2013; <em>about</em> their CEO job. I&#x2019;ve always wondered what it would be like to go from a developer, to eventually become the CEO of a large and growing company.</p><p>Martin Mao travelled this path: starting his first developer job at a local startup in Australia, then making the move to the US &#x2013; first being at Microsoft in Seattle, then at Amazon, and then at Uber, in Silicon Valley. He&#x2019;s solved interesting engineering challenges along the way, too &#x2013; like building observability for Amazon&#x2019;s EC2 offering, and being one of the first engineers on Uber&#x2019;s observability platform. <em>We covered more on this topic in the article <a href="https://newsletter.pragmaticengineer.com/p/how-uber-built-its-observability-platform?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>How Uber built its observability platform</em></a>.</em></p><p>However, Martin had not written a line of production code for the last four years, as he&#x2019;s taken on the role of CEO, and heads up observability scaleup <a href="https://chronosphere.io/?ref=blog.pragmaticengineer.com" rel="noreferrer">Chronosphere</a> &#x2013; at more than 250 people and growing. The company supports billions of active time series across its customer fleet. Chronosphere was actually founded by two former software engineers: <a href="https://www.linkedin.com/in/robskillington/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Rob Skillington</a> &#x2013; the CTO of the company &#x2013; and Martin, acting as CEO. It&#x2019;s not common to have only engineering founders at a company: my gut feel is that at infrastructure startups, such a setup can make a lot more sense.</p><p>Today, we cover:</p><ol><li>From learning to code in Australia, to working in Silicon Valley</li><li>Launching a startup</li><li>Going from developer to CEO</li></ol><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/10/Screenshot-2023-10-10-at-17.32.47.png" class="kg-image" alt="Going from Developer to CEO: Chronosphere" loading="lazy" width="1412" height="1426" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/10/Screenshot-2023-10-10-at-17.32.47.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/10/Screenshot-2023-10-10-at-17.32.47.png 1000w, https://blog.pragmaticengineer.com/content/images/2023/10/Screenshot-2023-10-10-at-17.32.47.png 1412w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Some of the stages of how Chronosphere grew, as a tech company</span></figcaption></figure><p>With this, it&#x2019;s over to Martin, who tells his story and applicable learnings.</p><h2 id="1-from-learning-to-code-in-australia-to-working-in-silicon-valley">1. From learning to code in Australia, to working in Silicon Valley</h2><p>How did I learn to code? In high school, in Australia, <a href="https://www.linkedin.com/in/prashantvaranasi/details/experience/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Prashant Varanasi</a> was one of my good friends. He was learning to code, and needed help in a programming competition, because he needed a team of three. He asked for help, and taught me the basics of Visual Basic, so we could enter the competition. And we ended up doing well in it, too! Afterwards, we both won scholarships to college to study computer science. <em>Prashant would later work as a senior software engineer at Google, and a distinguished engineer at Uber, but, of course, back then, I didn&#x2019;t know this.</em></p><p><strong>In college, I tried my hand at a couple of startups.</strong> I founded a text messaging startup at first. Then, I joined a startup that tried to beat Facebook, and become the #1 social media company in Australia, around 2007. At this social media startup, we put a lot of work into importing your contacts from Microsoft Messenger. But when Facebook entered Australia, they pretty much crushed us.</p><p>After graduating, I began looking for a more serious job. In 2009, the tech scene in Australia was not as vibrant as it is today: Atlassian was still small and Canva didn&#x2019;t exist. Google was already on the scene, and I interned at the Google office, working on Google Docs. However, Google paid a fraction of what they did in the US, so I set my eyes on the United States.</p><h3 id="microsoft">Microsoft</h3><p>In 2009, not many US tech companies were hiring, as the sector was still recovering from the 2008 crash. Microsoft, however, was, and I got an internship to work there. They accepted five interns from Australia, and I was lucky enough to be one of those five.</p><p>When I went to intern there, I thought I would spend three cool months in Seattle, and that would be it. I had no idea you could get offered a full-time job at the end of an internship, until the internship ended and Microsoft came to me, saying, &#x201C;Oh, hey, here&#x2019;s your job offer.&#x201D; It was an offer to stay in Seattle. On top of the option to continue working at Microsoft, it was also the best monetary opportunity as well, so I took it without a second thought.</p><p><strong>I worked on Office 365, as it was born. </strong>I joined the Microsoft Office team but was tasked to work on a new product. My team was taking the Office product distributed on CD ROMs and making it into a SaaS solution. They called it Office 365, and in 2010, this was a really exciting project to work on. We then shipped the first version, and then I felt that it was time to move on.</p><p>See, I was working at Steve Ballmer-era Microsoft. We had a target to hit a two-year release cycle. They let me code full-on for eight weeks, and then told me to stop. I asked what I should be doing next. They said, &#x201C;It&#x2019;s now QA time!&#x201D;&#xA0;</p><p>I tried to push bug fixes, but was told that it was too risky. I was, however, told that I could get those fixes ready for the next release. But the next release was not for another two years&#x2019; time!</p><p>After a few years, I thought to myself:</p><blockquote>&#x201C;What am I doing here? I&#x2019;m not productive at all. I should do something else with my life.&#x201D;</blockquote><h3 id="amazon">Amazon</h3><p>I attribute a lot of things to luck, and how I ended up at Amazon was one of these. My mentor at Microsoft was a senior engineer who had moved over to Amazon and ended up running a part of the EC2 team. This was around 2013, and EC2 was one of the hottest services at Amazon.</p><p>For some reason, Amazon didn&#x2019;t have any senior engineers on the part of the EC2 team that was responsible for the EC2 instance management, and for the Windows business. The Windows business was itself a billion-dollar business at the time! So my former mentor reached out and asked, &#x201C;Hey, do you want to be a tech lead on EC2?&#x201D; I thought about it for a while, and then decided I couldn&#x2019;t turn down an opportunity like that.</p><p>And it was really interesting to work on EC2. I wrote code for drivers on Windows, and started to put a basic observability system in place. EC2 had no observability system back then: people would spin up EC2 instances but have no idea whether or not they worked. So we took on the challenge of fixing this.</p><p><strong>With my team, we built the basics of what is now called <a href="https://aws.amazon.com/systems-manager/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><strong>AWS Systems Manager</strong></a></strong>. This was a remote management tool, to do things like:</p><ul><li>SSH remotely into machines, via a browser interface</li><li>Roll out patch updates</li><li>Manage rolling updates for several machines</li></ul><p>We built it, shipped it, and presented it at <a href="https://reinvent.awsevents.com/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">re:Invent</a> &#x2013; Amazon&#x2019;s annual flagship event. It was a lot of fun!</p><p>After a couple of years, it felt to me the mood changed to most teams just wanting to ship new services. The focus seemed to shift to: invent something new &#x2192; build a service for it &#x2192; ship it. Once you do this a couple of times &#x2013; building and shipping a new service &#x2013; it starts to become easy enough. The discussion I had with people went along the lines of, &#x201C;Oh, I know what service you want to ship. I know how to do it. It&#x2019;s not that hard to do, anymore.&#x201D;</p><p>It was around this time that <a href="https://www.linkedin.com/in/robskillington?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Rob Skillington</a> &#x2013; now my cofounder at Chronosphere &#x2013; called me up and convinced me to join this startup called Uber, and said it would be a crazy ride!&#xA0;</p><h3 id="uber">Uber</h3><p>The pitch to join Uber wasn&#x2019;t just the business vision, but also the engineering one. The engineering pitch went something like, &#x201C;Hey, here&#x2019;s your chance to come in and work on a system where we don&#x2019;t use the public cloud; we own our own datacenters, and we get to build infrastructure services that could one day become the size of Google&#x2019;s infrastructure.&#x201D; It was a pitch that was hard to say no to!</p><p>I joined in 2015, when there were a couple hundred engineers at Uber, and the infra team was made up of about 50 people.</p><p>Rob was right that Uber would be crazy. It was at Uber where we ended up building <a href="https://m3db.io/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">M3</a>: Uber&#x2019;s open source, large-scale metrics platform. <em>We previously covered the building of M3 in the article <a href="https://newsletter.pragmaticengineer.com/p/how-uber-built-its-observability-platform?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>How Uber Built its Observability Platform.</em></a></em></p><h2 id="2-launching-a-startup">2. Launching a startup</h2><p>At Uber, I felt like we had completed the core mission of M3. We spun up a reliable observability platform, and rolled it out. Virtually every engineer was using the platform. The roadmap, frankly, was not that exciting, compared to the challenges we had to overcome in the past.</p><p>I decided to look around. I looked at both internal and external opportunities. And of course, I also considered building something from scratch.</p><p>In 2019, Uber didn&#x2019;t have a ton of opportunities, internally. The speed of execution felt slower than it had been in earlier years, and truly hard problems were hard to come by.</p><p>On the other hand, I found the idea of building a company <em>very</em> compelling. We originally built M3 to support Uber&#x2019;s scale on a microservices/container (cloud native) architecture. It was that very architecture that created the scale, reliability, performance and cost-efficiency challenges. When we built M3, we thought only Uber and a handful of companies in the world would need something like this: such as Google, Facebook and Netflix.</p><p><strong>Kubernetes changed the observability needs of so many companies.</strong> As Kubernetes really picked up in popularity, it was clear the majority of the world&#x2019;s architecture would look like Uber&#x2019;s architecture did, and that M3 would be a solution to observability needs. We just so happened to have M3 open sourced &#x2013; ready to be used in the open, as well.&#xA0;</p><p>We then looked at the competition. No one was in a position to solve this problem! None of the existing vendors had built and optimized for a cloud-native architecture. At scale, pricing was out of hand with all solutions.</p><p>The cloud-native observability market seemed one that would be ripe for disruption. And we just so happened to have the perfect solution, already built and tested at scale. I remember thinking that if we ever wanted to start a company, there would never be a better opportunity from a timing perspective.</p><h3 id="finding-a-cofounder">Finding a cofounder</h3><p>My cofounder is <a href="https://www.linkedin.com/in/robskillington/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Rob Skillington</a>. We are both Australian, have known each other for over a decade, and worked together closely for four years at Uber on M3. In fact, he even officiated at my wedding!&#xA0;</p><p><strong>My personal and biased belief is that starting a company with someone you know and trust really helps.</strong> Building a company is hard. There are a lot of tough moments, which might prove to be even tougher with someone you don&#x2019;t know as well.</p><p>Find someone who&#x2019;s interested in a different part of the business from you, and someone who brings different skill sets. It&#x2019;s common to have two engineering technical cofounders, but generally one has to focus more on the business side. In our case, Rob remained technical and I focused on the business.</p><p>Finding one cofounder who is technical and one who&#x2019;s interested in the business is not as easy as you might think, either, because both founders need to want to enjoy their area. I see so many technical folks that just don&apos;t want to move over to the business side. This is fine, but then you need to go and find a CEO so you can focus on what you love to do!</p><h3 id="fundraising">Fundraising</h3><p>Fundraising turned out to be pretty straightforward. Firms like Sequoia and Greylock were reaching out to us, when they heard we were planning to start a company. These VC firms have these scout networks of folks who work in Big Tech whose job it is to look out for interesting tech to invest in: and this was how they found us.</p><p><strong>We put together an 80-page business plan.</strong> This business plan was not really for the investors, but rather, to help us think about the business. In this document, we covered:</p><ul><li>The product</li><li>The market</li><li>The go-to-market (GTM) plan</li><li>Our competitors</li><li>&#x2026; and many other things!</li></ul><p>We worked on a few iterations of this plan, and once it was solidified, this gave us the conviction that we were onto something. With the plan in place, we sent this document &#x2013; rather than the usual pitch deck &#x2013; over to the VCs.</p><p>Our approach was unorthodox, but worked! The document answered all the questions they had, and we still did a pitch, of course, with a deck. We ended up pitching to a firm and partner we liked, early on: <a href="https://www.linkedin.com/in/jerrychenprofile/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Jerry Chen</a> at Greylock. Jerry gave us a term sheet on the spot, and we took it.</p><p>Launching the company was easier than I imagine many founders have it. After all, we already&#xA0; had open source technology to use &#x2013; M3 &#x2013; and we also had a clear path on what we wanted to build, similar to the roadmap the observability team at Uber used to have.&#xA0;</p><p>When we started out building the company, it felt a little like a continuation of our path from Uber. We were heads down building the product we wished we could have bought.</p><p>Here&apos;s the timeline of our fundraising story since the launch of the company:</p><ul><li>May 2019: founding the company</li><li>Nov 2019: the first round of funding led by Greylock: Series A ($11M)</li><li>Jan 2021: Series B ($43M)</li><li>Oct 2021: Series C ($200M)</li><li>Jan 2022: Series C-1 ($115M)</li></ul><p>An interesting bit of history is how the first funding round at most startups is called either a pre-seed, or a seed round. But we didn&#x2019;t have one of these! We knew what we wanted to build, and knew there was a demand for it, and we had validation from the M3 open source community on the demand. We had the technology ready in the form of the M3 project, which was a massive achievement by itself.</p><p>We needed $11M to get started. When we told Greylock that we were raising $11M, they said that that figure was too large to be called a seed round. Still, we didn&#x2019;t get hung up on the name. We just called it a Series A.</p><h2 id="3-going-from-developer-to-ceo">3. Going from developer to CEO</h2><p>With my cofounder, Rob, we quickly established that he would remain technical, and I would be on the business side.&#xA0;</p><p><strong>By the end of my time at Uber, I didn&#x2019;t feel that I had to prove myself in engineering any more. </strong>I was there from the beginning when we built M3. I could still get joy out of technical stuff, but I&apos;ve proven that I&apos;m a solid engineer, and that I&apos;m an okay engineering leader. I didn&#x2019;t feel like I needed to go and prove anything more in those areas.</p><p>Still: I had this hunger to learn about how the rest of the business worked. At Uber, I wasn&#x2019;t that close to the business and had no idea about the details. Being the CEO, I got to learn so much of this!</p><p>My day-to-day life now, as CEO, is very different to when I was an engineer or even an engineering manager. Right at the start, I still had GitHub access and did some reviews. But I was definitely the first and only member of the early team to become &#x201C;non-technical.&#x201D; I had to take care of everything else that wasn&#x2019;t technical at the company.&#xA0;</p><p><strong>Now my days involve not just back-to-back meetings, but also tons of context switching!</strong> It&#x2019;s like, &quot;Oh, I have to switch context to a marketing meeting where we&apos;re talking about a demand generation strategy to one about customer success to one about how to sell to customers.&quot;</p><p>Over time, I built up a support network. Below are a few things I did to find people who could help me navigate the new problems I faced:</p><ul><li><strong>Leaning on VCs.</strong> VCs don&#x2019;t have as much domain knowledge, but they have a vast network. I would ping my VCs, telling them: &quot;Hey, I&apos;m trying to solve this marketing problem. Can you put me in touch with 3-4 people in your network that could help me walk through it externally?&quot;</li><li><strong>Leaning on advisors.</strong> For people who have been helpful, I tend to keep in mind as an advisor. For example, I have a sales advisor, a marketing advisor, and people who can advise in a few other areas.</li><li><strong>Seeking out other founders and CEOs.</strong> I never realized how most founders and CEOs give a lot more time than you would expect. For example, one CEO in particular, from a publicly traded infrastructure company, has helped me out no end. If I text this CEO about something, he&#x2019;ll make time to help and offer support, even though I know how busy he is. I notice that most such CEOs are really protective of their time, yet they&#x2019;re still willing to carve out time for other founders. This makes me want to pay it forward as well, and help earlier-stage founders too.</li></ul><hr><p>This was three one out of the eight topics covered in this week&#x2019;s The Pulse. The full edition additionally covers:</p><ul><li>The early days of Chronosphere</li><li>The need to introduce a career ladder</li><li>The impact of Uber and future plans</li><li>Advice for software engineers</li><li>Appendix: Chronosphere&#x2019;s 80-page(!) business plan</li></ul><p><a href="https://newsletter.pragmaticengineer.com/p/chronosphere?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><strong>Read the full issue here.</strong></a></p>]]></content:encoded></item><item><title><![CDATA[Working at a Startup vs in Big Tech]]></title><description><![CDATA[A software engineer I worked in the same team with at Uber has gone back-and-forth between startups and large companies. Willem Spruijt shares the good, the bad and the ugly, about both environments.]]></description><link>https://blog.pragmaticengineer.com/working-at-a-startup-vs-in-big-tech/</link><guid isPermaLink="false">6515a37d4345560001a78a19</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 28 Sep 2023 16:07:08 GMT</pubDate><media:content url="https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-28-at-17.22.52.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-28-at-17.22.52.png" alt="Working at a Startup vs in Big Tech"><p><em>&#x1F44B; Hi, this is <a href="https://twitter.com/gergelyorosz?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>Gergely</em></a> with a bonus, free issue of the Pragmatic Engineer Newsletter. We cover one out of four topics in today&#x2019;s subscriber-only <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-63?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>The Pulse issue</em></a>. To get full newsletters twice a week, <a href="https://newsletter.pragmaticengineer.com/about?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>subscribe here</em></a>.</em></p><p><a href="https://www.linkedin.com/in/willemspruijt/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Willem Spruijt</a> is a software engineer whom I worked on the same team with at Uber in Amsterdam, building payments systems. We started as teammates, and in a twist, I became Willem&#x2019;s manager. He was a very productive engineer at Uber &#x2013; which I regularly told the manager group during <a href="https://newsletter.pragmaticengineer.com/p/performance-calibrations?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">performance calibrations</a> &#x2013; and he was the embodiment of what I like to call a <a href="https://blog.pragmaticengineer.com/the-product-minded-engineer/" rel="noopener noreferrer nofollow">product-minded engineer</a>. After spending 6 years at Uber, Willem cofounded <a href="https://www.risecalendar.com/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Rise Calendar</a>. <em>Disclaimer: I&#x2019;m <a href="https://blog.pragmaticengineer.com/investing/" rel="noopener noreferrer nofollow"><em>an investor</em></a> in this company, having invested due to knowing Willem so well after working together for years.</em></p><p>Willem is two and a half years into running his own startup, which <a href="https://www.risecalendar.com/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">just launched</a> the public beta. I thought this a great time to ask about his experience between working at a startup, and working at a large company, as it&#x2019;s the second time Willem has gone from a large company to startup.</p><p><em>With this, it&#x2019;s over to Willem. The material below is straight from him:</em></p><h3 id="background">Background</h3><p>Early in my career, I founded two startups. One was <a href="https://thenextweb.com/news/qash-becomes-yunoo-and-launches?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Yunoo</a>, a personal budgeting tool for the Dutch market. Four years after we launched, the company was acquired by a mid-sized local company in the enterprise resource planning (ERP) sector. I stayed with this ERP company for a year. But I had the startup bug in me, and so founded a second startup. This last one was a great adventure; we went to the US to join the TechStars 2013 accelerator. However, this startup failed miserably.</p><p>I was still recovering from this failure in 2015, when a friend who designed the first version of Uber&#x2013; <a href="https://twitter.com/jelleprins?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Jelle Prins</a> &#x2013; pinged me, and said Uber was kickstarting an engineering office in Amsterdam. By that time, I&#x2019;d been following Uber for years, and suspected that the ridesharing industry would only get bigger.</p><p><strong>My time at Uber was hypergrowth as its finest</strong>. In 2015 when I joined, we had 6 engineers in the Amsterdam office. Six years later, we were at 250 people. For most of my time, I was part of the Rider Payments team and worked for 4 years with Gergely.</p><p>In 2021, I left Uber for Rise Calendar as a technical co-founder. <a href="https://www.risecalendar.com/?ref=blog.pragmaticengineer.com">Rise</a> is a beautiful calendar app that helps you schedule and protects your week. Since then, we&#x2019;ve raised a pre-seed round &#x2013; when Gergely got involved as an angel investor &#x2013; and have grown the team to 7 people.</p><p>Having spent about 15 years split between startups and Big Tech, here&#x2019;s my honest take on the good, the bad, and the &#x201C;ugly&#x201D; of each environment.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-28-at-17.22.52-1.png" class="kg-image" alt="Working at a Startup vs in Big Tech" loading="lazy" width="1316" height="774" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/09/Screenshot-2023-09-28-at-17.22.52-1.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/09/Screenshot-2023-09-28-at-17.22.52-1.png 1000w, https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-28-at-17.22.52-1.png 1316w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">The good, the bad and the &#x201C;ugly&#x201D; of each environment</span></figcaption></figure><h3 id="startups-the-good">Startups: the good</h3><p><strong>Learning:</strong> Startups are such amazing places to learn in! You usually have a small developer team, and for the most part, no infrastructure, security, data science, or observability teams &#x2013; which are all commonplace in Big Tech. Engineers are expected to jump in where needed, even when you don&#x2019;t have expertise.</p><p>So you are forced to learn about specific topics and immediately apply them in production. Just by doing this, you broaden your expertise incredibly fast in a wide range of topics.</p><p><strong>Impact:</strong> you can make a large impact and directly influence the direction of the company, and very clearly influence the success of the company, as well. Startups are very flat organizations, meaning you are often involved in strategic decisions.</p><p>An example of making a company-wide impact at Rise was during our Christmas hackathon, when an engineer built a Calendly-like feature for anyone to book a slot in your calendar. It worked so well that we launched the feature a month later. Going from idea, to adding, to building and shipping this to all customers, is something you rarely see in bigger companies.</p><h3 id="startups-the-bad">Startups: the bad</h3><p><strong>Financial risk:</strong> Startups tend to pay a lower base salary than Big Tech. They rarely have the annual performance-based bonuses that are typical at larger companies. Many startups give equity to engineers, and some startups hand out handsome equity packages to early employees. <em>Uber is a prime example of this, where early engineers did very well from generous early packages.</em></p><p>But let&#x2019;s be honest, with any startup there is significant risk. Plenty of startups fail and close, or end up being acquired or acqui-hired. Acqui-hiring often means another company takes over the startup&#x2019;s team: but does it on terms where investors &#x2013; or even the founders &#x2013; don&#x2019;t see much of a return on their investment and equity.</p><p><strong>Stress:</strong> startups are often races against the clock. This focus on speed and execution often leads to fast context-switching and a working environment with constant time pressure. My personal experience is that startups are more stressful than Big Tech, where there&#x2019;s the option to &#x201C;lean back&#x201D; sometimes. This is not so much the case at a smaller company. It&#x2019;s important to add that this depends very much on the culture, and my experience won&#x2019;t be universal!</p><h3 id="startups-the-ugly">Startups: the ugly</h3><p><strong>Failure:</strong> Startups fail, more often than not. This can lead to ugly situations where people lose their jobs pretty much overnight. Startups are usually a tighter-knit group because people feel a personal connection to the company and product, much more than is the case in Big Tech. So shutting down a product or the entire company can be a lot more emotional than a large company shutting down one of its many products.</p><h3 id="big-tech-the-good">Big Tech: The good</h3><p><strong>Specializing:</strong> Big Tech organizations have so many specialized teams! At Uber, they ranged from mobile feature teams (called program teams &#x2013; <a href="https://newsletter.pragmaticengineer.com/p/program-platform-split-uber?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">here is some history about this split</a>,) platform teams, networking teams, and infra ones.</p><p><strong>Internal transfers:</strong> usually this is surprisingly easy! I&#x2019;ve moved between teams, and so have so many engineers, like a Rider Payments engineer who moved over to the Developer Platform team. Combined with an environment with many specialized teams, and you have a place where engineers can go really deep in a domain while working on a variety of things.</p><p><strong>Financial stability/perks:</strong> speaking for software engineers, Big Tech pays well and almost always issues performance-based cash bonuses. Then there&#x2019;s the equity granted, which is more stable and lower risk compared to startup equity.</p><p>Joining a Big Tech, and building up a &#x201C;financial buffer&#x201D; before going to a startup, is something I&#x2019;ve seen plenty of engineers do. Things may always go south for a startup, so it&#x2019;s good to have reserves!</p><p><strong>Networking:</strong> One of the most underestimated things about Big Tech is that it&#x2019;s surprisingly easy to build a large network while working there! Many of my former Uber colleagues joined other Big Tech companies, or started a new business &#x2013; and there&#x2019;s this one guy who ended up writing this newsletter which blew up.</p><p>I will admit the relationships I built up at Big Tech have proved to be far more valuable in the long run than I expected!</p><h3 id="big-tech-the-bad">Big Tech: the bad</h3><p><strong>Lack of purpose</strong>: In a startup, it&#x2019;s easy to make an immediate impact for the end-user. I used to work with Engineer #1 at Uber, Conrad Whelan, who told me this in 2015:</p><blockquote>&#x201C;If an unexpected but important task takes less than 30 minutes, just get it out immediately! Push it to production.&#x201D;</blockquote><p>Back then, Uber was akin to a startup, and not (yet) a Big Tech business. At Rise, we perform between 25 and 50 deploys per day with a team of 7. Such a pace generates a ton of energy in the team. Our end users are amazed when they see a bug they reported fixed within minutes, or when a feature they suggested is shipped a few hours later. This feeling of actual impact and purpose is much reduced in Big Tech. Also, changes take longer.</p><p><strong>Overhead and bureaucracy:</strong> on the Rider Payments team at Uber, we had the running joke: &#x201C;we&#x2019;re all just plumbers here &#x1F469;&#x200D;&#x1F527;.&#x201D; This referred to how much &#x201C;plumbing&#x201D; was needed to build even a relatively simple feature. Uber had thousands of microservices, and our team regularly made changes to more than 20 of them. Many of the changes were simply to proxy a value from one service to another.</p><p>The problem? Each of those changes needed to be approved by the team owning the service. These teams were in different time zones, and so even straightforward &#x201C;plumbing&#x201D; changes could take days to land.</p><p>And it got worse. For more complex changes, we usually needed the teams owning the services to carry them out. So we had a quarterly planning process to ensure all project dependencies were incorporated into each team&#x2019;s roadmap. But priorities changed frequently and &#x2013; surprise, surprise! &#x2013; we frequently found ourselves stuck and waiting on other teams.</p><p>If this seems to be becoming a rant, it&#x2019;s because it is. Uber was a fast-moving company, but also a big company, so things started to take a lot more time. At a startup, when you have a monolith the same changes take hours, not days.</p><h3 id="big-tech-the-ugly">Big Tech: the ugly</h3><p>I had to think quite a bit to come up with anything &#x201C;ugly.&#x201D; There are plenty of unpleasant things at larger companies, but nothing terrible. However, one thing really got under my skin.</p><p><strong>Misaligned incentives around performance reviews. </strong>Doing work that results in a great performance review is not always the same work that best helps the company. And this can create pretty twisted, political situations. For example:</p><p>A recently joined senior staff engineer decided to propose a project to do a re-architecture of a system. This person wrote up a neat document that was well thought out, and sent it around to other senior staff engineers. But there was a problem, this engineer took an existing document that other engineers had written a few months before, copy-pasted it, changed a few words, and presented it as their own work.</p><p>Clearly, this engineer was doing this in hopes of demonstrating how quickly they got up to speed, and how valuable their own, personal contributions were. But by not involving the original authors, the proposal lacked context that was not in this document &#x2013; such as why it wasn&#x2019;t made, in the end.</p><p>This is just one example where pursuing personal recognition, that comes in the form of performance bonuses, can result in actions that are not in the best interest of the company. Anyone working at a large company sees things like this.</p><h3 id="which-is-better">Which is better?</h3><p><em>This is Gergely again.</em></p><p>Thanks Willem, for that dose of honesty! I have to admit I always suspected Willem would go back to working at &#x2013; or founding &#x2013; a startup. It was pretty clear that the more &#x201C;Big Tech&#x201D; Uber became, the more frustrating it was for him to wait on others, versus making code changes himself. And this attitude made Willem a really productive engineer, as he jumped to working on something else while waiting on another team. During <a href="https://newsletter.pragmaticengineer.com/p/performance-calibrations?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">performance calibration sessions</a>, as Willem&#x2019;s manager I had an easy job proving to other managers why he belonged in the top quartile in most years, thanks to his consistently high output.</p><p>Willem&#x2019;s startup background really helped him get things done, and not wait on others. At the same time, now that he&#x2019;s on his third startup, I cannot unsee how his Big Tech experience of structuring things, planning ahead and building reliable systems, has proved very valuable.</p><p><strong>Spending time at a large company and a startup, is probably as good as it gets. </strong>Both environments have very different dynamics, and you need to lean on distinct skills to succeed in each. A more common path I see is devs going from startups to Big Tech because of the increase in compensation. Although not as frequent, I also see plenty of people go the other way, from Big Tech to startups. This step feels like a bigger adjustment, especially for those who have not worked at startups before.</p><p>Growing your network is indeed an underrated benefit of working at a larger company, either Big Tech or a fast-growing scaleup. You can meet so many more people at these companies, and this is even more true if you move teams, or the company is growing quickly. I echo what Willem said about how it&#x2019;s only years later that you appreciate this value. Even for this newsletter, the first few interviews were all with people I met and worked with at Uber: <a href="https://newsletter.pragmaticengineer.com/p/platforms-with-ganesh-srinivasan?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Ganesh Srinivasan</a>, <a href="https://newsletter.pragmaticengineer.com/p/platform-teams-with-adam-rogal?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Adam Rogal</a> and <a href="https://newsletter.pragmaticengineer.com/p/scaling-engineering-with-the-tpm-role?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Sophia Vincent</a>.</p><p>A final note on Willem&#x2019;s new startup. I got involved more than two years ago and assumed the team would ship something in a few months. After all, we were talking about Willem, who was a productivity machine at Uber! But this is not what happened. For over two years, Rise kept running a private beta product. Launching so slowly is quite rare for startups, Figma is <a href="https://newsletter.pragmaticengineer.com/p/inside-figmas-engineering-culture?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">one of the best-known examples</a> for staying in private beta for a similar duration. Rise Calendar is now <a href="https://www.risecalendar.com/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">out of stealth mode</a>. And it turns out there was a reason to take so much time to build: it was to opt to launch with a product that is polished.</p><hr><p>This was one out of the four topics covered in this week&#x2019;s The Pulse. <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-63?ref=blog.pragmaticengineer.com">The full edition</a> additionally covers:</p><ul><li><strong>Industry pulse. </strong>A roundup of recent events in tech, with commentary.</li><li><strong>Are we about to see a spike in startup shutdowns?</strong> I&#x2019;ve gathered evidence which suggests startup shutdowns are on the rise, and plenty of infra and developer tooling startups are also in deep trouble.</li><li><strong>Is down-leveling back in Big Tech? </strong>In 2021, upleveling was common across all of Big Tech. This is no longer the case, and job market dynamics are likely to make down-leveling more common.</li></ul><p><a href="https://newsletter.pragmaticengineer.com/p/the-pulse-63?ref=blog.pragmaticengineer.com">Read the full The Pulse.</a></p>]]></content:encoded></item><item><title><![CDATA[Why are Cloud Development Environments Spiking in Popularity, Now?]]></title><description><![CDATA[Tech companies are building their cloud development environments (CDEs) and dozens of vendors are launching their offerings. But why now?]]></description><link>https://blog.pragmaticengineer.com/why-are-cloud-development-environments-spiking-in-popularity-now/</link><guid isPermaLink="false">6513438d4345560001a789cb</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 26 Sep 2023 20:57:28 GMT</pubDate><media:content url="https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-26-at-22.50.12-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-26-at-22.50.12-1.png" alt="Why are Cloud Development Environments Spiking in Popularity, Now?"><p><em>&#x1F44B; Hi, this is</em><a href="https://twitter.com/gergelyorosz?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em> Gergely</em></a><em> with a bonus, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover topics related to Big Tech and startups through the lens of engineering managers and senior engineers. In this article, we cover a fresh industry trends: Cloud Developent Environments &#x2014; which is analysis full subscribers have received </em><a href="https://newsletter.pragmaticengineer.com/p/cloud-development-environments-why-now?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>3 weeks ago</em></a><em>. To stay up to date with trends across the tech industry, <a href="https://newsletter.pragmaticengineer.com/about?ref=blog.pragmaticengineer.com">subscribe here</a>.</em></p><p>There is a quiet revolution unfolding at tech companies: cloud development environments (CDEs). The past three months, I shared insights with full subscribers:</p><ul><li><a href="https://newsletter.pragmaticengineer.com/p/cloud-development-environments?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Cloud development environments at tech companies</a> (27 Jun 2023)</li><li><a href="https://newsletter.pragmaticengineer.com/p/cloud-development-environments-why-now?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Why are CDEs spiking in popularity, now?</a> (5 Sep 2023)</li><li><a href="https://newsletter.pragmaticengineer.com/p/cloud-development-environment-vendors?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">The Cloud development environment vendor landscape</a> (26 Sep 2023)</li></ul><p>The trend is so fresh that even Gartner &#x2014; an authority in detecting trends &#x2014; has only <a href="https://www.gartner.com/en/articles/what-s-new-in-the-2023-gartner-hype-cycle-for-emerging-technologies?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">mentioned CDEs for the first time</a> two months after The Pragmatic Engineer <a href="https://newsletter.pragmaticengineer.com/p/cloud-development-environments?ref=blog.pragmaticengineer.com">analyzed</a> this category. In today&#x2019;s issue, we cover why this trend is popular around now, and what are startups to watch for in this space.</p><h2 id="why-are-cdes-gaining-popularity-now">Why are CDEs gaining popularity, now?</h2><p>The concept of remote development environments stretches back to the dawn of computer programming. In the 1960s, expensive central computers were shared by many users, sitting at terminals. Each user had a specific amount of time to use the processor in this setup called &#x201C;timesharing.&#x201D;</p><p>Cloud development environments are similar to how programmers used a terminal to program a central computer, back then. A big difference is that in the case of old-school timesharing, the goal was to save on infrastructure costs, as the cost of CPU cycles was far higher than programming time. A single mainframe machine cost several times the annual salary of a programmer; the Atlas computer at Manchester University in the UK cost &#xA3;50M in today&#x2019;s money, the equivalent of several hundred programmers&#x2019; annual salaries. No wonder compute time was so valuable!</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-26-at-22.49.06.png" class="kg-image" alt="Why are Cloud Development Environments Spiking in Popularity, Now?" loading="lazy" width="1426" height="558" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/09/Screenshot-2023-09-26-at-22.49.06.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/09/Screenshot-2023-09-26-at-22.49.06.png 1000w, https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-26-at-22.49.06.png 1426w" sizes="(min-width: 720px) 720px"><figcaption><em>The input/output area of the Atlas computer (right) and the computer itself, occupying a large room with its circuit boards inside closets. Image source: </em><a rel="noopener noreferrer nofollow" href="https://web.archive.org/web/20200529103144/http://elearn.cs.man.ac.uk/~atlas/docs/The%20Atlas%20story.pdf"><em>The Atlas story</em></a></figcaption></figure><p>Today, it is compute that&#x2019;s much cheaper than software engineers&#x2019; time. In the US, a software engineer working at a Big Tech company is compensated more than 100 times the cost of a high-end laptop, annually.&#xA0;</p><p>So why the sudden rise in use of remote environments? I observe several trends which make this shift understandable and sensible:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-26-at-22.50.12.png" class="kg-image" alt="Why are Cloud Development Environments Spiking in Popularity, Now?" loading="lazy" width="1214" height="918" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/09/Screenshot-2023-09-26-at-22.50.12.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/09/Screenshot-2023-09-26-at-22.50.12.png 1000w, https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-26-at-22.50.12.png 1214w" sizes="(min-width: 720px) 720px"><figcaption>Reasons why remote development and cloud development environments are getting popular</figcaption></figure><p>Here are the reasons:</p><p><strong>1. Larger codebases.</strong> Every day, there&#x2019;s more code at a tech company, not less. This means more repositories are needed, which are fast enough to build and work with, but which increase fragmentation. At many large companies, this inevitably leads to consolidating many smaller repositories into fewer, larger ones. Which leads to the next point&#x2026;</p><p><strong>2. Monorepos.</strong> These are becoming more popular at large tech companies for a few reasons. The biggest is consistency; with a monorepo, dependencies are clear and API breakages due to outdated dependencies are absent. Also, tasks like integration testing are much easier. However, monorepos result in codebases growing large, so that even checking out the code or updating to the head can be time consuming.</p><p><strong>3. Laptop compute power is plateauing.</strong> The available compute power of laptops and personal computers no longer increases as it did prior to 2010. Moore&#x2019;s Law says the number of transistors in an integrated circuit (IC) doubles around every two years. But the most recent 10 years suggest this is no longer the case.</p><p><strong>4. The Cloud is spreading and offering more capabilities.</strong> Since around 2010, there&#x2019;s been a boom in Cloud computing. AWS launched in 2006, Azure in 2010, and GCP launched its first region in 2015. Since then, all Cloud providers have expanded their availability, and the price of Cloud compute has dropped due to competition and technological progress.</p><p><strong>5. Low-latency networking is cheaper and more common.</strong> CDEs only make sense when latency is low. This requires high bandwidth internet connectivity for developers, and remote development environments to be located in close vicinity to servers. High-bandwidth networking is spreading rapidly, including fallback options with mobile 4G and 5G coverage. And with cloud providers launching new data centers, zones and regions, it&#x2019;s now easier than ever to have cloud environments near to software engineers&#x2019; locations.&#xA0;</p><p>For example, Uber <a href="https://newsletter.pragmaticengineer.com/p/cloud-development-environments?ref=blog.pragmaticengineer.com#%C2%A7uber">runs</a> its Devpods out of 5 data centers this way, presumably operated by a provider like Google Cloud. <em>We previously covered <a href="https://newsletter.pragmaticengineer.com/p/uber-move-to-cloud?ref=blog.pragmaticengineer.com">Uber&apos;s transition from its own data centers to the public cloud</a>.</em></p><p><strong>6. Developer productivity investments. </strong>Assuming a team of four software engineers costs $1M/year, would you spend $10K/year to improve the efficiency of that team by 10%? The answer should be a no-brainer &#x2018;yes,&#x2019; because the business value generated by a team costing $1M/year should already exceed $1M/year. So if the team gets 10% more efficient, it should generate at least $100K/year extra value.&#xA0;</p><p>At companies with large codebases, CDEs are a pragmatic way to increase the productivity of software engineers.</p><p><strong>7. Remote work</strong>. Covid-19 lockdowns and the rise of remote working have played a role in boosting CDEs. With remote work, engineers spend more time on video calls, which utilizes laptop resources like CPU, memory, and more. Executing a build is much slower while on a call. Plus, a CPU and memory-intensive build can impact the quality of the video call, and make the local environment much less responsive.&#xA0;</p><p>LinkedIn gathered data showing how much slower video calls make common developer operations. It found video calls added a 2-4x increase in latency to a developer laptop.</p><p><strong>8. Concern about code leaks.</strong> One downside of remote work &#x2013; and hiring people whom you&#x2019;ve not met in person &#x2013; is that trust problems tend to arise more easily. When working from the office, it&#x2019;s easy to verify that the same person you hired is the one doing the work, remotely. With full-remote work, the risk is higher that someone other than the employee accesses the codebase.</p><p>CDEs can offer an additional layer of protection to reduce the risk of source code leaking outside of the network. At the very least, far more logging is in place, and it can be easier to detect when larger parts of the codebase are accessed and copied across the network.</p><p><strong>9. Open source VS Code Server</strong>. In 2021, Microsoft open sourced VS Code Server. This is the server code that powers VS Code remote development, and GitHub Codespaces. Thanks to this, the barrier to entry was dramatically reduced for anyone wanting to build their own cloud development environment which supports VS Code. This applies to startups offering CDE solutions, as well as companies building such a solution in house.</p><p>None of these trends alone can explain the spike in popularity of cloud development environments, but their combined effect in recent years does provide a plausible explanation. It&#x2019;s also possible to posit that the &#x201C;spark&#x201D; which ignited this confluence of factors was the Covid-19 pandemic of 2020-21, and the accompanying rise of remote work.</p><h2 id="cde-vendors-a-definite-trend">CDE vendors: a definite trend</h2><p>With more than 20 players in this space, let&#x2019;s begin with a timeline of when the products launched. The segment really took off around 2018, although Cloud9 &#x2013; which AWS acquired in 2017 &#x2013; was founded in 2010.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-26-at-18.44.37.png" class="kg-image" alt="Why are Cloud Development Environments Spiking in Popularity, Now?" loading="lazy" width="1156" height="982" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/09/Screenshot-2023-09-26-at-18.44.37.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/09/Screenshot-2023-09-26-at-18.44.37.png 1000w, https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-26-at-18.44.37.png 1156w" sizes="(min-width: 720px) 720px"><figcaption><em>A timeline of cloud development environment products and startups. Full subscribers can </em><a rel href="https://newsletter.pragmaticengineer.com/p/templates-as-inspiration-for-engineering?ref=blog.pragmaticengineer.com"><em>access a list with links here</em></a><em>.</em></figcaption></figure><p>Startups that offer remote development solutions include:</p><ul><li><a href="https://www.gitpod.io/?ref=blog.pragmaticengineer.com" rel>Gitpod</a>: feels like it might have the most momentum in the CDE space &#x2013; at least right now</li><li><a href="https://stackblitz.com/?ref=blog.pragmaticengineer.com" rel>Stackblitz</a><strong>: </strong>the only vendor that offers environments which boot in milliseconds, and the only solution that mount a micro-operating system written in WebAssembly inside the browser tab that boots in &lt;200ms!</li><li><a href="https://www.devzero.io/?ref=blog.pragmaticengineer.com" rel>DevZero</a>: founded in 2021 by two engineers who&#x2019;d worked at Uber, and the solution brings a lot of inspiration from <a href="https://newsletter.pragmaticengineer.com/p/cloud-development-environments?ref=blog.pragmaticengineer.com#%C2%A7uber" rel>Devpods at Uber</a>, and the developer experience at the company</li><li><a href="https://www.crafting.dev/?ref=blog.pragmaticengineer.com" rel>Crafting</a>: probably the most advanced solution of all; one that extends Kubernetes under the hood, and aims to be far more than a CDE</li><li><a href="https://replit.com/?ref=blog.pragmaticengineer.com" rel>Replit</a>: probably the most popular collaborative coding environment for personal use.</li><li><a href="https://codesandbox.io/?ref=blog.pragmaticengineer.com" rel>Codesandbox</a> started out as a web IDE in around 2018, but expanded since.</li><li><a href="https://coder.com/?ref=blog.pragmaticengineer.com" rel>Coder</a>: one of the few vendors that offers only a self-hosted CDE platform.</li><li><a href="https://codeanywhere.com/?ref=blog.pragmaticengineer.com" rel>Codeanywhere</a>: one of the earliest cloud IDEs, founded in 2013</li><li><a href="https://www.daytona.io/?ref=blog.pragmaticengineer.com" rel>Daytona</a>: founded in 2023, and its founders are the cofounders of Codeanywhere.</li><li><a href="https://cloudomation.com/en/devstack-pilot-customer-programme/?ref=blog.pragmaticengineer.com" rel>Cloudomation</a>: almost exclusively targets Germany</li><li><a href="https://hocus.dev/?ref=blog.pragmaticengineer.com" rel>Hocus</a>: started in November 2022, still in the building phase</li><li><a href="https://strong.network/?ref=blog.pragmaticengineer.com" rel>Strong Network</a>: approaches CDEs from the cybersecurity and compliance perspective</li></ul><p><em>We go into more detail for each of the above solutions &#x2014; as well as products from more established companies &#x2014; in the article <a href="https://newsletter.pragmaticengineer.com/p/cloud-development-environment-vendors?ref=blog.pragmaticengineer.com" rel>Cloud development environment vendors</a>.</em></p><p>There&#x2019;s an absolute flurry of startups which provide tools for remote development. Between 2010-2020, we saw a couple of startups launch in competition with each other, but it&#x2019;s since 2020 that there&#x2019;s been a lot more activity, and new product launches seem to be speeding up. Here is a summary of all the vendors and products mentioned in this article:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-26-at-22.56.40.png" class="kg-image" alt="Why are Cloud Development Environments Spiking in Popularity, Now?" loading="lazy" width="1118" height="1062" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/09/Screenshot-2023-09-26-at-22.56.40.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/09/Screenshot-2023-09-26-at-22.56.40.png 1000w, https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-26-at-22.56.40.png 1118w" sizes="(min-width: 720px) 720px"><figcaption>The number of cloud development environment product launches seem to be increasing since 2021. Feels like we&#x2019;re either at the beginning, or the middle of the &#x2018;CDE wave&#x2019;</figcaption></figure><p><strong>It feels to me like we could be nearing an inflection point</strong>: after which more developers will work with remote environments at medium and large companies, than those that use only their local machine to develop. I am reinforced by this feeling as I talked to vendors who all have a pretty clear vision on what they want to build: but their products are still being built out, and I had trouble keeping track with the various innovative approaches they are all trying!</p><p>Will most developers at large and mid-sized tech companies build software on a remote machine in 2-3 years time? And will they do this in a way that&#x2019;s indistinguishable from doing it locally? It&#x2019;s hard to be sure, but I believe this is the direction we are headed in.</p><hr><p>These were two out of the close to dozen topics we covered on this fresh trend. See these articles for more details:</p><p><a href="https://newsletter.pragmaticengineer.com/p/cloud-development-environments-why-now?ref=blog.pragmaticengineer.com" rel>More on why CDEs are spiking now</a>:</p><ul><li>Virtual desktops vs CDEs</li><li>The evolution of the CDE space since 2016</li><li>The biggest challenges of the CDE space</li><li>The future of software development in local environments</li></ul><p><a href="https://newsletter.pragmaticengineer.com/p/cloud-development-environments?ref=blog.pragmaticengineer.com" rel>Remote development environments at tech companies:</a></p><ul><li>The idea behind CDEs</li><li>Upsides of CDEs</li><li>Pipedrive</li><li>Uber</li><li>Slack</li><li>The downsides of CDEs</li></ul><p><a href="https://newsletter.pragmaticengineer.com/p/cloud-development-environment-vendors?ref=blog.pragmaticengineer.com" rel>The CDE vendor landscape:</a></p><ol><li>CDE startups and open-source solutions</li><li>Gitpod</li><li>Stackblitz</li><li>DevZero</li><li>Crafting</li><li>Big Tech and established companies</li></ol>]]></content:encoded></item><item><title><![CDATA[Bun: lessons from disrupting a tech ecosystem]]></title><description><![CDATA[If you use JavaScript or TypeScript for backend development, Node is the most popular choice of framework. A new runtime called “Bun” is taking this space by storm. Lessons from this sudden rise.]]></description><link>https://blog.pragmaticengineer.com/bun-lessons-from-disrupting/</link><guid isPermaLink="false">650db0257119ba00016eb3ed</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Fri, 22 Sep 2023 15:19:10 GMT</pubDate><media:content url="https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-22-at-17.17.11.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-22-at-17.17.11.png" alt="Bun: lessons from disrupting a tech ecosystem"><p><em>&#x1F44B; Hi, this is </em><a href="https://twitter.com/gergelyorosz?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>Gergely</em></a><em> with a bonus, free issue of the Pragmatic Engineer Newsletter. We cover one out of four topics in yesterday&#x2019;s subscriber-only </em><a href="https://newsletter.pragmaticengineer.com/p/the-pulse-62?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>The Pulse issue</em></a><em>. To get full newsletters twice a week, </em><a href="https://newsletter.pragmaticengineer.com/about?ref=blog.pragmaticengineer.com"><em>subscribe here</em></a><em>.</em></p><p>Two weeks ago, a JavaScript runtime and toolkit called <a href="https://bun.sh/?ref=blog.pragmaticengineer.com">Bun</a> was released and took the Node.js world by storm. Bun was mostly built by <a href="https://twitter.com/jarredsumner?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Jared Sumner</a>, a former Stripe engineer, and recipient of the Thiel Fellowship (a grant of $100,000 for young people to drop out of school and build things, founded by venture capitalist, Peter Thiel). Bun has other contributors, but Jared writes <a href="https://github.com/oven-sh/bun/graphs/contributors?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">the lion&#x2019;s share</a> of code.</p><p>Bun is a backend JavaScript runtime that is an alternative to <a href="https://nodejs.org/en?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Node.js</a> and <a href="https://deno.com/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Deno</a>. Its top focus is performance, and according to benchmarks shared <a href="https://www.youtube.com/watch?v=BsnCpESUEqM&amp;ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">in the launch video</a>, around 10x performance increases can be observed when building packages, running code, or handling inbound requests on a server. This theoretically reduces the hardware requirements of applications.</p><p>Bun has stirred up the JavaScript space, and adoption has been rapid. Vendors like Vercel and Replit added support for Bun, as did frameworks like Ruby on Rails and Laravel Sail (PHP.) Many developers are giving Bun a go. Of course, it&#x2019;s early days, but Bun keeps improving rapidly.</p><p><strong>But how is Bun so fast?</strong> Firstly, performance was the guiding principle, and the team made smart choices to achieve this, and also tradeoffs which need to be kept in mind. Smart choices include using a more performant JavaScript engine than Node does (Bun uses Apple&#x2019;s JavaScriptCore, while Node uses Google&#x2019;s V8,) and using the low-level programming language <a href="https://ziglang.org/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Zig</a>. There&#x2019;s also a large number of performance-centric optimizations like:</p><ul><li><a href="https://twitter.com/jarredsumner/status/1701187904398336087?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Using tagged pointers</a> to avoid the overhead of storing extra function pointers</li><li><a href="https://x.com/jarredsumner/status/1703203439671644478?s=20&amp;ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Additional steps</a> to reduce memory usage by scheduling additional garbage collector executions</li><li>&#x2026; and many more which all add up</li></ul><p>With performance, there are also tradeoffs. For example, in its quest for performance, when running &#x2018;bun install&#x2019;, Bun <a href="https://youtu.be/1xoy8Q5o8ws?si=NVRpe7TbWd4tTjma&amp;ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">doesn&#x2019;t check the network</a> to ensure that locally cached packages are correct &#x2013; even when specifying to use the latest version. Doing this would introduce seconds of latency, but also ensure correctness. The npm or pnpm package managers do this additional check and so are slower, though arguably more reliable.</p><p>Discovering these edge cases &#x2013; and making sure they don&#x2019;t catch you off guard &#x2013; will surely be a learning curve for developers using Bun, just like with every new framework.</p><p><strong>Bun showcases how the &#x2018;innovator&#x2019;s dilemma&#x2019; manifests in a tech ecosystem. </strong>The innovator&#x2019;s dilemma comes from the book of the same title by Clayton Christerenses. The dilemma is this: a large, market-leading company has some motivation to innovate, but also a strong disincentive as well, because innovation risks undermining its existing products.</p><p>In the case of the Node ecosystem, Node is the innovator. In 2009, it was revolutionary and the majority of the JavaScript backend development community moved to this ecosystem. Now of course, Node has interest in innovating in all areas, including performance. But it needs to make sure performance improvements don&#x2019;t break any Node users.</p><p>Bun has no such constraint. It begins with a clean state, and can ship something that works for, say, 90% of existing Node projects, and break the remaining 10%. This means it can make decisions which greatly improve performance, which Node doesn&#x2019;t have the luxury of doing.</p><p>If it was not for the innovator&#x2019;s dilemma there would hardly be any startups taking on large companies, or new frameworks which successfully challenge existing ones.</p><p><strong>Bun also reveals the contrast between venture-funded open source and &#x2018;community sweat&#x2019;-funded open source. </strong>Node&#x2019;s contributors are unpaid, and have been doing all work voluntarily.</p><p>I reached out to <a href="https://twitter.com/yagiznizipli?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Yagiz Nizipli</a>, who is the contributor who took on responsibility for performance work on Node. He confirmed Node has no funding, and no collaborator gets paid for their work on it. There are people whose company pays them to maintain Node for their own, company systems &#x2014; such as IBM paying to maintain Node so that it stays compatible with <a href="https://www.ibm.com/products/aix?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">IBM AIX</a> &#x2014; a proprietary Unix operating system designed to run on IBM&#xAE; Power&#xAE; servers. However, at the end of the day, it&#x2019;s all volunteers like Yagiz who have been building Node for over a decade, helping it become the dominant JavaScript backend runtime. <em>I tip my hat to all volunteer open source contributors and maintainers &#x2014; both for Node, and for other projects. If you are one of these people: thank you!</em></p><p>This is in stark contrast to how Bun is funded. The framework is built by a startup called <a href="https://oven.sh/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Oven</a>, which has raised more than $7M in funding, which means the company can afford to pay all its contributors a market-rate salary, plus equity in the company.</p><p>Clearly, strong funding will create a much more focused team, and Bun contributors work on Bun full-time, while unpaid Node contributors work on Node part-time.</p><p><strong>Venture funding comes at a cost, and the bill usually falls due later. </strong>There is barely anything to complain about in a startup like Oven paying people to work full-time on an open source framework like Bun. It&#x2019;s a win for everyone; the community and the developers working on it full time.</p><p>In contrast, the goal of a VC investor is a financial return. VCs fund businesses they expect to eventually be worth a lot more than the value of their investment, and to be either sold, or go public. This means that in the mid to long-term, Bun&#x2019;s funding needs to support a business. For most commercial open source companies, the approach tends to be to offer a managed, dedicated service of the open source software, or to provide additional features on top of it.</p><p>This is the approach Vercel is taking with Next.js &#x2013; where they are the trusted provider to host Next.js apps. In the case of Oven, I assume the plan is to do something similar.</p><p>Of course, not all startups succeed, and most startups which fail do so by running out of money. When this happens, the startup shuts down. In the case of a closed source startup, the software is also gone. However, with open source software like Bun, it will not go anywhere even if the business ceases to exist. The project would simply need volunteer contributors, or sponsors who pay contributions.</p><p>The license of a project is key to understanding how &#x2018;risky&#x2019; it is to use. Bun <a href="https://bun.sh/docs/project/licensing?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">uses</a> an extremely permissive MIT license that minimizes any risk.</p><p><strong>Technological innovation rarely happens in a vacuum; it builds on previous technologies. </strong>Node growing into a mature ecosystem is what enabled Bun to now take it by storm, and offer an alternative with superior characteristics &#x2013; in this case, performance.</p><p>Youtuber and tech investor <a href="https://t3.gg/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Theo Browne</a> posted <a href="https://www.youtube.com/watch?v=1xoy8Q5o8ws&amp;ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">the most balanced take</a> I&#x2019;ve seen so far on what Bun means for the ecosystem. In the video <a href="https://www.youtube.com/watch?v=1xoy8Q5o8ws&amp;ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">The truth about Bun</a>, he points out the risk of an open source project being dependent on an individual:</p><blockquote>&#x201C;Yagiz is the person on the Node team focused on performance. He is a part-time, unpaid contributor to Node, working really hard to make Node performant enough to be a viable choice (...) He&#x2019;s the person thanklessly maintaining this thing (...)<br><br>For Bun, the majority of code is coming from the person (Jared) who also makes the majority of business decisions [for his company]. You eventually get to the point where these things conflict. Jared&#x2019;s done an incredible job of managing this thus far: but he&#x2019;s mostly done this by working absurd amounts of time. That is a risk, and we need to be real about this risk.<br><br>At Node, there&#x2019;s great work going on from hundreds upon hundreds of people to make Node as great as it is. Node survived for more than a decade, because they&#x2019;ve managed and mitigated these risks really well&#x201D;</blockquote><p><strong>I&#x2019;m excited to see such innovation in the Node ecosystem, </strong>because innovation begets innovation. What Jared and the team have done with Bun is outstanding engineering; they&#x2019;ve shown it&#x2019;s possible to push performance far beyond what most engineers would assume to be possible. By building Bun to be so ridiculously fast, they&#x2019;re getting a ton of warranted interest and early adoption.</p><p>But this innovation also helps the wider ecosystem, as maintainers on Node and other package managers also jump to do performance optimizations for their tools, doing so with renewed inspiration.</p><p>It will be interesting to see the impact of more venture funding pouring into this space. Node was built by a team of volunteers, becoming an admirable framework, which is ever-improving, even without direct funding. This approach has proved to be sustainable, thanks to the hundreds of involved contributors. While Bun has incredible momentum: will this be enough to make it a sustainable framework and business?</p><hr><p>This was one out of the four topics covered in this week&#x2019;s The Pulse. The full edition additionally covers:</p><ol><li><strong>Industry Pulse</strong>: Databricks going public &#x2013; maybe, Square&#x2019;s long outage, Slack&#x2019;s redesign, and Valve blocks video games with GenAI assets.</li><li><strong>The tech IPO winter has ended:</strong> For 18 months, there were no tech IPOs, with HashiCorp being the last to list on the stock market. But now Arm, Instacart and Klaviyo have broken the ice, offering hope for more to come.</li><li><strong>Twilio&#x2019;s iconic billboard is different, but why?</strong> For 7 years on the highway to San Francisco, Twilio had a billboard boasting: &#x201C;Ask your developer.&#x201D; Now, the company has replaced this famous billboard with a new message geared toward sales and marketing teams.</li></ol><p><a href="https://newsletter.pragmaticengineer.com/p/the-pulse-62?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Read the full issue here</a>.</p>]]></content:encoded></item><item><title><![CDATA[How Microsoft does Quality Assurance (QA)]]></title><description><![CDATA[The Redmond Big Tech giant pioneered the SDET role in the 90s. It then retired it in 2014. What happened and why?]]></description><link>https://blog.pragmaticengineer.com/how-microsoft-does-qa/</link><guid isPermaLink="false">6509d0783852f90001b5b0b5</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 19 Sep 2023 16:48:26 GMT</pubDate><media:content url="https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-19-at-17.50.36.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-19-at-17.50.36.png" alt="How Microsoft does Quality Assurance (QA)"><p><em>&#x1F44B; Hi, this is </em><a href="https://twitter.com/gergelyorosz?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>Gergely</em></a><em> with a bonus, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover topics related to Big Tech and startups through the lens of engineering managers and senior engineers. In this article, we cover one out of seven topics from today&#x2019;s subscriber-only issue on </em><a href="https://newsletter.pragmaticengineer.com/p/how-big-tech-does-qa?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>How Big Tech does QA</em></a><em>. To get full issues twice a week, <a href="https://newsletter.pragmaticengineer.com/about?ref=blog.pragmaticengineer.com">subscribe here</a>.</em></p><p>Microsoft has played an outsized role in the development and importance of quality assurance across the industry. Microsoft was the first major company to come up with a specialized testing role which went well beyond manual testing. In this issue, we cover:</p><ul><li>The SDET role</li><li>Retiring of the SDET role</li></ul><h3 id="the-sdet-role">The SDET role</h3><p><strong>The SDET</strong> (Software Development Engineer in Test) role was one that Microsoft pioneered across the tech industry. They are <em>software engineers</em> who focused on writing automated tests; building and maintaining testing systems. The only difference between an SDET and a software development engineer (SDE) is that SDETs didn&#x2019;t generally write production code: they wrote test code, working in the same team as SDEs.</p><p>I could not trace the <em>exact</em> introduction of the role, but it was most likely in the 1990s. For example, here&#x2019;s <a href="https://techcommunity.microsoft.com/t5/exchange-team-blog/what-does-it-mean-to-be-an-sdet-software-development-engineer-in/ba-p/610515?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">a post from 2004</a> from a member of the Microsoft Exchange team explaining what it means to be an SDET in their organization:</p><blockquote>&#x201C;An SDET is a developer who works in a test team and not a development team. The SDET has a keen sense of a tester yet loves writing code, and lots of it.<br><br>The SDET enables the test team with the tools and processes that need to be in place for the testers to do what they do best&#x2026; test the living daylights out of the product and find as many bugs as possible before it goes to the market. <br><br>An SDET has the ability to analyze the functionality and architecture of a Product and thus design and implement tools that help testers test it. <br><br>The SDET enjoys short project life cycles, designs and implements many tools and test frameworks in a single year, uses the latest technology and has plenty of room for innovation. <br><br>Though product quality is a prime concern, the SDET doesn&#x2019;t have the stressful days that developers have during the end of a product life cycle. In layman&#x2019;s terms&#x2026; an SDET back-side is rarely on the line :)&#x201D;</blockquote><p>Microsoft had a formal career path for the SDET role. From the same post:</p><blockquote>&#x201C;There&#x2019;s plenty of room for growth in [the SDET position.] If you love doing what you are doing as an SDET then you can grow to become a Test Architect. If you want to get involved in management, then you can progress towards becoming an SDET Lead and then Test Manager. <br><br>If you want to just code and not be involved with testing then you can take the path of becoming a developer. Many people take this path. If you realize that your heart belongs to testing, then you can become a tester.&#x201D;</blockquote><p><strong>A 2:1 SDE:SDET ratio was common across Microsoft </strong>until around 2014. It was the case on my team at Skype for Xbox One, in 2012, when the team was formed. Here&#x2019;s how our team was composed, based on headcount:</p><ul><li>12x SDEs (software development engineers)</li><li>6x SDETs (software development engineer in test)</li><li>2x PMs (product managers)</li><li>1x EM (engineering manager)</li><li>1x SDET lead</li></ul><p>On our project, the SDET team owned all parts of testing:</p><ul><li>Manually verifying that features devs built, worked as expected, including edge cases we might have not considered</li><li>Building integration and end-to-end tests to automate checks</li><li>Creating manual tests plans, and executing before major milestones</li><li>Being involved during the planning phase of features, bringing ideas on edge cases and how the work would be validated</li><li>Building solutions for tricky problems, such as how to do reliable performance benchmarking for our Skype product on the Xbox hardware</li></ul><p>Unit tests were a source of tension, early on. Who should write them? Several experienced developers came from gaming, where developers typically don&#x2019;t write automated tests, and their view was that any automation &#x2013; including unit tests &#x2013; should be done by the SDET teams. <em>We cover more on how games are built in </em><a href="https://newsletter.pragmaticengineer.com/p/game-development-basics?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>Game development basics</em></a><em>, and go very hands-on in the issue, </em><a href="https://newsletter.pragmaticengineer.com/p/building-a-simple-game?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>Building a simple game</em></a><em>.</em></p><p>Those of us who&#x2019;d previously built applications, or did test driven development (TDD,) felt that this approach was wrong, and that developers should write their own unit tests because unit tests and the code are tightly coupled. I was in this camp.</p><p><strong>Having dedicated SDETs made it a tempting option for developers to &#x201C;outsource&#x201D; the writing of unit tests. </strong>I&#x2019;m just going to say it now: without an SDET team, the question of who writes unit tests would have not been up for debate: we developers would have <em>had</em> to write them. This is a recurring debate I&#x2019;ve seen in every team with assigned SDETs. Surprisingly, even this year I heard of a Silicon Valley-based company where a developer team has the test team write unit tests!</p><p>In our case, we settled on developers writing unit tests, with the SDET team doing everything else. This approach worked well enough, but there were a few memorable features of this setup:</p><ul><li><strong>An &#x201C;us and them&#x201D; dynamic that created division. </strong>When us developers finished a feature, we handed it over to an SDET, who usually found issues, so the feature came back to developers to fix. This felt annoying to devs, as it created work we might have not accounted for. Over time, it started to feel like there were two teams, with different goals, which didn&#x2019;t always row in the same direction.</li><li><strong>Ticket ping-pong between dev and test.</strong> I finish work on my feature and send it over to test (ping). The tester finds a bug and sends it back to me the next day (pong). I fix the bug, and send it over again in a few days (ping). The tester finds another bug and sends it back to me&#x2026; and this back-and-forth happened more times than I&#x2019;d be willing to admit!</li><li><strong>Devs were good at building complex systems, and could help SDET a lot. </strong>Our SDET team had been building an integration testing system for months, and progress was slow. Our team really needed this system, as manual tests were taking too long. Finally, one of the senior engineers proposed that devs join in to help build this system, <em>as one team</em>. Two weeks later, with the lead of experienced devs, a system was up and running. This got me thinking; would the team not work better without the dev/test division? We had just proved it did.</li><li><strong>The elephant in the room: some devs looked down on the SDET role. </strong>Although not everybody did, it was clear that many devs regarded SDET work as less challenging than their own. SDETs also knew they could have better career options by switching to a dev role.</li></ul><p>Well, it turns out they didn&#x2019;t have to wait that long for advancement.</p><h3 id="retiring-the-sdet-role">Retiring the SDET role</h3><p>Early 2014, I joined a new team called Skype for Web. This team was different from most teams at Skype, as they shipped a new version of the software every day, not every month.</p><p>The team consisted of 6 SDEs and 3 SDETs, on paper. In reality, we were 9 SDEs, thanks to the engineering manager and the test lead who quietly decided it made zero sense to have a dedicated test role, when we shipped new features every day. I write about this change that the team&#x2019;s leadership didn&#x2019;t broadcast, in the issue <a href="https://blog.pragmaticengineer.com/project-management-at-big-tech/" rel="noopener noreferrer nofollow">How Big Tech runs tech projects and the curious absence of Scrum</a>:</p><blockquote>&#x201C;When I joined the Skype for Web team, we initially did two-week sprints, and followed the usual Scrum processes. We also had a split of software engineers and QA engineers. However, our shipping pace was every two weeks, but we wanted to ship more frequently.<br><br>The first thing we did was make QA a part of engineering. In the &#x201C;old world&#x201D;, an engineer would finish their work, check into their branch, update a ticket, and let the QA know it&#x2019;s ready for review. The QA would take this ticket a day or two later, review it, and reopen the ticket if they found issues. This was a long delay.<br><br>We made a quiet, unofficial, change where all SDETs built production software as well, and all software engineers became responsible for testing their own code. Now, we no longer had to wait days for feedback before shipping code to production. However, the bi-weekly sprints and the numerous Scrum rituals became the next problem.&#x201D;</blockquote><p><strong>We became a lot more productive by removing the SDET role from our team! </strong>SDETs still focused mainly on testing-related work, but also picked up development tasks. Just as importantly, we paired a lot! I remember pairing with SDETs to build a feature. I was good at thinking about how to make something work, and the SDET was really good at pointing out edge cases I hadn&#x2019;t considered. When it came to debugging, the resourcefulness of SDETs surprised me.</p><p>On most teams across Microsoft, SDETs spent a lot of time manually testing things, and writing integration tests. But on our team there was very little manual testing, and we all built integration testing <em>infrastructure, </em>and monitoring <em>infrastructure</em>. When a developer or an SDET picked up a piece of work, they wrote all tests &#x2013; unit and integration &#x2013; which made sense.</p><p>The best part of this change was that there was no more &#x201C;us vs them.&#x201D; Arguments ceased about whether to fix a bug which an SDET had discovered, as now we did our own testing and fixed bugs which we discovered, before shipping to production.</p><p><strong>Web teams across Microsoft started to quietly remove the SDET role</strong>. Back in 2014, our web team in the London Skype office felt &#x2018;special,&#x2019; as the only other teams to merge the SDET function were web-based teams, of which there were not many. On every other team, SDETs kept working the way they always had.</p><p>However, it wasn&#x2019;t only web teams within the Skype division which merged these roles for better efficiency. Web teams independently came to the realization that merging SDET and dev roles made them move faster, and so this happened across all of Microsoft!</p><p><strong>In the middle of 2014, Microsoft formally retired the SDET role and introduced the SE role.</strong> The inspiration was apparently a larger web team at Microsoft, Bing. <a href="https://arstechnica.com/information-technology/2014/08/how-microsoft-dragged-its-development-practices-into-the-21st-century/4/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">From Ars Technica</a>, in 2014:</p><blockquote>&#x201C;At Bing, the task of creating programmatic tests was moved onto developers, instead of dedicated testers. QA still exists and is still important, but it performs end-user style &quot;real world&quot; testing, not programmatic automated testing. This testing has been successful for Bing, improving the team&apos;s ability to ship changes without harming overall software quality.&#x201D;</blockquote><p>In July 2014, Microsoft announced that they will execute their largest layoffs to that date, letting go 18,000 staff of the 127,000 employees at the company. 12,500 of the cuts were for the Nokia division. As part of this layoff, a large number of SDET roles were also eliminated. This happened around the same time as the SDET role was announced to be retired, and existing SDETs needed to move over to the software development engineer (SDE) track over the next several months. The SDE role was also renamed to SE &#x2013; Software Engineer.</p><p><strong>How did this transition work out?</strong> From what I gather, it went fine. The change made a lot of sense for teams that ship on a daily basis. And teams within Microsoft that ship weekly or monthly are increasingly rare, as Microsoft also leans into the software-as-a-service (SaaS) model. Of course, Microsoft continues to be a vendor for the Windows operating system family, and the Surface tablet. These are both areas where the approach to quality needs to be different to that of SaaS products.</p><p>A good account of the change came from the Visual Studio Team Services team in 2017, three years after this change. Reflecting on it, <a href="https://www.linkedin.com/in/brharry/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Brian Harry</a> &#x2014; currently Technical Fellow at Microsoft &#x2014; <a href="https://devblogs.microsoft.com/bharry/testing-in-a-cloud-delivery-cadence/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">wrote</a>:</p><blockquote>&#x201C;Two years ago [in 2015], we had 10&#x2019;s of thousands of tests. They were written by &#x2018;testers&#x2019; to test code written by &#x2018;developers&#x2019;. While there were some advantages of this model &#x2013; like clearly measurable and controllable investment in test, expertise and career growth in the testing discipline, etc., there were also many disadvantages &#x2013; lack of accountability on the developers, slow feedback cycles (introduce bug, find bug, fix bug), developers had little motivation to make their code &#x201C;testable&#x201D;, divergence between code architecture and test architecture made refactoring and pivoting very hard/expensive, and more. (...)<br><br>Full testing would take the better part of a day to run, many more hours to &#x201C;analyze the results&#x201D; to identify false failures, and days or weeks to repair all the tests that were broken due to some legitimate change in the product. (...) Two years ago, we started on a path to completely redo testing. <br><br><strong>We combined the dev and test orgs into a consolidated &#x2018;engineering&#x2019; org.</strong> For the most part, we eliminated the distinction between people who code and people who test. That&#x2019;s not to say every person does an identical amount of each, but every person does some of everything and is accountable for the quality of what they produce. We also set out to completely throw away our 10&#x2019;s of thousands of tests that took 8 years to create, and replace them with new tests that were done completely differently.&#x201D;</blockquote><p>This team took stock of the type of tests they had in place and decided they didn&#x2019;t like that there were few small unit tests, but lots of complex and hard to maintain end-to-end tests. So they changed this:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-19-at-13.11.22.png" class="kg-image" alt="How Microsoft does Quality Assurance (QA)" loading="lazy" width="1196" height="1474" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/09/Screenshot-2023-09-19-at-13.11.22.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/09/Screenshot-2023-09-19-at-13.11.22.png 1000w, https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-19-at-13.11.22.png 1196w" sizes="(min-width: 720px) 720px"><figcaption><em>The change in the number and type of tests the Visual Studio Team Services experienced after merging the dev and the test teams. Before the merge: end-to-end tests dominated, but unit and integration tests were rare. This flipped after the merge. Data source: </em><a href="https://devblogs.microsoft.com/bharry/testing-in-a-cloud-delivery-cadence/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>Microsoft Dev Blogs</em></a></figcaption></figure><p>Here&#x2019;s another visualization on how the team&#x2019;s tests changed over a two-year timeframe:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-19-at-13.18.42.png" class="kg-image" alt="How Microsoft does Quality Assurance (QA)" loading="lazy" width="1962" height="860" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/09/Screenshot-2023-09-19-at-13.18.42.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/09/Screenshot-2023-09-19-at-13.18.42.png 1000w, https://blog.pragmaticengineer.com/content/images/size/w1600/2023/09/Screenshot-2023-09-19-at-13.18.42.png 1600w, https://blog.pragmaticengineer.com/content/images/2023/09/Screenshot-2023-09-19-at-13.18.42.png 1962w" sizes="(min-width: 720px) 720px"><figcaption><em>In 2 years, almost all &#x201C;old&#x201D; tests from when test was separate from dev, were gone. The new tests became more granular as well. Data source: </em><a href="https://devblogs.microsoft.com/bharry/testing-in-a-cloud-delivery-cadence/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>Microsoft Dev Blogs</em></a></figcaption></figure><p>So, was all this work worth it in the end? According to Brian, yes it was. Writing at the time, he said:</p><blockquote>&#x201C;We are starting to reap the benefits in improved quality, agility and engineer satisfaction.&#x201D;</blockquote><hr><p>We covered the QA approach at one out of seven Big Tech companies from the article <a href="https://newsletter.pragmaticengineer.com/p/how-big-tech-does-qa?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">How Big Tech does QA</a>. The full edition additionally covers details for:</p><ul><li>Google</li><li>Google</li><li>Meta</li><li>Apple</li><li>Amazon</li><li>Uber</li><li>Netflix</li></ul><p><strong><a href="https://newsletter.pragmaticengineer.com/p/how-big-tech-does-qa?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Read the full issue here</a>.</strong></p><p>Related issues, which overlap with testing:</p><ul><li><a href="https://newsletter.pragmaticengineer.com/p/project-management-in-tech?ref=blog.pragmaticengineer.com" rel>How Big Tech runs tech projects and the curious absence of Scrum</a>. How projects are organized does have an impact on how straightforward &#x2013; or not &#x2013; it is to do manual testing on a regular cadence</li><li><a href="https://newsletter.pragmaticengineer.com/p/healthy-oncall-practices?ref=blog.pragmaticengineer.com" rel>Healthy oncall practices</a> &#x2013; while not all Big Tech companies have a dedicated QA function, engineers are almost always oncall, and this forces some more focus on quality</li><li><a href="https://newsletter.pragmaticengineer.com/p/shipping-to-production?ref=blog.pragmaticengineer.com">Shipping to production</a></li><li><a href="https://newsletter.pragmaticengineer.com/p/low-quality-eng-culture?ref=blog.pragmaticengineer.com" rel>Dealing with a low-quality engineering culture at Big Tech</a></li><li><a href="https://newsletter.pragmaticengineer.com/p/what-is-a-senior-software-engineer?ref=blog.pragmaticengineer.com" rel>What is a senior software engineer at Big Tech?</a></li></ul>]]></content:encoded></item><item><title><![CDATA[How Games Typically Get Built]]></title><description><![CDATA[The differences between games development and more “standard” software engineering, roles, and how games are typically built.]]></description><link>https://blog.pragmaticengineer.com/how-games-typically-get-built/</link><guid isPermaLink="false">64e4efd347d03200010bacb5</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 22 Aug 2023 17:31:57 GMT</pubDate><media:content url="https://blog.pragmaticengineer.com/content/images/2023/08/Screenshot-2023-08-22-at-19.22.23.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.pragmaticengineer.com/content/images/2023/08/Screenshot-2023-08-22-at-19.22.23.png" alt="How Games Typically Get Built"><p><em>&#x1F44B; Hi, this is</em><a href="https://twitter.com/gergelyorosz?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em> Gergely</em></a><em> with a bonus, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover topics related to Big Tech and startups through the lens of engineering managers and senior engineers. In this article, we cover one out of for topics from the past newsletter issue </em><a href="https://newsletter.pragmaticengineer.com/p/game-development-basics?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>Game Development Basics</em></a><em>. To get the full issues, twice a week, <a href="https://newsletter.pragmaticengineer.com/about?ref=blog.pragmaticengineer.com">subscribe here</a>.</em></p><blockquote>Q: &#x201C;I play video games, and I was wondering how building games compares to more &#x2018;standard&#x2019; software development. I&#x2019;d love to get a glimpse into the game development world, and how it compares to the software engineering approaches at tech companies.&#x201D;</blockquote><p>How games are built is a fascinating subject for me, and my interest derives from having worked with former game developers. At Skype, I worked on the team building Skype for the Xbox One console, and several engineers on that team had previously worked in games. It was by talking with them that I realized just how different the game development world is. Video games are very complex pieces of software, built in different conditions and under very different constraints than many other business applications are.</p><p>To answer the question of how the video game development sector works, I turned to <a href="https://www.linkedin.com/in/t2thompson?ref=blog.pragmaticengineer.com">Tommy Thompson</a>, director of AI and Games, who&#x2019;s a veteran of game development and of teaching it. Tommy has built his own video games, consulted on a wide variety of game projects, and for a decade has taught game development at various universities. He also runs the highly popular <a href="https://www.youtube.com/channel/UCov_51F0betb6hJ6Gumxg3Q?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">AI and Games YouTube channel</a>, where he delves into how AI makes for better games, and games make for better AI.</p><p>I met Tommy in 2010 at Scott Logic, a UK software consultancy where we were both software developers on neighbouring desks. As we reconnected more than a decade later, I discovered just how much our paths diverged right after that job; Tommy spent the next ten years in gaming, while I moved on to tech companies.</p><p>In this issue, we cover:</p><ul><li>Getting started in games development</li><li>Games are software, but in a non-standard way</li><li>Typical roles within games development</li><li>How games typically get built</li><li>The game development lifecycle</li></ul><p><em>As a heads up, Tommy is hosting his third annual </em><a href="https://itch.io/jam/aiandgames2023?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>AI and Games jam</em></a><em>, 15-22 September. Over a week, participants build their own game utilizing AI in some form. </em><a href="https://itch.io/jam/aiandgames2023?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>Learn more or sign up if you&#x2019;re interested</em></a><em>.</em></p><p>With this, it&#x2019;s over to Tommy:</p><hr><h2 id="getting-started-in-games-development">Getting started in games development</h2><p>Video game development is undoubtedly one of the largest entertainment sectors in the world. It&#x2019;s a <a href="https://www.weforum.org/agenda/2022/07/gaming-pandemic-lockdowns-pwc-growth/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">$200+ billion industry</a>, which thrived during the strictest of lockdowns throughout the Covid-19 pandemic, when people stayed indoors and checked out the latest instalments of action-packed games such as <em>DOOM </em>and <em>The Last of Us</em>,<em> </em>to more relaxing experiences like <em>Bugsnax </em>and <em>Animal Crossing</em>. Or perhaps they jumped on their favourite &#x2018;live service&#x2019; games, playing the likes of <em>Dota 2, Fall Guys</em> or <em>Fortnite </em>with friends, to enjoy social interactions at a time when we couldn&#x2019;t meet up in person.</p><p>Game development is a sector that hosts a myriad of challenges. Each project typically takes several years to create, with shifting hardware specifications and emerging competitors and trends to anticipate and react to, during the process. But even in 2022, the biggest challenge for anyone keen to learn more is that gaming is a sector which is often shrouded in mystery.</p><p><strong>Getting started in video game development, or even just understanding how it all works, is often a difficult first step.</strong> Perhaps unlike any other software development field, the tools, technologies, practices and pipelines that are typical for a video game production are not well communicated or documented to the wider world. Naturally, this leads to a gap between the creator and the consumer, as wild and inaccurate hot takes on social media regarding the <a href="https://www.gamesradar.com/the-gta-6-leak-was-bad-for-everyone-but-im-glad-developers-are-celebrating-the-brokenness-of-games/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">recent leaks of Grand Theft Auto 6</a> footage show. Still, even for a typical software engineer, it can be difficult to figure out how your skills apply in this industry, and how it really works.</p><p>Back in 2010, I was working as a software engineer in the banking sector, and Gergely and I used to work in the same office. It was around that time our paths diverged, with mine leading into the world of video game development. I had actually transitioned into a career as a university lecturer in computer science. But soon after, I was teaching game development on a bachelor&apos;s degree course. Despite my enthusiasm, and some earlier work making crude games as part of my PhD research, it became readily apparent that despite being a video game player, I still knew very little of how game development worked. This is of course a problem when you&#x2019;re supposed to be teaching it!</p><p>So, over the past 10 years I&#x2019;ve been on a journey to learn more about game development, with my experiences in teaching resulting in me becoming course director of several games development courses at UK universities, <a href="https://www.youtube.com/c/AIGamesSeries?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">starting a YouTube channe</a>l that marries my interests in artificial intelligence (AI) and video game development (perhaps unsurprisingly called &#x2018;AI and Games&#x2019;) and developing my own game on PC and Xbox. I now work as a developer and consultant on artificial intelligence in the video games industry; working with companies ranging from big hitters such as Intel and Ubisoft, to smaller game studios around the world, and contributing to the production of several game projects over the past few years.</p><p>In this article, my focus is on providing a high-level overview of how game development works, and how software engineers fit into that space. Naturally, there&#x2019;s a lot of ground to cover, and I hope that even at this introductory level, you find it quite insightful. So, let&#x2019;s start with the basics.</p><h2 id="games-are-software-but-in-a-non-standard-way">Games are software, but in a non-standard way</h2><p>Video games can often feel far removed from traditional software, given the modes of interaction and style of presentation are often unique to this space. But in essence, it&#x2019;s business as usual. As a software engineer working on a game, your task is to facilitate the introduction of new features, integrate them within a large and ever-changing code base, clamp down on bugs and other emergent problems, and ensure it runs smoothly on a myriad of different platforms with varying hardware specifications. I&#x2019;d argue that my time working as a mobile developer prepared me more for my time in games, than anything else.</p><p>All this sounds a lot like a regular software development gig, but the big difference compared to most software projects, is the highly multidisciplinary nature of the gaming medium. As a game programmer, you&#x2019;re part of a much larger team, catering to a variety of different needs and project requirements.</p><h2 id="typical-roles">Typical roles</h2><p>On a typical games project, programmers work alongside designers, artists, animators, writers, sound designers and other disciplines. It&#x2019;s usually a large and diverse team working together to make the project a reality. This is undoubtedly one of the most exciting, and equally challenging, aspects of any given project. It&#x2019;s a highly collaborative space, as you work together to bring the vision of the game to life. Being able to feed off the creative energies of others around you is incredibly satisfying. I often explain this working relationship as that artists <em>make it pretty</em>, while designers and programmers <em>make it work</em>.</p><p>If anything, maintaining consistency of vision and preventing feature creep is one of the biggest problems you face while working on a game. This becomes the responsibility of the directors and producers.</p><p><strong>The director</strong> is typically at the helm of the creative vision. Directors work with different teams to paint the broader picture, making executive decisions, all the while trying to maintain consistency.</p><p><strong>Producers</strong> work on ensuring requirements are established, tasks are properly identified, scoped and budgeted, that team synergy is effective, and whether the director&#x2019;s vision is actually attainable given the time and money available.</p><p>Compared to traditional software projects, a game director acts akin to a product manager, with an emphasis upon hands-on work, leading team members below them, and focusing on the creative aspects of the project. A producer occupies an interesting middle ground between product and project manager. They&#x2019;re responsible for keeping the project on track, collaborating with leadership and stakeholders &#x2013; such as an external publisher &#x2013; but also they keep a close eye on the product performance and work to ensure the game ships.</p><p>Depending on the size of a studio, a producer may also be responsible for business management, such as liaising with external partners and handling finances. In a worst-case scenario, the director is also the producer. But it&#x2019;s generally agreed that separating the creative direction from the project management helps keep things on track.</p><p>Perhaps unsurprisingly, this whole process was heavily affected by the global health crisis and the need to work from home. It led to a number of new challenges, for which the industry is only now beginning to understand the most effective solutions.</p><h3 id="how-games-typically-get-built">How games typically get built</h3><p>If what I&#x2019;ve described of multi-disciplinary teams working together sounds exciting or intriguing, what typically makes many scream in terror is when I talk about how games are typically built. It&#x2019;s an onerous, complicated and often counter-intuitive process, given so many games emerge more as happy accidents, than the products of a carefully supervised process.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/08/image.png" class="kg-image" alt="How Games Typically Get Built" loading="lazy" width="1364" height="1480" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/08/image.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/08/image.png 1000w, https://blog.pragmaticengineer.com/content/images/2023/08/image.png 1364w" sizes="(min-width: 720px) 720px"><figcaption>Prototype vs final version. Top image: The prototype of <em>Sea of Thieves </em>(Rare, 2018) developed in the Unity game engine. Bottom: The final version of the game, developed in Unreal Engine 4.</figcaption></figure><p><strong>Prototyping.</strong> Games start out in a prototype stage, typically built using existing art assets, or with cobbled-together solutions for the purpose of establishing the basics of functionality and behaviour. Prototypes are critical for getting a game signed off into full production, or obtaining funding from an external partner; given the &#x2018;fun&#x2019; of the experience should be made evident and also that there is a market for the product.</p><p>Should a game move into full production, it typically becomes a mishmash of different creative processes operating at once. Programmers are building core systems, artists are establishing the visual aesthetic and style of the game, and designers are establishing gameplay, long-term progression and retention.</p><p><strong>Integration testing is often a difficult aspect of game development</strong>. Integration testing is challenging because so many disciplines are working in parallel. This is because assets from different teams get pushed into the build at different stages, often breaking much of the game as it&#x2019;s being created. Identifying and helping resolve these issues is often led by dedicated quality assurance teams &#x2013; assuming the team size or budget permits. Quality assurance might also be pushed out to the latter stages of development.</p><p>In full production, you&#x2019;re essentially trying to &#x201C;capture lightning in a bottle&#x201D; for a second time - the first time was during prototyping. Only this time, the game is significantly more complex and potentially is even being built in an entirely different game engine.</p><p><strong>Managing feature creep is a very real problem.</strong> Games take a long time to make and the industry is an evolving and reactive beast. As new games get a foothold in the market, they can often force changes upon in-production titles in an effort to stay competitive and relevant. Trends emerge in specific genres when a new idea captures the imaginations of players. A recent example would be the adoption of <a href="https://www.dexerto.com/overwatch/blizzard-testing-overwatch-2-ping-system-1581360/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">&#x2018;ping&#x2019; systems in first-person shooters, </a>brought about by the success of Apex Legends.</p><p>New trends emerging can lead to small deviations from an existing production schedule, or an entire revamp of a concept in order to pursue a new trend. Arguably the biggest example of this in recent years is <em>Fortnite </em>by Epic Games. <em>Fortnite </em>started out as a third-person wave defence shooter, only to become a battle royale in a style akin to <em>PlayerUnknown&#x2019;s Battlegrounds,</em> to significant critical acclaim and financial reward.</p><p>But of course, a success story like <em>Fortnite</em> isn&#x2019;t the reality for most projects. Games can spend years in something of a &#x2018;fugue state,&#x2019; whereby the core of the game fails to take shape until the closing months as core design and direction are not nailed down sufficiently.</p><p><strong>Tech debt</strong> can manifest quite easily as systems are built for one purpose, only for them later to be used for another. For some large-scale projects, the initial &#x2018;fun&#x2019; aspect is only recaptured in the final 20% of the production process, which often leads to <a href="https://kotaku.com/bioware-magic-is-bullshit-says-former-dragon-age-pro-1848385237?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">difficult working conditions for developers</a> in the closing weeks &#x2013; if not months &#x2013; of a given project.</p><p>There has been a growing emphasis over the past decade for game studios to embrace better work practices from traditional software development. Practices include:</p><ul><li>Test-driven development</li><li>Automated build processes</li><li>Agile methodologies</li></ul><p>All these processes are introduced to better catch many of the problems that emerge earlier in production. The real challenge is then adapting many of these ideas to work effectively within this multi-disciplinary environment.</p><h2 id="the-game-development-cycle">The Game Development Cycle</h2><p>For games, the traditional software development lifecycle never really fits. This is because you&apos;re often working to build or rebuild the same game multiple times during production. In some instances, the game continues to be developed even after it ships.</p><p>In this section, I&#x2019;ll give a breakdown of the overall process. As a caveat, this breakdown isn&#x2019;t universal, experiences will vary, and practicalities will shift depending on the type of project and the size of the studio. But it at least paints a picture of how the process typically pans out. For reference, it&#x2019;s worth keeping in mind that your average game will typically take somewhere in the region of 2-5 years to make.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/08/image-1.png" class="kg-image" alt="How Games Typically Get Built" loading="lazy" width="1456" height="700" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/08/image-1.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/08/image-1.png 1000w, https://blog.pragmaticengineer.com/content/images/2023/08/image-1.png 1456w" sizes="(min-width: 720px) 720px"><figcaption>Concept art &#x2018;Faye&#x2019;s Funeral&#x2019; by Jose Cabrera for <em>God of War </em>(Sony Santa Monica, 2018)</figcaption></figure><p>The game development life cycle consist of these three phases:</p><ul><li>Pre-production</li><li>Production</li><li>Release</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/08/image-2.png" class="kg-image" alt="How Games Typically Get Built" loading="lazy" width="1456" height="1153" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/08/image-2.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/08/image-2.png 1000w, https://blog.pragmaticengineer.com/content/images/2023/08/image-2.png 1456w" sizes="(min-width: 720px) 720px"><figcaption>The three phases of the game development lifecycle.</figcaption></figure><p>This was one out of the four topics covered in the article <a href="https://newsletter.pragmaticengineer.com/p/game-development-basics?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Game Development Basics</a>. The rest of the article covers:</p><ol><li><a href="https://newsletter.pragmaticengineer.com/i/81949525/the-game-development-cycle?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><strong>The game development cycle, in-depth</strong></a><strong>.</strong> What happens in the pre-production, production and release steps?</li><li><a href="https://newsletter.pragmaticengineer.com/i/81949525/indie-vs-aaa-production?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><strong>Indie vs AAA production</strong></a><strong>.</strong> What are the major differences between how indie games are built vs how AAA titles come together?</li><li><a href="https://newsletter.pragmaticengineer.com/i/81949525/tools-and-services?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><strong>Game development tools &amp; services</strong></a><strong>.</strong> Some of the custom tools used in game development: source control approaches, game engines and middlewares.</li></ol><p><a href="https://newsletter.pragmaticengineer.com/p/game-development-basics?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><strong>Read the full article here</strong></a><strong>.</strong></p><p>I recommend checking out Tommy&#x2019;s game development YouTube channel, <a href="https://www.youtube.com/channel/UCov_51F0betb6hJ6Gumxg3Q?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">AI and Games</a>. If you are interested in games development, you can follow Tommy <a href="https://www.linkedin.com/in/t2thompson/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">on LinkedIn</a> as well or subscribe to his newsletter, also called <a href="https://open.substack.com/pub/aiandgames?ref=blog.pragmaticengineer.com" rel="noopener">AI and Games</a>.</p>]]></content:encoded></item><item><title><![CDATA[A senior engineer/EM job search story]]></title><description><![CDATA[avidson Fellipe, a software engineer with 15 years’ experience, based in New York, was recently let go. After 350 applications and 85 first-round interviews in 4 months, he secured 3 offers, and has now started his new job. He shares first-hand learnings about navigating the jobs market.]]></description><link>https://blog.pragmaticengineer.com/a-senior-engineer-em-job-search-story/</link><guid isPermaLink="false">64d5150ced331400012234b8</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 10 Aug 2023 16:50:37 GMT</pubDate><media:content url="https://blog.pragmaticengineer.com/content/images/2023/08/Screenshot-2023-08-10-at-18.21.08-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.pragmaticengineer.com/content/images/2023/08/Screenshot-2023-08-10-at-18.21.08-1.png" alt="A senior engineer/EM job search story"><p><em>&#x1F44B; Hi, this is</em><a href="https://twitter.com/gergelyorosz?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em> Gergely</em></a><em> with a bonus, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover topics related to Big Tech and startups through the lens of engineering managers and senior engineers. In this article, we cover one out of five topics from today&#x2019;s subscriber-only </em><a href="https://newsletter.pragmaticengineer.com/p/the-pulse-58-zoom-an-rto-turning?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><em>The Pulse issue</em></a><em>. To get full issues twice a week, <a href="https://newsletter.pragmaticengineer.com/about?ref=blog.pragmaticengineer.com">subscribe here</a>.</em></p><p>Before we start: plenty of people who subscribe to the newsletter utilize a learning and development budget their company provides. In what is neat: The Pragmatic Engineer is now the first-ever newsletter <a href="https://www.learnerbly.com/providers/the-pragmatic-engineer?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">listed</a> on <a href="https://www.learnerbly.com/?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow"><strong>Learnerbly</strong></a>. Learnerbly is an L&amp;D platform hundreds of tech companies use, as it makes administering these budgets much simpler &#x2014; and it&#x2019;s also a lot easier for people to request books, courses, or newsletters. If your company already has Learnerbly, you can <a href="https://www.learnerbly.com/providers/the-pragmatic-engineer?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">now request the full newsletter</a> with just one click.</p><hr><p><a href="https://www.linkedin.com/in/fellipe/?ref=blog.pragmaticengineer.com" rel>Davidson Fellipe</a> is a lead software engineer based in New York, with more than 15 years of experience. In April this year he was unfortunately impacted by job cuts at the company where he worked, and found himself on the job market. A few months later, he signed an offer to start a new company, and shared brief details of his job search on LinkedIn:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.pragmaticengineer.com/content/images/2023/08/Screenshot-2023-08-10-at-18.21.08.png" class="kg-image" alt="A senior engineer/EM job search story" loading="lazy" width="1214" height="670" srcset="https://blog.pragmaticengineer.com/content/images/size/w600/2023/08/Screenshot-2023-08-10-at-18.21.08.png 600w, https://blog.pragmaticengineer.com/content/images/size/w1000/2023/08/Screenshot-2023-08-10-at-18.21.08.png 1000w, https://blog.pragmaticengineer.com/content/images/2023/08/Screenshot-2023-08-10-at-18.21.08.png 1214w" sizes="(min-width: 720px) 720px"><figcaption><em>Davidson summarizing his job hunt. Source: <a href="https://www.linkedin.com/posts/fellipe_my-journey-navigating-the-wild-us-tech-market-activity-7090440097170436097-6tcf?utm_source=share&amp;utm_medium=member_desktop" rel>Davidson&#x2019;s LinkedIn</a></em></figcaption></figure><p>I was interested in learning more about how Davidson went about his job search, and his experience of being in the jobs market, so I reached out and he kindly shared more context and advice for navigating the current market.</p><p>Davidson shared that he eventually received one engineering manager offer and two individual contributor offers. He accepted the senior engineer offer.</p><p><em>How long was your job search?</em></p><p>&#x2018;My search lasted for about three months, until I received the first offer.</p><p>&#x2018;Starting in April 2023, I applied to a few positions, mostly targeting engineering manager roles. During that time, I dedicated a significant effort to applying using referrals whenever possible. The period from April to mid-May was challenging: I found myself in hiring freezes and canceled processes. For some applications, it took 2-3 weeks before I had a call with the hiring manager. At this time, more than half of my applications were rejected during the resume review, <em>even</em> with referrals.</p><p><strong>&#x2018;If you attempt to apply everywhere, you can get a lot more frustrated</strong>. Instead of applying broadly, I focused on engineering manager positions for frontend, product engineering, and developer experience (front-end.) Over time, I gradually opened myself up to individual contributor roles, but only for frontend positions (senior, lead, staff, and founding engineer roles.)&#x2019;</p><p><em>Which tools did you use to stay organized and to apply for so many positions?</em></p><p>&#x2018;To keep track of all my applications, I created a spreadsheet with columns like:</p><ul><li>Company name</li><li>Position applied for</li><li>Application date</li><li>Status</li><li>Last stage</li></ul><p>&#x2018;Other tools that helped:</p><ul><li><strong><a href="https://www.tealhq.com/tools/job-tracker?ref=blog.pragmaticengineer.com" rel>Teal application tracker</a></strong> and <strong><a href="https://simplify.jobs/?ref=blog.pragmaticengineer.com" rel>Simplify</a></strong> for applications. Simplify helped me a lot to automatically fill applications in the most popular applicant tracking systems (ATS.) Another useful option was for me to have an &quot;Identity&quot; ready in 1Password, with the most common information requested by the ATS.</li><li><strong>Notion</strong>: for every company I talked to, I took notes on Notion to record what we talked about.</li><li><strong>Crafting tailored resumes</strong>: I dedicated time to crafting two, different one-page resumes, highlighting accomplishments, and showing my past experiences. I did one as a manager, and the other as an engineer: with the goal to improve my chances of converting interviews. For instance, my experience as a founding engineer at a startup helped secure interviews with some startups.&#x2019;</li></ul><p><em>How helpful did you find referrals?</em></p><p>&#x2018;People in my network offered referrals, and I also asked people I knew when I saw positions close to my profile at their company.</p><p>&#x2018;I also had cases when I saw a position I was interested in, but didn&apos;t know anyone at the company. In some cases, I added someone from the company via LinkedIn, and asked for a referral. I got a few interviews with this strategy!</p><p><strong>&#x2018;I helped others impacted by layoffs, and the other way around. </strong>I shared opportunities or redirected recruiters to others I knew were let go, and people did the same for me. We were all experiencing the same challenges, after all!</p><p>&#x2018;I worked with external recruiters as well. These recruiters &#x2013; which work with multiple companies &#x2013; tend to have a number of opportunities that may match your skills and interests. Working with external recruiters helped in getting more interviews, especially with startups.&#x2019;</p><p><em>How did you find the interview processes?</em></p><p>&#x2018;There are far more candidates for fewer positions, so the bar to go to the final round is higher.</p><p>&#x2018;Talking about startups, they are very creative with interviews! I&#x2019;ve completed both technical quizzes and even cognitive aptitude tests. These types of interviews were usually an extra round before the coding interview or take-home assessment. Having at least 4 interviews or screening steps was pretty common.&#x2019;</p><p><em>How did you manage your time and energy?</em></p><p>&#x2018;Job searching took a toll on my time and energy. I took a few weeks of vacation in my home country, then gradually started to increase the pace of interviews. My daily high-level plan was this:</p><ul><li>Morning: walk, study, review answers and tailor my resume.</li><li>Afternoon: interviews, review job descriptions and take-home assessments that were timeboxed.</li><li>Evening: take-home assessments that were not timeboxed; fire off applications, and in the end: recharge!&#x2019;</li></ul><p><em>What are interesting observations about the hiring process, and what advice would you share with job seekers?</em></p><p>&#x2018;What was surprising was that most hiring processes took up to 3 weeks from the conversation with the recruiter to the conversation with the hiring manager!</p><p>&#x2018;One thing that helped: <a href="https://www.nyc.gov/site/cchr/media/pay-transparency.page?ref=blog.pragmaticengineer.com" rel>New York City&#x2019;s Salary Transparency Law</a> was <em>very</em> helpful for not applying for jobs whose salary was below my salary expectations.</p><p>&#x2018;Advice for others: Don&apos;t underestimate the power of your LinkedIn intro and LinkedIn headline! And don&apos;t be afraid to apply if you see &#x201C;500 applicants&#x201D; for a role.&#x201D;</p><p><em>This is Gergely again.</em> Thanks a lot <a href="https://www.linkedin.com/in/fellipe/?ref=blog.pragmaticengineer.com" rel>Davidson</a>, for sharing the reality of your job search, and congrats on securing offers and accepting one of them. You can follow Davidson <a href="https://www.linkedin.com/in/fellipe/?ref=blog.pragmaticengineer.com" rel>on LinkedIn</a> or <a href="https://twitter.com/davidsonfellipe?ref=blog.pragmaticengineer.com" rel>Twitter</a>. He <a href="https://www.linkedin.com/feed/update/urn:li:activity:7094395391567114241/?ref=blog.pragmaticengineer.com" rel>announced this week</a> which company he will join.</p><p>It&#x2019;s nice to hear about the positive impact of salary transparency regulations, and a good reminder that companies which publish compensation bands in their job adverts will likely attract more qualified candidates, as Davidson passed on places whose compensation was not a fit, which saved both him and the company time.</p><hr><p>This was one out of the five topics covered in <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-58-zoom-an-rto-turning?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">this week&#x2019;s The Pulse</a>. The full edition additionally covers:</p><ul><li><strong>Are reports of StackOverflow&#x2019;s fall greatly exaggerated? </strong>A blog post suggests traffic is down 50% at Stack Overflow, due to ChatGPT gaining popularity. I reached out to Stack Overflow for more details: the company admitted a drop, but it&#x2019;s only 14% as per data shared with me. The company seems to be doubling down on Teams for generative AI use cases as well. <em>Exclusive</em>.</li><li><strong>What kind of migration is causing a payout outage at Booking.com? </strong>Small business hosts on the travel booking platform are waiting more than a month to be paid. Booking.com says a systems migration is the reason for the delay. I talked with engineers at the company and discovered an SAP migration is to blame. <em>Exclusive</em>.</li><li><strong>Amazon gets stricter about enforcing return to the office (RTO.) </strong>The online retail giant sent a warning email to employees &#x201C;not meeting the expectation of joining colleagues in the office at least three days a week.&#x201D; I talked with engineers about the response to this ominous, unfriendly email.<strong> </strong><em>Exclusive</em>.</li><li><strong>Zoom to end remote work: an RTO turning point?</strong> Remote work tool Zoom is having most staff return to the office for two days a week. It&#x2019;s a symbolic turning point which may signal how many companies will operate in a similarly hybrid way, going forward.<em> Analysis</em>.</li></ul><p><a href="https://newsletter.pragmaticengineer.com/p/the-pulse-58-zoom-an-rto-turning?ref=blog.pragmaticengineer.com" rel="noopener noreferrer nofollow">Read the full The Pulse here</a>.</p>]]></content:encoded></item></channel></rss>