Irrational Exuberancehttps://lethain.com/Recent content on Irrational ExuberanceHugo -- gohugo.ioen-usWill LarsonSat, 14 Dec 2024 05:00:00 -07002024 in review.https://lethain.com/2024-in-review/Sat, 14 Dec 2024 05:00:00 -0700https://lethain.com/2024-in-review/<p>A lot happened for me this year. I continued learning the details of fund accounting at Carta, which is likely the most complex product domain I&rsquo;ve worked in. My third book was published, and I did a small speaking tour to support it. We started the unironically daunting San Francisco kindergarten application process. I was diagnosed with skin cancer and had successful surgery to remove it. All things considered, it was a much messier year than I intended, but with many good pockets mixed in with the mess.</p> <p>(I love to read other folks year-in writeups – if you write one, please send it my way!)</p> <hr> <p><em>Previously: <a href="https://lethain.com/2023-in-review/">2023</a>, <a href="https://lethain.com/2022-in-review/">2022</a>, <a href="https://lethain.com/2021-in-review/">2021</a>, <a href="https://lethain.com/2020-in-review/">2020</a>, <a href="https://lethain.com/2019-in-review">2019</a>, <a href="https://lethain.com/2018-in-review/">2018</a>, <a href="https://lethain.com/things-learned-in-2017/">2017</a></em></p> <h2 id="goals">Goals</h2> <p>Evaluating my goals for this year and decade:</p> <ul> <li> <p><strong>[Completed]</strong> <em>Write at least four good blog posts each year.</em></p> <p><a href="https://lethain.com/quality/">How to create software quality</a>, <a href="https://lethain.com/layers-of-context/">Layers of context</a>, <a href="https://lethain.com/multi-dimensional-tradeoffs/">Useful tradeoffs are multi-dimensional</a>, <a href="https://lethain.com/mental-model-for-how-to-use-llms-in-products/">Notes on how to use LLMs in your product</a>, <a href="https://lethain.com/engineering-cost-model/">Eng org seniority-mix model</a>.</p> </li> <li> <p><strong>[Completed]</strong> <em>Write another book about engineering or leadership.</em></p> <p>I did this in either 2023 or 2024, as I released <em><a href="https://lethain.com/eng-execs-primer/">The Engineering Executive&rsquo;s Primer</a></em> this year, and finishing writing it late last year. Either way, it&rsquo;s complete.</p> </li> <li> <p><strong>[New]</strong> <em>Write three books about engineering or leadership in 2020s.</em></p> <p>I&rsquo;ve already written two this decade, so committing to writing one more feels pretty attainable. At that point, I&rsquo;ll have written four total including <em>An Elegant Puzzle</em> in 2019, and I&rsquo;m pretty sure I will be &ldquo;booked out,&rdquo; perhaps permanently, but I think I have one more good one left in me on the topic of engineering strategy.</p> </li> <li> <p><strong>[Completed]</strong> <em>Do something substantial and new every year that provides new perspective or deeper practice.</em></p> <p>Started working with a physical trainer for first time, significantly helping me improve on a number of my lifts. On a totally different dimension, I finally <a href="https://lethain.com/learning-wardley-mapping/">spent time to learn Wardley mapping</a> which is something I&rsquo;ve been intending to do, but not doing, for at least five years.</p> </li> <li> <p><strong>[In progress]</strong> <em>20+ folks who I’ve managed or meaningfully supported move into VPE or CTO roles at 50+ person or $100M+ valuation companies.</em></p> <p>This is a decade goal ending in 2029. I previously increased the goal in 2022 from <code>3-5</code> to <code>20</code>. A strict count is at <code>10</code> today, so I think I&rsquo;m on track.</p> </li> </ul> <p>For backstory on these goals: I originally <a href="https://lethain.com/2019-in-review/">set them in 2019</a>, and then <a href="https://lethain.com/2022-in-review/">revised them in 2022</a>. I&rsquo;ve generally come to the point of view that I should be revising these every year, but also not sure it&rsquo;s worth doing it. Maybe one day!</p> <h2 id="published-_engineering-executives-primer_">Published <em>Engineering Executive&rsquo;s Primer</em></h2> <p>My third book was published in March, <em><a href="https://lethain.com/eng-execs-primer/">The Engineering Executive&rsquo;s Primer</a></em>. I wrote up <a href="https://lethain.com/publishing-eng-execs-primer/">notes on publishing it with O&rsquo;Reilly</a>, and I&rsquo;m altogether very happy to have written and published it. I&rsquo;m also glad that work is in the past, rather than the present, as finishing a book is a fair amount of work to juggle with a full-time job and parenting.</p> <p>Relative to my last two books, this is a bit more of a niche topic, so my mental model for sales was that they&rsquo;d likely be a bit lower, which seems to be accurate so far, with a bit over 10,000 copies sold through October. The real question for a book like this is whether it maintains sales after the first six-month bump, which I&rsquo;ll be watching with curiosity. It may also be true that book sales are not a particularly effective way to evaluate a book like this, which aims to <a href="https://lethain.com/advancing-the-industry/">advance the state of the industry</a> by reaching decision makers within the industry. That said, it&rsquo;s hard not to evaluate your book that way, even when you know that you shouldn&rsquo;t.</p> <p>As an aside, determining accurate numbers for O&rsquo;Reilly titles is a bit tricky. There are things like the online version of the book, where you&rsquo;re paid by usage (similar to Amazon Kindle Unlimited) but don&rsquo;t have a non-dollar indicator of usage. I&rsquo;m similarly unclear how audiobook usage is calculated, as it doesn&rsquo;t show up in my royalties. To deal with all that, I&rsquo;ve just focused on sold physical books and ebooks.</p> <h2 id="other-book-updates">Other book updates</h2> <p>A few other book related updates:</p> <ul> <li>I broke through 1,000 ratings on Amazon for <em><a href="https://staffeng.com/">Staff Engineer</a></em> this year, which is a cool milestone to pass for two distinct books. (<em>AEP</em> passed 1,000 a year or two ago.)</li> <li>Both earlier books continued to sell fairly well. I believe <em>An Elegant Puzzle</em> passed 100k copies sold either late last 2023 or early 2024 (the sales data I get is not particularly high granularity), which is a nice number. <em>Staff Engineer</em> is also doing well, passing 89k copies sold as of today. I think it&rsquo;ll pass 100k sometime in 2026, assuming it can mostly maintain its velocity from over the last couple years.</li> <li>I wrote the <a href="https://lethain.com/high-context-triad/">High-Context Triad</a> which I view as an additional set of chapters for a second edition of <em>Staff Engineer</em> whenever I get to that project, probably my second side project in the queue after finishing the engineering strategy book. Of those chapters, I think <a href="https://lethain.com/multi-dimensional-tradeoffs/">Useful tradeoffs are multi-dimensional</a> and <a href="https://lethain.com/layers-of-context/">Layers of context</a> are particularly useful.</li> <li>I&rsquo;ve been pulling together notes and writing on <a href="https://lethain.com/tags/eng-strategy-book/">engineering strategy</a>, which has a real chance of turning into my next book, but there&rsquo;s no guarantee on these things, e.g <em><a href="https://infraeng.dev/">Infrastructure Engineering</a></em> certainly went off the rails.</li> </ul> <h2 id="public-speaking-etc">Public speaking, etc</h2> <p>Generally, I am not very focused on public speaking, but my stance on this topic changes the years when I publish a new book, and I did quite a bit of speaking, writing, podcast attendee-ing, and so on. I was featured on Gergely Orosz&rsquo;s <a href="https://newsletter.pragmaticengineer.com/p/getting-an-engineering-executive">Pragmatic Engineer mailing list</a>, <a href="https://review.firstround.com/unexpected-anti-patterns-for-engineering-leaders-lessons-from-stripe-uber-carta/">First Round Review</a>, and Lenny Rachitsky&rsquo;s <a href="https://www.lennysnewsletter.com/p/the-engineering-mindset-will-larson">Lenny&rsquo;s Newsletter</a>.</p> <p>I also gave talks at:</p> <ul> <li><a href="https://events.sapphireventures.com/hypergrowthengineeringsummit24/">2024 Hypergrowth Engineering Summit</a> (<a href="https://lethain.com/video-mental-model-for-how-to-use-llms-in-products/">recording of practice run</a>)</li> <li><a href="https://leaddev.com/leadingeng-new-york">LeadingEng New York, 2024</a> (<a href="https://lethain.com/video-developing-leadership-styles/">recording of practice run</a>)</li> <li><a href="https://qconsf.com/presentation/nov2024/ambiguous-roles-and-ambiguous-problems-navigating-life-principal-engineer">QCon SF November, 2024</a> (<a href="https://lethain.com/qcon-sf-2024-talk-video/">recording of practice run</a>)</li> </ul> <p>If you&rsquo;re wondering why I do more speaking on the years I publish new books, it&rsquo;s pretty straightforward: it helps sell more copies of the books, and books live on momentum. A good start in the first year contributes <em>forever</em> to its sales, as long as it&rsquo;s a timeless book (&ldquo;engineering leadership&rdquo;) rather than a timely one (&ldquo;details about the current version of a database&rdquo;).</p> <h2 id="videos">Videos</h2> <p>I&rsquo;ve been playing around with <a href="https://www.youtube.com/channel/UC6kz0ObZuo6UnEhpCK7EqZQ">creating YouTube videos</a> for my conference talks. My approach is pretty basic: whenever I give a talk, I record a practice run ahead of time, and then post it online after I&rsquo;ve given the talk at the conference. I don&rsquo;t ever expect my YouTube channel to go anywhere&ndash;hence the low production values&ndash;but I do think it&rsquo;s worthwhile to keep recordings as conference videos often disappear. Worst case, this means I have <em>some</em> recording of my talks since late 2023.</p> <h2 id="health">Health</h2> <p>This has been a pretty challenging year for me from a health perspective. I had two major vacations planned this year, and both got derailed by health concerns. The first I was recouperating with stitches from successful skin cancer surgery, and the second I was in bed with a fever for five day straight until my doctors were convinced my sickness was bacterial.</p> <p>The skin cancer diagnosis was unexpected, and was a pretty unsettling several months to go from detection through surgery. As I write this, I am treating myself with topical chemotherapy to prevent another swath of skin requiring surgery in the future, which is far less serious than it sounds, but unsettling nonetheless. The good news is that a few months out, I am <em>likely</em> on the other side of this batch of skin cancer risk, and one large scar on my neck is a small price to pay for good health.</p> <p>Probably the most challenging thing with the surgery and recovery, sickness and recovery, and so on, is that it just throws off the larger health routine. For the first time in my life, I&rsquo;m working with a personal trainer, which has been quite nice. I&rsquo;ve been an off and on lifter for the past several decades, and feel comfortable withi most lifts, but there have been a handful where I&rsquo;ve just never quite gotten the form right, and I&rsquo;m <em>finally</em> getting it now after working with my trainer. Similarly, there are some mobility issues preventing e.g. deep squatting, which I&rsquo;ve certainly not fixed, but I&rsquo;m able to better understand and make progress on.</p> <p>I&rsquo;m still running 1-2 times a week, although I&rsquo;ve dropped milleage down to 4 mile runs, and playing basketball for a couple hours each weekend. I&rsquo;m hopeful I&rsquo;ll be able to both extend milleage and incorporate a speed session, but I&rsquo;m honestly struggling to find the time (or perhaps, energy) to make those happen. Fingers crossed for 2025.</p> <h2 id="kindergarten-search-in-san-francisco">Kindergarten search in San Francisco</h2> <p>Without saying too much, I can say that I&rsquo;ve never experienced anything like the San Francisco process of applying to public and private kindergartens. That said, the schools themselves are just remarkable. Looking back at the schools I went to in North Carolina&hellip; comparing them to these schools is almost impossible. I&rsquo;m excited to see my son start next year, <em>and</em> will be excited to have this process behind us in a few months.</p> <h2 id="tracking-family-cashflow">Tracking family cashflow</h2> <p>It&rsquo;s slightly embarassing to admit, but I&rsquo;ve had a relatively bad grasp of the details of my financial situation over the past few years. Specifically, I was very comfortable <a href="https://lethain.com/personal-finances/">with how we were invested</a>, but was having a hard time with the details of cash management. How much <em>were</em> we cash flowing? How much were our high spend months the result of obvious annual expenses (e.g. property tax) versus one-off purchases?</p> <p>Our income streams are sufficiently complex, and I shuffle money between several bank accounts (one for bills, one for higher interest), that answering these questions had generally gotten beyond my ability to answer with conviction. This is a problem, because I&rsquo;m the family CFO, and I became increasingly uncomfortable that I didn&rsquo;t understand the financial consequences of various theoretical scenarios. For example, if I lost my job (or died, I suppose), where would that leave my family?</p> <p>I wanted to reclaim my confidence in our finances this year, and did a fair amount of research to determine a tool that would make this possible. Ultimately, I went with Monarch Money (but do your own research before picking one!), and was pretty impressed with how quickly I was able to correctly represent our cashflows. The most important part was marking the various flows to and from bank and investment accounts as transfers rather than in or outflows of cash.</p> <p>Altogether, I probably spent four or five hours over a week to get it fully configured, and now I can see my family&rsquo;s cashflow for the first time in my life. This is pretty powerful, and now I have a pretty clear understanding of how much we&rsquo;re spending (a bit more than I realized), and how much we would need to have invested to fully cover that spend. This has also made it much easier to sit down once or twice a year as a family and update our mental models on how things are going.</p> <h2 id="reading">Reading</h2> <p>The profession-adjacent related reading I did this year (by which I mean, most of my reading is fiction that I don&rsquo;t include here):</p> <ol> <li><em><a href="https://www.amazon.com/dp/1119594596">Financial Accounting, 11th Edition</a></em> by Weygandt, Kimmel, and Kieso</li> <li><em><a href="https://www.amazon.com/Hardcore-Software-Inside-Rise-Revolution-ebook/dp/B0CYBS9PFY/">Hardcore Software</a></em> by Steven Sinofsky</li> <li><em><a href="https://press.stripe.com/the-big-score">The Big Score</a></em> by Michael S. Malone</li> <li><em><a href="https://www.amazon.com/How-Asia-Works-Joe-Studwell/dp/0802121322">How Asia Works</a></em> by Joe Studwell</li> <li><em><a href="https://www.amazon.com/Loonshots-Nurture-Diseases-Transform-Industries/dp/1250185963">Loonshots</a></em> by Safi Bahcall</li> <li><em><a href="https://www.amazon.com/Chip-War-Worlds-Critical-Technology/dp/1982172002">Chip War</a></em> by Chris Miller</li> <li><em><a href="https://www.amazon.com/Practical-TLA-Planning-Driven-Development/dp/1484238281">Practical TLA+: Planning Driven Development</a></em> by Hillel Wayne (I thought that I&rsquo;d read this previously, but I&rsquo;m pretty sure I&rsquo;d just bought the Kindle version and struggled to get into it in that format. I actually read it this time as a paperback book.)</li> <li><em><a href="https://www.manning.com/books/architecture-modernization">Architecture Modernization</a></em> by Nick Tune with Jean-Georges Perrin</li> <li><em><a href="https://www.amazon.com/Superforecasting-Science-Prediction-Philip-Tetlock/dp/0804136718">Superforecasting</a></em> by Philip Tetlock and Dan Gardner</li> <li><em><a href="https://www.amazon.com/Accounting-Made-Simple-Explained-Pages/dp/0981454224">Accounting Made Simple</a></em> by Mike Piper</li> <li><em><a href="https://www.udemy.com/course/partnership-accounting/">Partnership Accounting - Financial Accounting</a></em> by Robert Steele (This is a Udemy course, not a book, but very much professional content.)</li> <li><em><a href="https://www.amazon.com/Team-Topologies-Organizing-Business-Technology/dp/1942788819">Team Topologies</a></em> by Matthew Skelton and Manuel Pais</li> <li><em><a href="https://www.amazon.com/Super-Founders-Reveals-Billion-Dollar-Startups/dp/1541768426">Super Founders</a></em> by Ali Tamaseb</li> <li><em><a href="https://www.amazon.com/Zero-Peter-Thiel-Blake-Masters/dp/0753555204/">Zero to One</a></em> by Peter Thiel</li> <li><em><a href="https://www.stripe.press/poor-charlies-almanack">Poor Charlie&rsquo;s Almanack</a></em> by Charles T. Munger</li> <li><em><a href="https://www.amazon.com/Domain-Driven-Design-Distilled-Vaughn-Vernon/dp/0134434420">Domain-Driven Software Distilled</a></em> by Vaughn Vernon</li> <li><em><a href="https://www.amazon.com/How-Will-Measure-Your-Life/dp/0062102419">How Will You Measure Your Life?</a></em> by Christensen, Allworth, and Dillon</li> <li><em><a href="https://writeusefulbooks.com/">Write Useful Books</a></em> by Rob Fitzpatrick</li> <li><em><a href="https://www.amazon.com/Building-Green-Software-Sustainable-Development/dp/1098150627">Building Green Software</a></em> by Anne Currie, Sarah Hsu, and Sara Bergman</li> <li><em><a href="https://www.amazon.com/Unit-Pentagon-Silicon-Valley-Transforming/dp/1668031388">Unit X</a></em> by Raj Shah and Christopher Kirchhoff</li> <li><em><a href="https://www.amazon.com/What-You-Do-Who-Are/dp/0062871331/">What You Do Is You Who Are</a></em> by Ben Horowitz</li> <li><em><a href="https://readwriteown.com/">Read Write Own</a></em> by Chris Dixon</li> <li><em><a href="https://www.amazon.com/gp/product/059371671X">Co-intelligence: Living and Working with AI</a></em> by Ethan Mollick</li> <li><em><a href="https://www.amazon.com/Cold-Start-Problem-Andrew-Chen-ebook/dp/B08HZ5XY7X/">The Cold Start Problem</a></em> by Andrew Chen</li> <li><em><a href="https://www.hachettebookgroup.com/titles/rick-wartzman/the-end-of-loyalty/9781586489151/">The End of Loyalty</a></em> by Rick Wartzman</li> <li><em><a href="https://abookapart.com/products/you-deserve-a-tech-union">You Deserve a Tech Union</a></em> by Ethan Marcotte</li> <li><em><a href="https://www.amazon.com/Build-Unorthodox-Guide-Making-Things/dp/0063046067">Build</a></em> by Tony Fadell</li> </ol>Measuring developer experience, benchmarks, and providing a theory of improvement.https://lethain.com/measuring-developer-experience-benchmarks-theory-of-improvement/Sun, 08 Dec 2024 07:00:00 -0700https://lethain.com/measuring-developer-experience-benchmarks-theory-of-improvement/<p>Back in 2020, I wrote a piece called <a href="https://lethain.com/developer-meta-productivity-tools/">My skepticism towards current developer meta-productivity tools</a>, which laid out my three core problems with developer productivity measurement tools of the time:</p> <ol> <li>Using productivity measures to evaluate rather than learn</li> <li>Instrumenting metrics required tweaks across too any different tools</li> <li>Generally I found tools forced an arbitrary, questionable model onto the problem</li> </ol> <p>Two and a half years later, I made an angel investment in <a href="https://getdx.com/">DX</a>, which at the time I largely viewed as taking a survey-driven, research-backed approach to developer productivity. I was recently chatting with <a href="https://abinoda.com/">Abi Noda</a>, co-founder at DX, and thought it would be an interesting time to revise my original thesis both generally and in response to DX&rsquo;s release of <a href="https://getdx.com/research/measuring-developer-productivity-with-the-dx-core-4/">DX Core 4</a>.</p> <h2 id="checklist-for-developer-meta-productivity-tools">Checklist for developer meta-productivity tools</h2> <p>In 2024, I think this is the checklist for a world-class developer meta-productivity tool:</p> <ol> <li> <p>Pull metrics in from most vendors (e.g. Github) automatically. Support converting metrics from primary observability systems (e.g. Datadog). Support custom emitting metrics.</p> </li> <li> <p>Automatically graph those metrics in a consistent fashion. This includes denormalizing the data across vendors, such that those relying on standard vendors do near-zero customization. (Implicitly this also means rejecting measurements that are inherently complex, looking at you, lead time.)</p> </li> <li> <p>Plot values against comparable benchmark data, ensuring that all these values have high &ldquo;judge-ability&rdquo; such that you, your CTO, or your Board, can judge your company&rsquo;s performance relative to peer companies.</p> </li> <li> <p>Provide a &ldquo;theory of improvement&rdquo; such that you can roughly translate your scores into the projects to invest in. These should be as narrow as possible. A great example would be: 90% of your incidents involve one of these five files; you should prioritize hardening their contents.</p> <p>A broader example could be along the lines of: generally teams that score highly on this dimension utilize these practices (e.g. trunk-based development), and those that score lower use these other practices (e.g. long-lived branch development).</p> </li> </ol> <p>I think if you can provide all four of those, then you have provided a highly valuable, effective tool.</p> <h2 id="implicitly-a-network-product">Implicitly a network product</h2> <p>This is something of an aside, but I particularly believe that there&rsquo;s an important breakpoint between products that offer only the first two (ingestion and charting) from products that offer the third (benchmarking). This is because I increasingly believe that developer data is only judge-able in the context of benchmarks, and you can only provide benchmarks if you have a network of companies sharing their data in a common place. Also, they need to be sharing it in a way where the data itself is relatively verifiable (there&rsquo;s a long history of inaccurate self-supplied datasets powering products that gradually undermine user trust).</p> <p>If you believe that benchmarks are foundational, then the winning generational developer meta-productivity tool is a network product, and that means that only one or two winners will exist in the exosystem. (Because only so many companies can be vendors to enough of these companies to build good benchmarks.) This is a significant shift away from my earlier thinking here, because now there&rsquo;s an underlying mechanism to force this market to converge rather than remain fragmented across thousands of small vendors.</p> <h2 id="progress-from-2020-to-2024">Progress from 2020 to 2024</h2> <p>Before testing my four new criteria against recent developments in the developer productivity space, I wanted to do a bit of Wardley mapping to better explain where I&rsquo;ve seen challenges in these tools, and why I think DX&rsquo;s approach is relatively novel.</p> <p>There are three users to consider: the engineer, the developer productivity team, and the engineering executive. The <strong>engineer</strong> just wants the developer productivity team to do useful things for them, and to spend the minimum amount of time maintaining data integrations for developer productivity. The <strong>engineering executive</strong> wants reports which help them evaluate the efficiency of their overall engineering organization, which they will use for resourcing decisions and for reporting upwards to the board on their progress. The <strong>developer productivity team</strong> wants to provide all of those services, and to make targetted investments into improving the development experience.</p> <p><img src="https://lethain.com/static/blog/2024/dx-ward-1.png" alt="Wardley map of developer productivity space."></p> <p>In 2020, my perspective was that dashboarding and instrumentation remained custom efforts, and that the current wave of tooling aimed to solve that problem through better ingestion of data, which brings us to this second phase of the Wardley map.</p> <p><img src="https://lethain.com/static/blog/2024/dx-ward-2.png" alt="Wardley map of developer productivity space."></p> <p>As dashboard creation and metric collection became more standardized, you would assume that these tools got significantly more valuable. This <em>seemed</em> like great progress, but it revealed, in my opinion, a misunderstanding about how these metrics are useful.</p> <p>It&rsquo;s not particularly interesting to set a goal to increase pull requests per engineer by 10% this half: there&rsquo;s only so much insight you can get from trying to manipulate these lines in isolation. But it is <em>very</em> interesting to know that you are significantly behind pull requests per engineer of similarly sized companies. (And even more interesting to see where you fall into a scatterplot of those similarly sized companies.)</p> <p>Importantly, when you think about the engineering executive, it is <em>only</em> the benchmarks which help them adequately report to their board about the impact of their engineering team&rsquo;s execution: all the other reports don&rsquo;t solve the engineering executive&rsquo;s problem at all. Generally, you can <a href="https://lethain.com/measuring-engineering-organizations/">provide any reasonable measure to your board</a>, because they are more focused on ensuring you&rsquo;re capable of instrumenting and maintaining <em>something</em> than on what you instrument itself, but with benchmarks you can actually provide a meaningful way to measure and evaluate your team&rsquo;s work! And, to the extent the benchmarking is maintained by a vendor rather than something you have to collect informally from peers, it becomes <em>easier</em> to provide a meaningful comparison between your organization and peers than to provide something less meaningful.</p> <p>The first wave of tooling vendors thought they could solve the engineering productivity problem with better dashboarding, but rather it&rsquo;s the centralization of benchmark creation that&rsquo;s the truly valuable part for the most important engineering executive user.</p> <p><img src="https://lethain.com/static/blog/2024/dx-ward-3.png" alt="Wardley map of developer productivity space."></p> <p>Summarizing a bit, the core insight behind DX&rsquo;s approach is that standardizing the benchmarking process across companies, such that their customers can benefit from those benchmarks without collecting them themselves, is exceptionally more valuable than the dashboarding or collection components themselves. In many senses, this is applying the learnings from CultureAmp to a new space. It also means that being a standalone offering, rather than an owned component of a larger metrics platform within Google or Github, expands the addressible companies that can be included for benchmarking.</p> <p>Lastly, if you accept that benchmarking is the most important feature, it means that your number one criteria for things to measure is your ability to consistently include them into a benchmark across many different companies.</p> <h2 id="should-metrics-provide-a-theory-of-improvement">Should metrics provide a Theory of Improvement?</h2> <p>The biggest reason I love benchmarks is that any metric with good benchmarks has high judge-ability. Judge-ability is whether you can judge if something is going well by understanding the value over time. Almost all metrics meet this criteria if you show your value for that metric within in a scatterplot of values for peer companies. For example, DX Core 4 suggests &ldquo;diffs per engineer&rdquo; as the metric to evaluate engineering speed, and while this is an extremely hard metric to evaluate in isolation, it&rsquo;s very easy to look at your organization&rsquo;s diffs per engineer against peer companies&rsquo; diffs per engineer and make an informed judgment about whether things are going well for you.</p> <p>Conversely, I&rsquo;m much less confident that the goal-ability of diffs per engineer is high. Goal-ability is whether you can usefully set a target based on changing your current value. For example, we&rsquo;re showing 2.5 diffs per engineer per week, and we want to increase that to 3.5 diffs. Is that a good goal? Do we have a theory of improvement that would guide how we should approach the work?</p> <p>I think it&rsquo;s probably not a good goal, and we probably don&rsquo;t have a theory of improvement, because this is an output metric (also known as a lagging metric). Output metrics are very effective at measuring if something has improved, but very bad at focusing attention towards improving that metric. Revenue is the ultimate output metric: yes, if your new product feature drives revenue, it&rsquo;s accomplishing something valuable, but merely having a goal for revenue doesn&rsquo;t provide any direction on how to accomplish that usefully.</p> <p>That means if your developer productivity metrics are all output metrics, then you still haven&rsquo;t provided a &ldquo;theory of improvement&rdquo; to teams trying to determine their roadmap to improve on their own metrics. (In general, lacking a theory of improvement is equivalent to not having <a href="https://lethain.com/solving-the-engineering-strategy-crisis/">a relevant strategy</a> for the problem at hand.)</p> <p><img src="https://lethain.com/static/blog/2024/dx-core-4-metrics.png" alt="DX Core 4&rsquo;s central metrics"></p> <p>All of the DX Core 4 metrics are good output metrics, which allow you to evaluate your organization across dimensions to determine if you&rsquo;re operating effectively, but none of them have a strong point of view on what you should do about it. This is one of the triumphs of <em><a href="https://www.amazon.com/Accelerate-Software-Performing-Technology-Organizations/dp/1942788339">Accelerate</a></em>, which provided not only the output metrics to evaluate your organization, but also provided a set of practices that correlated highly with stronger performance.</p> <p>It&rsquo;s possible that providing a theory of improvement is asking too much from a batch of metrics. For example, at Carta in the past year I&rsquo;ve spent a fair amount of time working with a cross-team group of engineers on improving code quality. We followed the working modeled I describe as <a href="https://lethain.com/testing-strategy-iterative-refinement/">&ldquo;strategy testing&rdquo;</a>, and it took us a while to narrow in on what we believe was the ultimate problem: frontend testing support for one portion of our codebase was too challenging, and contributed to fewer frontend tests than necessary for maintaining high code quality within a complex product. It took us about three months of hypothesis forming and testing before we had confidence this was the foundational issue to focus on, and some of our earlier theories of improvement were meaningfully wrong&ndash;hence the need for strategy testing before committing to any given approach.</p> <p>Perhaps the biggest win in the increasingly standardized productivity metrics are allowing developer productivity teams to shift away from the view that maintaining those metrics is their core work, and to instead recognize that refining their company&rsquo;s theory of improvement for developer productivity is the much more valuable opportunity to work on instead.</p> <h2 id="commentary-on-the-actual-metrics-themselves">Commentary on the actual metrics themselves</h2> <p>Taking some time to comment on the core metrics themselves, I&rsquo;m reminded that there&rsquo;s a Reddit thread where someone says they immediately stopped reading my first book because I suggested PRs per engineer as a bad but usable starting place for starting to understand how your engineers worked. It&rsquo;s sort of funny to see that diffs per engineer is DX Core 4&rsquo;s first metric.</p> <p><img src="https://lethain.com/static/blog/2024/dx-core-4-metrics.png" alt="DX Core 4&rsquo;s central metrics"></p> <p>In general, I find the core metrics to be very reasonable. The only top-level metric I&rsquo;d directly quibble with is <code>% of time spent on new capabilities</code> which is a bit of a tracking nightmare in my personal experience, but it certainly is a powerful metric <em>if you believe it&rsquo;s accurate</em>.</p> <p>There are a number of others that I haven&rsquo;t seen before, but which are in retrospect obviously useful and easy to measure, such as:</p> <ul> <li><code>Time to 10th PR</code> is a fantastic onboarding metric, and not one that I&rsquo;d considered before. In particular it&rsquo;s <em>quite easy</em> to measure, and easy to benchmark across many different companies.</li> <li><code>R&amp;D as a % of revenue</code> is a foundational chart that boards like to use to evaluate you, you should be measuring yourself on it as well.</li> </ul> <p>Using a <a href="https://lethain.com/forecasting-synthetic-metrics/">synthetic/composite metric</a> of <a href="https://getdx.com/research/the-one-number-you-need-to-increase-roi-per-engineer/">Developer Experience Index</a> (DXI) is both a smart move, and also an expensive one. The upside is that it allows them to include many different components into it, and to revise the composite metric over time as research evolves. For example, they could ask new questions in their surveys, and weigh them into DXI numbers calculated after the first survey including those results, and so on, without impacting the validity of their benchmarks.</p> <p>The downside is that no one understands composite metrics, and it means teams will end up explaining, and explaining, and explaining what the metric means. Even then, skeptical people just don&rsquo;t trust composite metrics particularly well, and both executives and boards are heavily staffed by skeptical people. That said, presenting the data within the context of a scatterplot ought to address many of the concerns about composite metrics, so it&rsquo;s a reasonable experiment from my perspective.</p> <h2 id="2025">2025+</h2> <p>Thinking about where the developer productivity space is today, there&rsquo;s a few things that I hope are true over the next couple of years. First, I hope that framework proliferation slows down a bit. DORA, SPACE, DX Core 4 and so on are all great frameworks, but hopefully we reach a point where creating another framework is obviously not worth it. I think DX Core 4 could particularly contribute to this by emphasizing the calculation mechanism for DXI, and ensuring that access to that calculation is predictably preserved for even competitive companies to use.</p> <p>Second, I&rsquo;d love to see every one of my four criteria for a world-class developer meta-productivity tool move into the &ldquo;product&rdquo; segment of the Wardley map and entirely out of the &ldquo;custom&rdquo; section. That means that these tools will need to not only provide metrics collection, dashboarding, and benchmarks out-of-the-box, but they&rsquo;ll also need to provide a theory of improvement. I don&rsquo;t think this is out of reach, e.g. you can do a series of studies on companies that moved from low-to-high in each of the metrics and understanding what they prioritized to do so, and from that you can generate broad recommendations. Then you can work on incrementally sharpening those recommendations to be more and more directly applicable to each customer.</p> <p>If that could happen, I think we reach a pretty remarkable place where developer productivity teams are primarily doer teams rather than analysis teams, which is a foundational shift from those teams&rsquo; roles in the industry today.</p>Rough notes on learning Wardley Mapping.https://lethain.com/learning-wardley-mapping/Sat, 30 Nov 2024 07:00:00 -0700https://lethain.com/learning-wardley-mapping/<p>In my ongoing efforts to <a href="https://lethain.com/tags/eng-strategy-book/">draft a book on engineering strategy</a>, I&rsquo;ve finally reached the point where I need to transition &ldquo;Wardley Mapping&rdquo; from a topic to consider including into a topic that I either <em>do</em> or <em>do not</em> include. The first step on that line is getting much deeper at understanding how it works. This is rather different than <a href="https://lethain.com/strategy-systems-modeling/">systems modeling</a>, which is a technique I&rsquo;ve been using off-and-on at work for 15-plus years, but I will make a solid go at it.</p> <p>My starting point is having read <em><a href="https://itrevolution.com/product/the-value-flywheel-effect/">The Value Flywheel Effect</a></em> by David Anderson, and attempted a few times unsuccessfully to read <em><a href="https://medium.com/wardleymaps/on-being-lost-2ef5f05eb1ec">Wardley Maps</a></em> by Simon Wardley on Medium. Let&rsquo;s see how it goes.</p> <ol> <li> <p>Markus pointed me towards his excellent list of <a href="https://www.feststelltaste.de/top-5-learning-wardley-maps/">Wardley mapping resources</a></p> </li> <li> <p><a href="https://www.youtube.com/watch?v=Gfq3ocmadZo&amp;ab_channel=ilulibyMikeLamb">What Is Wardley Mapping?</a> by Mike Lamb is a quick, very high-level introduction to the concepts.</p> </li> <li> <p><a href="https://www.youtube.com/watch?v=IJcLmoKR6v8">The Easiest Way to Do Wardley Mapping (A Tutorial)</a> is a good first starting point.</p> <p>Within this example, there are two templates to work from: <a href="https://learnwardleymapping.com/wp-content/uploads/2021/02/step-1.png">lists &amp; value chain template</a> and <a href="https://learnwardleymapping.com/wp-content/uploads/2021/02/step-2.png">Wardley map template</a>. You can then use the template in whatever diagramming tool you prefer, the video uses <a href="https://miro.com/">Miro</a>, and I used <a href="https://www.omnigroup.com/omnigraffle/">OmniGraffle</a>.</p> <p>It also links to <a href="https://learnwardleymapping.com/wp-content/uploads/2021/01/evolution.jpg">this table for determining stage of a given activity</a> within a Wardley Map, and <a href="https://learnwardleymapping.com/wp-content/uploads/2022/02/Opportunity-Prompts.png">this table describing opportunities</a>. Both of these are useful in various steps of creating/refining a Wardley Map.</p> </li> <li> <p><a href="https://www.youtube.com/watch?v=Y4vIFEprcSg">How to read a Wardley Map</a>. Bit of a repeat of above.</p> </li> <li> <p><a href="https://www.youtube.com/watch?v=GC3uNLaOyrk&amp;t=73s">The Problem with Wardley Mapping</a>. Talks about the various ways that people often get stuck using Wardley Maps: taking &ldquo;all or nothing&rdquo; approaches to both method and scope. Rooted in this article, <a href="https://learnwardleymapping.com/2020/11/30/nobody-cares-about-your-precious-framework/">Nobody Cares About Your Precious Framework</a>.</p> <p>First, it describes the number of &ldquo;Wardley mapping practices&rdquo; and how it&rsquo;s valuable to simplify initially. Specifically, start by just building lists of users and needs, as opposed to trying everything all at once. Second, it describes how users can have <em>many</em> needs, there might be three or four users each with ten needs, which gets overwhelming. To solve that, focus on doing one user and one need, and then expand from there to prove out the value.</p> </li> <li> <p><a href="https://www.youtube.com/watch?v=kxssDKhWW9s">Top 5 Wardley Mapping Tools in 2024</a> on YouTube, and also <a href="https://learnwardleymapping.com/2024/06/24/top-5-wardley-mapping-tools-for-2024/">available in blog post</a>. Of these, particularly interested in <a href="https://github.com/damonsk/onlinewardleymaps">damonsk/onlinewardleymaps</a> which seems like a Graphviz approach, and reminds me a bit of my experiment with <a href="https://github.com/lethain/systems">lethain/systems</a> that I build for systems modeling.</p> <p>That said, I&rsquo;ll probably give <a href="https://mapkeep.com/">Mapkeep</a> a try first. My issue with systems modeling tooling is primarily that it&rsquo;s <em>very confusing to use</em>, and Mapkeep seems like it might have the lowest overhead to usage of these Wardley mapping tools.</p> </li> <li> <p><a href="https://www.youtube.com/watch?v=Ty6pOVEc3bA">Situation Normal, Everything Must Change</a> by Simon Wardley on YouTube. This is a good overview of Wardley mapping, although a bit surface level. A good first watch.</p> </li> <li> <p><a href="https://www.youtube.com/watch?v=KkePAhnkHeg">Wardley Mapping Part 1-4</a> by Simon Wardley on YouTube. A more detailed introduction to the same content as the <em>Situation Normal, Everything Must Change</em> talk above. The first two are a bit redundant with some of the prior talks, but the third and fourth are additive and quite useful.</p> </li> <li> <p><a href="https://www.youtube.com/watch?v=4cp5qtLkPcY">Mapping Your Stack</a> by Adrian Cockroft. Much of this is repeat of the above, but around 22:20 it goes into mapping a concrete example that I found quite interesting.</p> </li> <li> <p><a href="https://www.youtube.com/watch?v=6hXpbZ7TpP4">Wardley Maps for Software Developers</a> by Markus Harrer. Most helpfully, it gets into concrete maps quickly, and walks through a number of distinct examples.</p> </li> <li> <p>At this point, I signed up for a free <a href="https://mapkeep.com/">Mapkeep</a>, and started mapping.</p> </li> <li> <p>My first project was this <a href="https://lethain.com/measuring-developer-experience-benchmarks-theory-of-improvement/">post on the evolution of the developer meta-productivity space</a>, which gave me the opportunity to play around with a simple map and the evolution of that map over the past four years.</p> <p>At this time, that&rsquo;s still just a draft post, but was still a good opportunity for mapping practice. I also think it would have been much harder to form and articulate my point of view without the map, which is a good signal.</p> </li> <li> <p>Next, I did <a href="https://lethain.com/wardley-gitlab-strategy/">some exploratory mapping of Gitlab&rsquo;s strategy</a> (e.g. why focus on bundling all-in versus Github&rsquo;s strategy of supporting best-in-breed unbundling). This was quick, and instructive. It&rsquo;s also giving me a better sense of what sort of problems Wardley mapping is useful for exploring (and which it isn&rsquo;t so useful at digging into).</p> </li> </ol> <p>At this point, I feel pretty comfortable jumping into Mapkeeper and mapping something out. That&rsquo;s not to say that I can&rsquo;t improve, I certainly can improve a lot, but my sense is that this is going to primarily depend on doing more mapping, and less on some sort of magical realization.</p> <p>There&rsquo;s also a lot of stuff bundled into Wardley mapping that I think is quite useful, but isn&rsquo;t as important to me as the components I&rsquo;ve focused on here. For example, Wardley&rsquo;s <a href="https://learnwardleymapping.com/2020/08/17/principles-first/">idea of doctrine</a> and <a href="https://www.wardleymaps.com/gameplay">gameplay</a> are great, but I generally would approach these sorts of things as &ldquo;one particular kind of strategy&rdquo; rather than a different category. That&rsquo;s not a refutation of Wardley&rsquo;s framing, just a different one that I&rsquo;ve found more useful for the sorts of problems I&rsquo;m currently focused on.</p>Video of practice run of QCon SF 2024 talk on Principal Engineers.https://lethain.com/qcon-sf-2024-talk-video/Thu, 21 Nov 2024 07:00:00 -0700https://lethain.com/qcon-sf-2024-talk-video/<p>Yesterday at QCon, I got to give a talk with my colleague Dan Fike <a href="https://qconsf.com/presentation/nov2024/ambiguous-roles-and-ambiguous-problems-navigating-life-principal-engineer">about the Principal Engineer role</a>. You can also watch <a href="https://www.youtube.com/watch?v=88oiU1A92bo">the video on YouTube</a>.</p> <iframe width="560" height="315" src="https://www.youtube.com/embed/88oiU1A92bo?si=qwbPmgObqtwpMQFX" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> <p>The content itself is largely based on the <a href="https://lethain.com/high-context-triad/">High-Context Triad</a> of blog posts I wrote in late 2023:</p> <ul> <li><a href="https://lethain.com/layers-of-context/">Layers of context</a></li> <li><a href="https://lethain.com/navigating-ambiguity/">Navigating ambiguity</a></li> <li><a href="https://lethain.com/multi-dimensional-tradeoffs/">Useful tradeoffs are multi-dimensional</a></li> </ul> <p>I hope you enjoy the talk! (Unfortunately I don&rsquo;t have a recording of Dan Fike&rsquo;s portion, but QCon will post their official video at some point, which will have both parts.)</p>How to get more headcount.https://lethain.com/how-to-get-more-headcount/Sat, 16 Nov 2024 07:00:00 -0700https://lethain.com/how-to-get-more-headcount/<p>One of the recurring challenges that teams face is getting headcount to support their initiatives. A similar problem is the idea that a team can&rsquo;t get a favored project into their roadmap. In both cases, teams often create a story about how clueless executives don&rsquo;t understand why their work is important.</p> <p>I understand why dumb executives are such an appealing explanation to problems: it fits perfectly into the <a href="https://en.wikipedia.org/wiki/Karpman_drama_triangle">Karpman drama triangle</a> by making executives the villian and the team the victim, but I generally find that these sorts of misalignments are the result of basic communication challenges rather than something more exciting.</p> <p>When there&rsquo;s significant misalignment between a team and an executive, my experience is that it often manifests in discussion about a particular project, but it&rsquo;s often rooted in a much broader topic rather than whatever is currently being discussed. Because the disagreement is about the larger topic, there&rsquo;s no way to resolve it while discussing the narrow project at hand, and teams struggle to make progress because <a href="https://lethain.com/layers-of-context/">they&rsquo;re arguing on the wrong layer of context</a>.</p> <p>To solve disagreement, the general hierarchy of alignment is:</p> <ol> <li> <p><strong>Do we agree on the problem to be solved?</strong></p> <p><em>e.g. We&rsquo;re having too many incidents and it&rsquo;s impacting user perception and developer productivity.</em></p> </li> <li> <p><strong>Do we agree on the general approach to solving that problem?</strong></p> <p><em>e.g. We&rsquo;re increaing end-to-end coverage and rejecting PRs that reduce coverage.</em></p> </li> <li> <p><strong>What evidence do we have that the team is executing well today?</strong></p> <p><em>e.g. Here are metrics on: how many user-impacting incidents we&rsquo;ve had over time, how we&rsquo;ve increased end-to-end coverage over time, and developer survey feedback on incidents from the last three quarterly internal surveys.</em></p> </li> <li> <p><strong>Alignment on the particular topic at hand: headcount, roadmapping, prioritization of a specific project, and so on.</strong></p> <p><em>e.g. To speed up further work on this, we&rsquo;re requesting two more engineers.</em></p> </li> </ol> <p>If you are misaligned on any of the first three topics, addressing the fourth project is folly. For example, if the executive believes that your team is not executing your current project well, then they won&rsquo;t believe that giving you more headcount is useful, because you&rsquo;re already screwing up. To convince them to approve a headcount request, you need to first find evidence that your team is doing good work today.</p> <p>Similarly, if the executive doesn&rsquo;t agree with you on your problem or general approach, your headcount request is dead in the water. This is one of the reasons that I see bottoms-up &ldquo;team mission&rdquo; initiatives fail so frequently. Teams define their mission, and then tell executives what they&rsquo;ve decided to focus on, but that&rsquo;s a general misunderstanding of why teams exist: teams exist to solve a company need, not to solve the problem that the team itself wants to solve. When teams lean on their self-selected problem or approach to defend to an executive why they won&rsquo;t do something, they dig in on a foundational misalignment that prevents addressing more nuanced discussions like project prioritization.</p> <p>The solution here is obvious, always make sure you agree on the problem and general solution, and provide evidence the team is working well. These can be an appendix of a document or appendix slides, and should take little to no time to prepare as the first two are core decisions for your team, and the later is a set of metrics or plans that you should already be maintaining as part of operating your team.</p> <p>If you refuse to engage on the first three topics, and skip to the fourth topic directly in aligning with an executive, then you are generally falling back to relying on social dynamics and executives&rsquo; general view of your prior work&ndash;what some might call politics&ndash;rather than having a joint problem solving session together. If you&rsquo;re complaining about politics, and not taking the time to answer the first three, then perhaps you are inadvertantly contributing to the political environment that you dislike.</p> <p>As always when discussing <a href="https://lethain.com/extract-the-kernel/">challenges communicating with executives</a>, it&rsquo;s true that executives should get better at explaining where they&rsquo;re confused or struggling with the rationale. However, it&rsquo;s a lot more useful to simply get better at this yourself than to spend time bemoaning how executives could, at a universal group, improve their communication. I know a lot of people who improved their company or moved into more senior roles by improving their own communication. I know zero folks who did either of those by complaining that executives are bad communicators, although they certainly weren&rsquo;t wrong about it!</p>Navigating Private Equity ownership.https://lethain.com/private-equity-strategy/Mon, 11 Nov 2024 06:00:00 -0700https://lethain.com/private-equity-strategy/<p>In 2020, you could credibly argue that <a href="https://www.readmargins.com/p/zirp-explains-the-world">ZIRP explains the world</a>, but that&rsquo;s an impossible argument to make in 2024 when zero-interest rate policy is only a fond memory. Instead, we&rsquo;re seeing a number of companies designed for rapid expansion learning to adapt to a world that expects immediate free cash flow rather than accepting the sweet promise of discounted future cash flow.</p> <p>This chapter wants to tackle that problem head-on, taking the role of an engineering organization attempting to navigate new ownership by a private equity group. It&rsquo;s an increasingly frequent scenario: after many years of learning to operate under the direction of its original founders, and the brief excitement of going public, now there&rsquo;s a short runway to change operating models. Let&rsquo;s call this company Fungible Ecommerce Company. It&rsquo;s a platform for supporting online commerce, and this is their Engineering Leadership team&rsquo;s attempt to think through their options while waiting for new ownership to provide concrete guideposts.</p> <hr> <p><em>This is an exploratory, draft chapter for a book on engineering strategy that I&rsquo;m brainstorming in <a href="https://lethain.com/tags/eng-strategy-book/">#eng-strategy-book</a>.</em> <em>As such, some of the links go to other draft chapters, both published drafts and very early, unpublished drafts.</em></p> <h2 id="reading-this-document">Reading this document</h2> <p>To apply this strategy, start at the top with <em>Policy</em>. To understand the thinking behind this strategy, read sections in reserve order, starting with <em>Explore</em>, then <em>Diagnose</em> and so on. Relative to the default structure, this document has been refactored in two ways to improve readability: first, <em>Operation</em> has been folded into <em>Policy</em>; second, <em>Refine</em> has been embedded in <em>Diagnose</em>.</p> <p>More detail on this structure in <a href="https://lethain.com/readable-engineering-strategy-documents">Making a readable Engineering Strategy document</a>.</p> <h2 id="policy">Policy</h2> <p>Our policy for managing our new ownership structure is:</p> <ul> <li> <p>We believe our new ownership will provide a specific target for Research and Development (R&amp;D) operating expenses during the upcoming financial year planning. <strong>We will revise these policies again once we have explicit targets</strong>, and will delay planning around reductions until we have those numbers to avoid running two overlapping processes.</p> <p>That said, looking at our R&amp;D investment relative to comparably growing peer set, we believe that we&rsquo;ll get pressure to moderately reduce our spend. We aim to accomplish that reduction through a series of policies and one-off infrastructure projects, without requiring a major reduction in headcount spend.</p> </li> <li> <p><strong>We will move to an &ldquo;N-1&rdquo; backfill policy</strong>, where departures are backfilled with a less senior level. <strong>We will also institute a strict maximum of one Principal Engineer per business unit</strong>, with any exceptions approved in writing by the CTO&ndash;this applies for both promotions and external hires. These policies are effective immediately, and is based on our <a href="https://lethain.com/engineering-cost-model/">model of engineering-org seniority-mix</a>.</p> <p>We commit to this policy reducing headcount costs by approximately 5% YoY every year for the forseeable future.</p> </li> <li> <p>We evaluated a number of potential changes to our geographical hiring strategy, but we believe that staffing engineers with cross-functional partners (Product, Marketing, Sales, and so on) is a priority. We have not been able to reach an agreement cross-functionally, and as such <strong>we are not changing our geographical hiring strategy at this time</strong>.</p> <p>If we can agree on a policy here, we could accomplish 10-20% reduction in cost over 2-3 years, but the details matter a great deal, so we cannot commit to a specific outcome until we get more cross-functional alignment.</p> </li> <li> <p>Our infrastructure spend has grown significantly more slowly than revenue for the past two years, meaning that we&rsquo;ve successfully implement our infrastructure spend strategy of <a href="https://infraeng.dev/efficiency/">growing infrastructure costs more slowly than revenue</a>. <strong>We will continue our current infrastructure efficiency strategy</strong>, and believe they are relatively few high impact efficiency opportunities at this point.</p> <p>We commit to growing infrastructure spend at no more than 5% YoY, significantly lower than our projected revenue increase of 25% YoY.</p> </li> <li> <p>There are two narrow infrastructure spend opportunities, both related to the integration of prior acquisitions into our shared infrastructure and away from one-off approaches. <strong>We will prioritize the post-acquisition integration work next quarter</strong>, with the goal of fully standarding all infrastructure across the company into the stack maintained by our centralized Infrastructure Engineering team.</p> <p>We commit to a one-time reduction in infrastructure of 3% YoY.</p> </li> <li> <p>We believe there are significant opportunities to reduce R&amp;D maintenance investments, but we don&rsquo;t have conviction about which particular efforts we should prioritize. <strong>We will kickoff a working group to identify the features with the highest support load.</strong></p> </li> </ul> <h2 id="diagnose">Diagnose</h2> <p>We&rsquo;ve diagnosed Fungible Ecommerce Company&rsquo;s current state as:</p> <ul> <li> <p>Fungible Ecommerce Company&rsquo;s revenue has grown 20-25% YoY for the past two years, and our target for next year is 25% YoY revenue growth. While this is not a guarantee, we grew slower than 25% last year, it&rsquo;s a defensible goal that we have a good chance of achieving.</p> </li> <li> <p>Our Engineering headcount costs have grown by 15% YoY this year, and 18% YoY the prior year. Headcount grew 7% and 9% respectively, with the difference between headcount and headcount costs explained by salary band adjustments (4%), a focus on hiring senior roles (3%), and increased hiring in higher cost geographic regions (1%).</p> </li> <li> <p>Based on general practice, it seems likely that our new Private Equity ownership will expect us to reduce R&amp;D headcount costs through a reduction. However, we don&rsquo;t have any concrete details to make a structured decision on this, and our approach would vary significantly depending on the size of the reduction.</p> </li> <li> <p>Infrastructure engineering spend (including vendors) has grown by 4-5% YoY for the past three years. We made a significant push on reducing costs three years ago, and have grown significantly slower than revenue since then.</p> <p>There are few remaining opportunities to significantly reduce infrastructure costs, but we&rsquo;ve made several acquisitions since our prior infrastructure consolidation, that represent significant potential savings: roughly one-time 1.5% YoY reductions for each of two largest opportunities.</p> </li> <li> <p>A significant portion of our current R&amp;D spend goes into maintaining our existing functionality, particularly functionality related to earier geo-expansion efforts that only apply narrows to some small markets. We suspect there&rsquo;s an opportunity to reduce maintenance overhead here.</p> <p>However, we lack believable metrics on both (1) time spent maintaining the software and (2) time that would be saved by these cleanup efforts. As a result, it&rsquo;s hard to pitch projects of this sort as revenue saving with much conviction.</p> </li> </ul> <h2 id="explore">Explore</h2> <p>Financial markets evaluate companies in comparison to their peers. This is most obvious in public markets, where there&rsquo;s significant information transparency about business performance, and sufficient liquidity to allow markets to revalue companies in something approaching real-time. While private equity firms generally take controlling interest of private businesses, or with the intent of taking the business private if it happens to be public, they value businesses in the same way.</p> <p>In this exploration, we&rsquo;re going to dig into two particular questions. First, we&rsquo;re going to dig into a dataset on the performance of public technology companies, and then second we&rsquo;re going to look into the concrete example of Zendesk, <a href="https://www.reuters.com/markets/deals/zendesk-goes-private-10-bln-deal-2022-11-22/">who were taken private in 2022</a> after being bought by two private equity firms.</p> <h3 id="comparable-companies">Comparable companies</h3> <p>Exploring the benchmarking question first, most investors evaluate engineering within the context of the overall Research &amp; Development (R&amp;D) investment. They generally judge that spend by constructing a scatterplot of R&amp;D spend versus year-over-year revenue growth for a cohort of similar companies. Perfectly similar companies don&rsquo;t exist, so this cohort is generally constructed from companies in similar industries, with similar revenue, and operating in the same regions.</p> <p>We have reached out to our investors to see if they can provide the internal datasets they use for this analysis, but in the mean-time we&rsquo;ve developed a directionally useful dataset using the <a href="https://iri.jrc.ec.europa.eu/scoreboard/2023-eu-industrial-rd-investment-scoreboard">2023 R&amp;D Investment Scoreboard</a>, with some <a href="https://docs.google.com/spreadsheets/d/1IwO3XWDd1inVXLBw4FhkaQh5OuUlYQf0NsX95nPiOtA/edit?gid=943277176#gid=943277176">rough cutting of the data</a> to remove outliers. (If we repeat this process, we will use the <a href="https://www.sec.gov/search-filings">SEC&rsquo;s EDGAR database</a> to pull a more specifically helpful dataset, but this has been a useful starting point.)</p> <p><img src="https://lethain.com/static/blog/strategy/rd-opincome-2022.png" alt="Scatterplot of R&amp;D investment versus operating profit growth at public companies."></p> <p>This isn&rsquo;t a perfect dataset, we prefer revenue growth over rgowth in operating profit, but it&rsquo;s the best option within the dataset that we were able to quickly pull down. Nonetheless, there&rsquo;s a clear strong performer quadrant in top-left that we can plot ourselves into to understand our general performance, which is discussed further in the diagnosis section above.</p> <h3 id="zendesk">Zendesk</h3> <p>The second topic of exploration we dug into is understanding the general sequence of steps taken by private equity ownership after taking ownership of a company. For an example with available public documentation, we focused on <a href="https://www.reuters.com/markets/deals/zendesk-goes-private-10-bln-deal-2022-11-22/">the purchase of Zendesk in 2022</a>.</p> <p>To start, we pulled Zendesk&rsquo;s <a href="https://www.sec.gov/ix?doc=/Archives/edgar/data/0001463172/000146317222000236/zen-20220630.htm">final 10-Q before going private</a>.</p> <p><img src="https://lethain.com/static/blog/strategy/zendesk-pl-2022.png" alt="Zendesk&rsquo;s P&amp;L from their 2022 10-Q"></p> <p>Taking those values, we can reformat them into a chart focusing on the year-over-year changes in the 6 months period ending in 2022 versus the same period in 2021.</p> <p><img src="https://lethain.com/static/blog/strategy/zendesk-yoy-6m-2022.png" alt="Zendesk&rsquo;s P&amp;L from their 2022 10-Q, reformatted to show year-over-year changes"></p> <p>The changes are a bit concerning. Sales and Marketing costs have grown more slowly than revenue, which is positive, but Research and Development (R&amp;D) expenses have grown about 50% faster than revenue, and General and Administration (G&amp;A) charges have grown more than twice as quickly as revenue.</p> <p>From those growth rates, we would assume that the new ownership might push to aggressively reduce spend in those two areas, which is indeed what history suggests happend, with a <a href="https://www.zendesk.com/newsroom/articles/company-announcement/">November, 2022 reduction</a>, followed some months later by a <a href="https://www.zendesk.com/newsroom/articles/zendesk-workforce-reduction/">May, 2023 reduction</a>. It&rsquo;s hard to get precise data here, but it&rsquo;s our impression that these reductions focused on areas where expenses were growing quickly, with particular focus on G&amp;A functions.</p>Using systems modeling to refine strategy.https://lethain.com/strategy-systems-modeling/Mon, 04 Nov 2024 07:00:00 -0700https://lethain.com/strategy-systems-modeling/<p>While I was probably late to learn the concept of <a href="https://lethain.com/testing-strategy-iterative-refinement/">strategy testing</a>, I might have learned about systems modeling too early in my career, stumbling on Donella Meadows&rsquo; <em><a href="https://www.amazon.com/Thinking-Systems-Donella-H-Meadows-ebook/dp/B005VSRFEA/">Thinking in Systems: A Primer</a></em> before I began my career in software. Over the years, I&rsquo;ve discovered a number of ways to miuse systems modeling, but it remains the most effective, flexible tool I&rsquo;ve found to debugging complex problems.</p> <p>In this chapter, we&rsquo;ll work through:</p> <ul> <li>when systems model is a useful technique, and when it&rsquo;s better to rely on other refinement techniques like Wardley mapping or strategy testing instead</li> <li>a two minute primer on the basics of systems modeling, along with resources for those looking for a deeper exploration of the foundational topics</li> <li>a discussion on systems modeling tooling, why there&rsquo;s no perfect systems modeling tool out there, and how I recommend picking the tool that you build proficiency with</li> <li>the steps to build a systems model for a problem you&rsquo;re engaging with</li> <li>how to document your learnings from a systems model to maximize the chance that others will pay attention to it rather than ignoring it due to the unfamiliarity or complexity of the tooling</li> <li>what systems modeling can&rsquo;t do, even if you really want to believe it can</li> </ul> <p>After working through this chapter&rsquo;s overview of systems modeling, you can see the approaches implemented in a number of system models created to refine the strategies throughout this book. The theory of systems modeling is certainly interesting, but hopefully seeing real models in support of concrete engineering strategies will be even more useful.</p> <hr> <p><em>This is an exploratory, draft chapter for a book on engineering strategy that I&rsquo;m brainstorming in <a href="https://lethain.com/tags/eng-strategy-book/">#eng-strategy-book</a>.</em> <em>As such, some of the links go to other draft chapters, both published drafts and very early, unpublished drafts.</em></p> <h2 id="when-is-systems-modeling-useful">When is systems modeling useful?</h2> <p>Although <a href="https://lethain.com/refining-eng-strategy/">refinement</a> is an important step of developing any strategy, some refinement techniques work better for any given strategy. Systems modeling is extremely useful in three distinct scenarios:</p> <ol> <li>When you&rsquo;re unsure where leverage points might be in a complex system, modeling allows you to cheaply test which levers might be meaningful. For example, <a href="https://lethain.com/driver-onboarding-model/">modeling onboarding drivers in a ride-sharing app</a> showed that improving onboarding was less important than reengaging departed drivers.</li> <li>When you have significant data to compare against, which allows you to focus in on the places where the real data and your model are in tensions. For example, I was able to <a href="https://lethain.com/productivity-in-the-age-of-hypergrowth/">model the impact of hiring on Uber&rsquo;s engineering productivity</a>, and then compare that with internal data.</li> <li>When stakeholder disagreements are based in their unstated intuitions, models can turns those intuitions into something structured that can be debated more effectively.</li> </ol> <p>In all three categories, modeling makes it possible iterate your thinking much faster than running a live process or technology experiment with your team. I sometimes hear concerns that modeling slows things down, but this is just an issue of familiarity. The more you practice, modeling can be faster than asking for advice fro industry peers. The actual models I&rsquo;ve developed for this book took less than an hour. (With one notable exception: <a href="https://lethain.com/dx-llm-model/">modeling Large Language Models (LLMs) impacts on developer experience</a>, which took much longer because I deliberately used an impractical tool to reveal the importance of good tooling).</p> <p>Additionally, systems modeling will often expose counter-intuitive dimensions to the problem you&rsquo;re working on. For example, the model I mentioned above on LLMs&rsquo; impact on developer experience suggests that effective LLMs might cause us to spend <em>more</em> time writing and testing code (but less fixing issues discovered post-production). This is a bit unexpected, as you might imagine they&rsquo;d reduce testing time, but reducing testing time is only valuable to the extent that issues identified in production remains&ndash;at worst&ndash;constant; if issues found in production increases, then reduced testing time does not contribute to increased productivity.</p> <p>Modeling without praxis, creates unsubstantiated conviction. However, in combination with praxis, I&rsquo;ve encountered few other techniques that can similar accelerate learning.</p> <p>That doesn&rsquo;t mean that it&rsquo;s always the ideal refinement technique. If you already have conviction on the general approach, and want to refine the narrow details, then <a href="https://lethain.com/testing-strategy-iterative-refinement/">strategy testing</a> is a better option. If you&rsquo;re trying to understand the evolution of a wider ecosystem, then you may prefer Wardley mapping.</p> <h2 id="two-minute-primer">Two minute primer</h2> <p>If you want an exceptional introduction to systems thinking, there&rsquo;s no better place to go than Donella Meadows&rsquo; <a href="https://www.amazon.com/dp/1603580557">Thinking in Systems</a>. If you want a worse, but shorter, introduction, I wrote a short <a href="https://lethain.com/systems-thinking/">Introduction to systems thinking</a> available online and in <em>An Elegant Puzzle</em>.</p> <p>If you want something <em>even shorter</em>, then here&rsquo;s the briefest that I can manage.</p> <p><img src="https://lethain.com/static/blog/strategy/QualityMentalModels.png" alt="Systems model of requests succeeding and failing between a user, load balancer, and server."></p> <p>Accumulations are called <em>stocks</em>. For example, each of the boxes (<code>Requests</code>, <code>Server</code>, etc) in the above diagram is a stock. Changes to stocks are called <code>flows</code>. Every arrow (<code>OK</code>, <code>Error in server</code>, etc) between stocks in the diagram is a a flow.</p> <p>Systems modeling is the practice of using various configurations of stocks and flows to understand circumstances that might otherwise have surprising behavior or are too slow to understand from measurement.</p> <p>For example, we can use the above model to explore the tradeoffs between a load balancer that does and does not cap throughput to a load-sensitive service behind it.</p> <p><img src="https://lethain.com/static/blog/strategy/two-min-primer-chart.png" alt="Chart showing the number of successful and errored requests in two different scenarios."></p> <p>Without a model, you might get into a philosophical debate about how rediculous it is that the downstream server is load-sensitive. With the model, it&rsquo;s immediately obvious that it&rsquo;s worthwhile protecting it, even if it certainly is concerning that it is so sensitive. This is what models do: they create a cheap way to understand reality when fully understanding reality is cumbersome.</p> <div class="bg-light-gray br4 ph3 pv1"> <p><strong>More systems thinking resources</strong></p> <p><em><a href="https://www.amazon.com/Thinking-Systems-Donella-H-Meadows-ebook/dp/B005VSRFEA/">Thinking in Systems: A Primer</a></em> by Donella Meadows</p> <p><em><a href="https://www.amazon.com/Business-Dynamics-Systems-Thinking-Modeling/dp/007238915X">Business Dynamics: Systems Thinking and Modeling for a Complex World</a></em> by John D. Sterman</p> <p><em><a href="https://www.amazon.com/Introduction-Systems-Thinking-Richmond-2004-11-15/dp/B01FGPA45Y/">An Introduction to Systems Thinking</a></em> by Barry Richmond</p> </div> <h2 id="tooling">Tooling</h2> <p>For an idea that&rsquo;s quite intuitive, the tools of systems modeling are a real obstacle to wider adoption. Perhaps a downstream consequence of many early, popular systems modeling tools being quite expensive, the tooling ecosystems for systems modeling has remained fragmented for some time. There also appears to be a mix of complex requirements, patent consolidation, and percieved small market size that&rsquo;s discouraged a modern solutions from consolidating the tooling market.</p> <p>Earlier, I mentioned that system modeling is extremely quick, but that many folks find it a slow, laborous process. Part of that is an issue of practice, but I suspect that the quality of modeling tooling is at least a big a part of the challenge. In the <a href="https://lethain.com/dx-llm-model/">LLMs impact on developer experience model</a>, I go about the steps of building the model in an increasingly messy spreadsheet. This was slow, challenging, and extremely brittle. Even after finishing the model, I couldn&rsquo;t extend it effectively to test new ideas, and I inadvertently introduced a number of bugs into the implementation.</p> <p>Going in the opposite direction, I explored using a handful of tools, such as <a href="https://sagemodeler.concord.org/">Sagemodeler</a> or <a href="https://insightmaker.com/">InsightMaker</a>, which seemed like a potentially simpler toolchains than the one I typically rely on. There are so many of these introductary toolchains for systems modeling, but I generally find that they&rsquo;re either constrained in their capabilities, have a fairly high learning curve, or make it difficult to share your model with others.</p> <p>In the end, I wound up back at the toolchain that I use, which happens to be one that I wrote some years ago,<a href="https://github.com/lethain/systems">lethain/systems</a>. This is far from a perfect toolchain, but I think it&rsquo;s a relatively effective mechanism for demonstrating systems modeling for a few reasons:</p> <ol> <li>quick to create models and iterate on those models</li> <li>easy to share those models with others for inspection and their own exploration</li> <li>relatively low surface area for bugs in your models</li> <li>free, open-source, self-hosted toolchain that integrates well with Jupyter ecosystem for diagramming, modeling and so on</li> </ol> <p>You should absolutely pick <em>any</em> tool that feels right to you, and practice with it until you feel confident quickly modeling scenarios. Afterwards, I wouldn&rsquo;t recommend spending too much time thinking about tools at all: the most important thing is to build models and learn from them quickly, and almost any tool will be sufficient to that goal with some deliberate practice.</p> <h2 id="how-to-model">How to model</h2> <p>Learning to system model takes some practice, so we&rsquo;ll approach the details of learning to model from two directions. First, by documenting a general structure for approaching modeling, and second by providing breadcrumbs to the models developed in this book for deeper exploration of particular modeling ideas.</p> <p>The structure to systems modeling that I find effective is:</p> <ol> <li> <p><strong>Sketch</strong> the stocks and flows on paper or a diagramming application (e.g. <a href="https://excalidraw.com/">Excalidraw</a>, Figma, Whimsical, etc). Use whatever you&rsquo;re comfortable with.</p> </li> <li> <p><strong>Reason</strong> about how you would expect a potential change to shift the flows through the diagram. Which flows do you expect to go up, and which down, and how would that movement help you evaluate whether your strategy is working?</p> </li> <li> <p><strong>Model</strong> the stocks and flows in your spreadsheet tool of choice. Start by modeling the flows from left to right (e.g. the happy path flows). Once you have that fully working, then start modeling the right to left flows (e.g. the exception path flows).</p> <p>See the <a href="https://lethain.com/dx-llm-model/">Modeling impact of LLMs on Developer Experience</a> model for a deep dive into the particulars of creating a model.</p> </li> <li> <p><strong>Exercise</strong> the model by experiment with a number of different starting values and determining which rates really impact the model&rsquo;s values. This is essentially performing <a href="https://www.investopedia.com/terms/s/sensitivityanalysis.asp">sensitivity analysis</a></p> </li> <li> <p><strong>Document</strong> the work done in the above sections into a standalone writeup. You can then link to that writeup from strategies that benefit from a given model&rsquo;s insights. You might link to any <a href="https://lethain.com/components-of-eng-strategy/">section of your strategy</a>, depending on what topic the particular model explores. I recommend decoupling models from specific strategies, as <em>generally</em> the details of any given model are a distraction from understanding a strategy, and it&rsquo;s best to avoid that distraction unless a reader is surprised by the conclusion, in which case, the link out supports drilling into the details.</p> </li> </ol> <p>As always, this is the sequence of steps that I&rsquo;d encourage you to follow, and the sequence that I generally follow, but you should adapt them to solve the particular problems at hand. Over time, my experience is that most of these steps&ndash;excluding documentation&ndash;turn into a single iterative process, and that I document everything after several iterations.</p> <h2 id="breadcrumbs-for-deeper-exploration">Breadcrumbs for deeper exploration</h2> <p>Now that we&rsquo;ve covered the overarching approach to system modeling, here are the breadcrumbs to specific models that go deeper on particular elements:</p> <ul> <li><a href="https://lethain.com/driver-onboarding-model/">Modeling driver onboarding</a> explores how the driver lifecycle at Theoretical Ride Sharing might be improved with LLMs, and introduces using the <a href="https://github.com/lethain/systems">lethain/systems</a> library for modeling</li> <li><a href="https://lethain.com/dx-llm-model/">Modeling impact of LLMs on Developer Experience</a> looks at how LLMs might impact developer experience at Theoretical Ride Sharing, and is demonstrates (the downsides of) modeling with a spreadsheet</li> <li><a href="https://lethain.com/engineering-cost-model/">Modeling engineering backfill strategy</a> studies the financial consequences of various policies for how we backfill departed engineers in an engineering organization, and introduces further <a href="https://github.com/lethain/systems">lethain/systems</a> features</li> </ul> <p>Beyond these models, you can find other systems models that I&rsquo;ve written on my blog&rsquo;s <a href="https://lethain.com/tags/systems-thinking/">systems-thinking category</a>, and there are numerous, great examples in the materials references in the systems modeling primer section above.</p> <h2 id="how-to-document-a-model">How to document a model</h2> <p>Much like <a href="https://lethain.com/readable-engineering-strategy-documents/">documenting strategy is challenging</a>, communicating with models in a professional setting is challenging. The core problems is that there are many distinct groups of model readers. Some will lack familiarity with the tooling you use to develop models. Others will try to refine, or invalidate, your model by digging into the details.</p> <p>I navigate those mismatches by focusing first on the audience who is least likely to dig into the model. I still want to keep all the details handy, ideally in the rawest form possible to allow others to manipulate the model themselves, but it&rsquo;s very much my second goal when documenting a model.</p> <p>From experience, I recommended this order (it&rsquo;s also the order used in the models in this book, so you&rsquo;ll see it in practice a number of times):</p> <ul> <li>start with learning section, with charts showing what model has taught you</li> <li>sketch and explaing the stocks and flows</li> <li>reason about what the sketch itself teaches you</li> <li>explain how you developed the model, with an emphasis on any particularly complex portions</li> <li>exercise the model by testing how changing the flows and stocks leads to different outcomes</li> </ul> <p>If you remember nothing else, your document should reflect the reality that most people don&rsquo;t care how you built the model, and just want the insights. Give them the insights early, and assume no one will trust your model nearly as much as you do. Models are an input into the strategy, never a reliable sole backer for a strategy.</p> <h2 id="what-systems-modeling-isnt">What systems modeling isn&rsquo;t</h2> <p>Although I find systems modeling a uniquely powerful way to accelerate learning, I&rsquo;ve also encountered many practioners who believe that their models <em>are</em> reality rather than <em>reflecting</em> reality. Over time, I&rsquo;ve developed a short list of cautions to help would-be modelers avoid overcommitting to their model&rsquo;s insights:</p> <ol> <li><strong>When your model and reality conflict, reality is always right.</strong> At Stripe, we developed <a href="https://lethain.com/modeling-reliability/">a model to guide our reliability strategy</a>. The model was intuitively quite good, but its real-world results were mixed. Attachment to our early model distracted us (too much time on collecting and classifying data) and we were slow to engage with the most important problems (maximizing impact of scarce mitigation bandwidth, and growing mitigation bandwidth). We’d have been more impactful if we engaged directly with what reality was teaching us rather than looking for reasons to disregard reality’s lessons.</li> <li><strong>Models are immutable, but reality isn’t.</strong> I once joined an organization investing tremendous energy into hiring but nonetheless struggling to hire. Their intuitive model pushed them to spend years investing into top of funnel optimization, and later steered them to improving the closing process. What they weren’t able to detect was that <a href="https://lethain.com/getting-to-yes/">misalignment in interviewer expectations</a> was the largest hurdle in hiring.</li> <li><strong>Every model omits information; some omit critical information.</strong> The service migration at Uber is a great example: modeling clarified that we <em>had</em> to adopt a more aggressive approach to our service migration in order to succeed. Subsequently, we did succeed at the migration, but the model didn&rsquo;t study the consequences of completing the migration, which were a very challenging development environment. The model captured everything my team cared about, as the team responsible for running the migration, but did nothing to evaluate whether the migration was a good idea overall.</li> </ol> <p>In each of those situations, two things are true: the model was extremely valuable, and the model subtly led us astray. We would have been led astray even without a model, so the key thing to remember isn&rsquo;t that models are inherently misleading, instead the risk is being overly confident about your model. A powerful tool to use in tandem with judgment, not a replacement.</p> <h2 id="summary">Summary</h2> <p>Systems modeling isn&rsquo;t prefect. If you&rsquo;ve already determined your strategy and want to refine the details, then strategy testing is probably a better choice. If you&rsquo;re trying to understand the dynamics of an envolving ecosystem, then Wardley mapping is a more appropriate tool.</p> <p>However, if you have the general shape, but lack conviction on how the pieces fit together, systems modeling is a remarkable tool. After this chapter, you know how to select appropriate tooling, and how to use that tooling to model your problem at hand. Next, we&rsquo;ll work through systems modeling <a href="https://lethain.com/tags/systems-thinking/">a handful of detailed problems</a> to provide concrete examples of applying this technique.</p>