<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Rushabh Doshi</title><link>https://rushabhdoshi.com/</link><description>Recent content on Rushabh Doshi</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><managingEditor>Rushabh Doshi</managingEditor><webMaster>Rushabh Doshi</webMaster><lastBuildDate>Fri, 13 Mar 2026 18:08:03 -0700</lastBuildDate><atom:link href="https://rushabhdoshi.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Ship week at Hiro: MCP, Portfolio, and Import 2.0</title><link>https://rushabhdoshi.com/posts/2026-03-13-hiro-ship-week/</link><pubDate>Fri, 13 Mar 2026 18:08:03 -0700</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2026-03-13-hiro-ship-week/</guid><description>&lt;blockquote>
&lt;p>Hiro is not a financial advisor. It is an AI powered financial assistant. Any responses should not be considered financial, tax, or legal advice.&lt;/p>&lt;/blockquote>
&lt;p>The Hiro team has had an epic ship week. We launched two new features and completely redid a critical data import flow. One feature for agents, another for humans, and the third to keep all your financial data clean and usable. Without much further ado, let&amp;rsquo;s get into what these are and why they are worth your time playing with.&lt;/p>
&lt;blockquote>
&lt;p>I don&amp;rsquo;t charge for my newsletter. If you like my writing, I&amp;rsquo;d appreciate it if you 1) try Hiro 2) send us feedback 3) spread the word.&lt;/p>&lt;/blockquote>
&lt;h2 id="mcp-server" class="group relative">MCP Server&lt;a href="#mcp-server" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>We launched an &lt;a href="https://hirofinance.com/mcp/">MCP server&lt;/a>! Super easy to set up if you&amp;rsquo;re into MCPs, works with Claude, Codex, Openclaw, whatever your client choice is.&lt;/p>
&lt;p>This launch will really matter to readers who are already on the forefront of experimenting with OpenClaw and Codex and Claude. What the Hiro MCP server provides is an up-to-date snapshot of your financial data, secured away in Hiro. Why not just give Claude a bunch of your CSVs? You absolutely can, but then you&amp;rsquo;ll have to repeat the process next month and the month after, and remember how you categorized each transaction, and that the random credit union account has something strange with polarities. We handle all this for you and continue to handle it.&lt;/p>
&lt;p>So what can you do? Let me illustrate with a few examples:
Our COO &lt;a href="https://www.linkedin.com/in/samar-shah-63861812/">Samar Shah&lt;/a> is one of the most AI-pilled execs I know. He vibed up a bunch of apps with his MCP connection. You can see his &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7437902469734670336/?originTrackingId=4orWMHo3J03JENE1m3Y%2F5Q%3D%3D">post here&lt;/a>. Pictures speak a thousand words, so here are some ideas from his post:&lt;/p>
&lt;h3 id="customized-cashflow-dashboard" class="group relative">Customized cashflow dashboard&lt;a href="#customized-cashflow-dashboard" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Everyone has a different view of their ideal cashflow dashboard because we think about life differently. Samar made his own that fits his own mind.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/three-hiro-features/samar-cashflow-dashboard.png" alt="samar&amp;rsquo;s cashflow dashboard">&lt;/p>
&lt;h3 id="position-solar-system" class="group relative">Position solar system&lt;a href="#position-solar-system" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>This is for pure fun - but who hasn&amp;rsquo;t wondered what their portfolio looks like as a solar system? (We are huge 🤓s at Hiro) So here you go&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/three-hiro-features/samar-solar-system.png" alt="samar&amp;rsquo;s solar system">&lt;/p>
&lt;h3 id="iran-impact" class="group relative">Iran impact&lt;a href="#iran-impact" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>My partner in crime Ethan took things in a different (more serious) direction. He wanted to know the impact of the Iran conflict on his portfolio. He technically did this without MCP by manually creating spreadsheets of his data (all of this pain is now gone), but the analysis that Claude generated is quite fantastic.&lt;/p>
&lt;div class="substack-post-embed">&lt;p lang="en">Iran Conflict by Ethan Bloch&lt;/p>&lt;p>Investment Impact Analysis&lt;/p>&lt;a data-post-link href="https://ethanbloch.substack.com/p/iran-conflict">Read on Substack&lt;/a>&lt;/div>&lt;script async src="https://substack.com/embedjs/embed.js" charset="utf-8">&lt;/script>
&lt;h3 id="what-will-you-build" class="group relative">What will you build?&lt;a href="#what-will-you-build" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>In all cases, the key is that the MCP server provides cleaned, normalized access to your data, that continues to update itself in the background and lets your agents / claws / Claudes go to town and do whatever analysis they want. I&amp;rsquo;d love to see what you build - if its exciting and you want us to feature it, please let us know.&lt;/p>
&lt;h2 id="portfolio-tab" class="group relative">Portfolio tab&lt;a href="#portfolio-tab" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>What if you follow the MCP stuff but aren&amp;rsquo;t that into it, and would prefer a more normal human interface to things? Well, we have a fresh new update for you. Announcing our &lt;a href="https://app.hirofinance.com/portfolio">Portfolio tab&lt;/a>.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/three-hiro-features/hiro-portfolio-tab.png" alt="Hiro&amp;rsquo;s portfolio tab">&lt;/p>
&lt;p>Why this matters:&lt;/p>
&lt;p>Checking in on your net worth is often the number one thing that people want to do on a somewhat frequent basis. As humans, we just want to know what that number is and whether it is moving up or down. We want to know why. The portfolio tab is designed to help you understand that. We are still in early days, so we don&amp;rsquo;t have advanced tools like backtesting and sensitivity analysis, but those are coming. If you&amp;rsquo;re excited about this, give it a go, tell us what we&amp;rsquo;re missing and we&amp;rsquo;ll build it.&lt;/p>
&lt;h2 id="import-flow-part-2" class="group relative">Import flow part 2&lt;a href="#import-flow-part-2" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Financial data is &lt;em>extremely&lt;/em> messy. That&amp;rsquo;s just an unfortunate reality. If you&amp;rsquo;re a lay customer, you probably have some financial statements or CSV dumps of data. If you use Hiro to connect your financial accounts via Plaid or other providers, you start seeing data going forward, but historical data is limited. Moreover, for transactional data, you may have spent a lot of time categorizing transactions, and cleaning up your data and that is effectively gone when you establish a new connection.&lt;/p>
&lt;p>To solve this problem, we built an import flow that supported arbitrary PDFs, and imports from Monarch and Mint. It was good, but not great. We were doing a bunch of client side processing and the flow was fragile. If you ended up in a bad state, your account was toast. There was no undo.&lt;/p>
&lt;p>We have now solved these problems (and more). Our import flow is completely undoable - go through the import, it doesn&amp;rsquo;t work, no problem, just hit a button and it never happened. As far as we know, almost no other provider supports this, though it is absolutely critical in case of a mistake. Moreover, we&amp;rsquo;ve replaced our old fragile CSV parser approach with an AI agent that can deal with any sort of CSV. So for friends using Personal Capital - go nuts - we support you now.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/three-hiro-features/hiro-import-flow.png" alt="Hiro&amp;rsquo;s new import flow">&lt;/p>
&lt;h2 id="bonus" class="group relative">Bonus&lt;a href="#bonus" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Three features is not enough. We&amp;rsquo;ve historically had a lot of trouble with some banks and financial institutions connecting via Plaid. We now support Finicity and MX as alternative bank connectors. Our institution picker does its best to direct you to the ideal option, but you can always override it if you want.&lt;/p>
&lt;p>I&amp;rsquo;m very excited about what we are shipping and building at Hiro and the direction we&amp;rsquo;re headed in. Please give Hiro a shot and send us any feedback you may have.&lt;/p></description></item><item><title>Cognitive Debt</title><link>https://rushabhdoshi.com/posts/2026-02-17-cognitive-debt/</link><pubDate>Tue, 17 Feb 2026 22:08:45 -0800</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2026-02-17-cognitive-debt/</guid><description>&lt;p>After using many claudes non-stop for a month, I feel stupider. Not in a good way - I am not awed by the sheer brilliance of super intelligent coding agents - but in a way where I find myself becoming increasingly lazy, deciding not to put in the cognitive work required to build a computer system of any meaningful complexity, and looking for quick &amp;ldquo;productivity hits&amp;rdquo; rather than outcomes that result from slow, meaningful labor. I heard about the term &lt;code>Cognitive Debt&lt;/code> from &lt;a href="https://simonwillison.net/2026/Feb/15/cognitive-debt/">Simon Willison&amp;rsquo;s blog&lt;/a> which led to &lt;a href="https://margaretstorey.com/blog/2026/02/09/cognitive-debt/">Margaret-Anne Storey&amp;rsquo;s article&lt;/a> which led to a research paper by &lt;a href="https://arxiv.org/abs/2506.08872">Kosmya et al., 2025&lt;/a>.&lt;/p>
&lt;h2 id="your-brain-on-chatgpt-arxiv" class="group relative">Your brain on ChatGPT &lt;a href="https://arxiv.org/abs/2506.08872">(arXiv)&lt;/a>&lt;a href="#your-brain-on-chatgpt-arxiv" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>To explore the cognitive effects of using ChatGPT, the authors chose a narrow task - SAT style essay writing - and created 3 groups of 18 students: those that could use ChatGPT, those that could only use a search engine, and those that had nothing. They then measured the quality of the essays and brain activity using EEGs. Quality is difficult to measure, so they used a few different approaches to triangulate things.&lt;/p>
&lt;p>The conclusions of the paper match my lived experience using Claude Code. Quoting directly from the discussion section:&lt;/p>
&lt;blockquote>
&lt;p>Taken together, the behavioral data revealed that higher levels of neural connectivity and
internal content generation in the Brain-only group correlated with stronger memory, greater
semantic accuracy, and firmer ownership of written work. Brain-only group, though under
greater cognitive load, demonstrated deeper learning outcomes and stronger identity with their
output. The Search Engine group displayed moderate internalization, likely balancing effort with
outcome. The LLM group, while benefiting from tool efficiency, showed weaker memory traces,
reduced self-monitoring, and fragmented authorship.&lt;/p>&lt;/blockquote>
&lt;h2 id="computer-systems-vs-computer-programs" class="group relative">Computer systems vs. computer programs&lt;a href="#computer-systems-vs-computer-programs" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>When we were early in our careers, studying computer science, most of our work involved computer &lt;em>programs&lt;/em>, usually in the context of homework assignments. We had no burden of maintenance or bug fixing or evolving our programs once the next feature came along.&lt;/p>
&lt;p>Going from a student to professional, or even early- to mid- career, required closing the gap from programs to &lt;em>systems&lt;/em>. Computer programs, taken together, formed computer systems and gave rise to an immense amount of complexity, that cannot be captured by any single program. In many ways, this reminds me of Stephen Wolfram&amp;rsquo;s work on cellular automata, and complexity emerging from a simple series of rules (ref: &lt;a href="https://writings.stephenwolfram.com/2021/09/charting-a-course-for-complexity-metamodeling-ruliology-and-more/">longish article&lt;/a>).&lt;/p>
&lt;p>Dealing with this complexity requires us to understand the systems that we (or others) have built. I swear by Feynman&amp;rsquo;s quote: &lt;code>What I have not built, I do not understand&lt;/code>. I often do not understand the code that Claude is spitting out, especially in areas where I do not have domain expertise. I suspect that most people moving at the speed of Claude don&amp;rsquo;t either.&lt;/p>
&lt;p>The thing with computer &lt;strong>systems&lt;/strong> is that you don&amp;rsquo;t see the complexity for a while. The start of any project is easy, and initial velocity when you don&amp;rsquo;t have users, or bugs, is very fast. Complexity develops rapidly - usually the first 10 users do something wonky with your system that you didn&amp;rsquo;t anticipate, and now you need to tweak it, add a feature here, move some databases there. The first instinct here might be to just have Claude hammer away at it and fix your system until you get what you need. But you don&amp;rsquo;t understand this beast, so you cannot critique what Claude did and whether it makes any sense. This is the road to software that is going to be extremely hard to maintain and modify, even with Claude.&lt;/p>
&lt;p>I think the term &lt;code>Cognitive debt&lt;/code> perfectly captures this feeling. Claude has demolished &lt;code>Technical debt&lt;/code> and replaced it with &lt;code>Cognitive debt&lt;/code>. I can code with impunity and crush bugs and build stuff that I don&amp;rsquo;t really understand. To make matters worse, we are gorging on this debt like its candy. We do not understand when and how this debt comes due. Over the past week, I have seen some glimpses.&lt;/p>
&lt;p>The clearest indicator is when I have to go back over my own code - either as part of dealing with code review comments or changing something - and realizing that I don&amp;rsquo;t really understand what&amp;rsquo;s going on. I didn&amp;rsquo;t write the code and reading code, no matter how carefully, is just not the same. I end up with no good choices:&lt;/p>
&lt;ol>
&lt;li>Debt payoff: Pseudo re-implement the code to really understand the system. This is time consuming, often more so than implementing the thing the first time around.&lt;/li>
&lt;li>More debt: Get claude to fix the problem, without understanding the code. May or may not work, might give you some wonky results.&lt;/li>
&lt;/ol>
&lt;p>The clearest indicator that you&amp;rsquo;re in some sort of debt cycle is when a reasonably simple PR is taking 10 commits to pull together, when from experience you know that if you had implemented it by hand, you&amp;rsquo;d have done it in half the number of commits. When you start asking claude to &lt;code>fix all comments&lt;/code> without really understanding things - you&amp;rsquo;ve essentially declared bankruptcy.&lt;/p>
&lt;h2 id="the-way-out" class="group relative">The way out&lt;a href="#the-way-out" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>First, we need more research. This whole cognitive debt cycle is an emergent phenomenon. The paper I referenced above is from 2025. I could not find related work in the programming domain that would replicate similar results. If someone enterprising grad student reads my work and does the study, the world would be extremely grateful.&lt;/p>
&lt;p>We need to understand what happens to software engineers with over reliance on coding tools, over a span of time, working on a difficult systems. Are they net faster? More productive? Happier? Unlike essays, we have objective measures of code quality - bug rates, security issues, cyclomatic complexity - as well as subjective measures - give the code to a few smart people and let them review it. We need to find out what happens when we over rely on these things.&lt;/p>
&lt;p>Second, we don&amp;rsquo;t need to wait for research to tell us that we get dumber through over reliance on Claude. Learning (output) seems intuitively proportional to the amount of cognitive labor (input). Ownership, satisfaction, and overall velocity seem intuitively proportional as well. We don&amp;rsquo;t need to mentally flog ourselves for every small thing. However, using claude code is a choice, and we should use it as a tool, in the same way that debt (financial, technical, cognitive) is a tool.&lt;/p>
&lt;p>The easy stuff:&lt;/p>
&lt;ul>
&lt;li>When exploring and trying to build quick prototypes, delegating to agents is the way to go. They are fast, you don&amp;rsquo;t really worry about long term maintenance.&lt;/li>
&lt;li>When dealing with bugs that you understand, but are just too lazy to create a test, and write the fix, the agents seem ideal. You know exactly what needs to be done, and if it doesn&amp;rsquo;t do it, you can fix quickly.&lt;/li>
&lt;li>When writing documentation for work that you wrote, it seems ideal. You have to be careful to keep things succinct so you don&amp;rsquo;t just check in oodles of slop, but with that caveat, there is almost zero harm in generating docs and diagrams that others can consume.&lt;/li>
&lt;/ul>
&lt;p>Be careful:&lt;/p>
&lt;ul>
&lt;li>Non-trivial changes in an adjacent domain. I am most comfortable in python / backend / systems layer. I understand the frontend/web layer and can write some code, I absolutely do not understand the frontend / mobile layer. When making a mobile change, I have a few choices: rely on claude and just jam the fix through, or go through the long process of learning mobile. For some fixes, that are reasonable to eyeball and then test, it makes sense to use Claude. However, anything more than that and I&amp;rsquo;m just creating a lot of work for the code reviewer and I would have better off either punting the work to an expert or going through the painful process of learning mobile.&lt;/li>
&lt;li>Complex changes in core domain. I have a reasonable level of expertise in our core domain. Even here, when I completely delegate to Claude, I can feel my brain just turning off. I do not recognize the code that comes out. It takes a lot longer to think through the edge cases that Claude might have missed. Ultimately, I often wish that I&amp;rsquo;d just done the whole thing from scratch myself because it&amp;rsquo;s way harder to implement and review.&lt;/li>
&lt;/ul>
&lt;h2 id="an-unsatisfying-conclusion" class="group relative">An unsatisfying conclusion&lt;a href="#an-unsatisfying-conclusion" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>I don&amp;rsquo;t have deep concluding thoughts here. I&amp;rsquo;m documenting my journey here, my experiences, and my research into trying to understand them. Amusingly, this almost certainly means that I&amp;rsquo;m going to use Claude code &lt;strong>less&lt;/strong>. I give full license to my colleagues to say &amp;ldquo;I told you so&amp;rdquo; or otherwise give me a hard time. I&amp;rsquo;m going to go back to using tab models more. My PR velocity will almost certainly drop, but my satisfaction will go up, I will have much more faith in the code that I wrote and I will understand the system better.&lt;/p></description></item><item><title>Stop counting tokens</title><link>https://rushabhdoshi.com/posts/2026-02-11-stop-counting-tokens/</link><pubDate>Wed, 11 Feb 2026 18:57:03 -0800</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2026-02-11-stop-counting-tokens/</guid><description>&lt;p>I attended the &lt;a href="https://www.pragmaticsummit.com/">Pragmatic Summit&lt;/a> this week.&lt;/p>
&lt;p>One striking thing from the summit was the amount of airtime dedicated to justifying the financial cost of continuously running Opus 4.6 / Codex 5.3. Brags like &amp;ldquo;We gave all our engineers an unlimited budget for tokens&amp;rdquo; immediately begged for the counterfactual - you mean that was a real constraint at your company before you stepped in? Why?&lt;/p>
&lt;p>In the early days of video on the web (circa 2006), YouTube&amp;rsquo;s video format was 320x240px - video so small and pixelated that even the worst compression artifacts today would be 10x better. We literally didn&amp;rsquo;t have the CPU capacity to process more video, or the bandwidth to stream all this video at reasonable cost.&lt;/p>
&lt;p>We spent an inordinate amount of time optimizing the heck out of video so it could look good at reasonably low bitrates. We had formats solely for India and other countries where the internet infrastructure hadn&amp;rsquo;t caught up and people didn&amp;rsquo;t have fancy 3G on their phones.&lt;/p>
&lt;p>Today, these stories feel quaint - in an &amp;ldquo;okay grandpa&amp;rdquo; sense.&lt;/p>
&lt;p>This is exactly how I feel about these discussions of &amp;ldquo;token budgets&amp;rdquo; right now.&lt;/p>
&lt;p>Fast forward a few years, and we&amp;rsquo;re all going to look back at this time and wonder what we were all thinking. Why were you being so stingy with electricity? Couldn&amp;rsquo;t you just throw a million Claudes at a problem?&lt;/p>
&lt;p>Infrastructure feels expensive and something to optimize around, until the costs fall to zero and we focus on building what&amp;rsquo;s important.&lt;/p>
&lt;p>&lt;a href="https://simonwillison.net/">Simon Willison&lt;/a>, Django co-creator and tinkerer supreme, was recounting a story of how he vibe coded a custom app using his phone, to help him cook two Christmas meals simultaneously. &lt;a href="https://lauratacho.com/">Laura Tacho&lt;/a> vibed an app to match nail colors while waiting to get her nails done. I think this is &lt;em>exactly&lt;/em> what I&amp;rsquo;m talking about.&lt;/p>
&lt;p>I think we should all switch into the abundance mindset as soon as possible. The economics of Opus or Codex costs are shaping your ambition. Spend the money, move fast, run agents 24/7 and build everything you want.&lt;/p>
&lt;p>What would you build if tokens cost the same as electricity?&lt;/p></description></item><item><title>Multi-Clauding Like a Boss</title><link>https://rushabhdoshi.com/posts/2026-01-11-multiclauding-like-a-boss/</link><pubDate>Sun, 11 Jan 2026 10:13:12 -0800</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2026-01-11-multiclauding-like-a-boss/</guid><description>&lt;p>In December 2025, with the release of Claude Opus 4.5, the software engineering world realized that things will never be the same again. Opus 4.5 is the first model that is able to run complex reasoning chains and create code that is correct, succinct, and feels like code you would have written yourself - including following your code style and conventions across multiple files and refactors.&lt;/p>
&lt;p>When ChatGPT originally came out, in November of 2022 (which feels like an eternity ago), there was already a hint that LLMs and coding were a great match. One of my first learning projects was &lt;a href="https://github.com/radoshi/llm-code">llm-code&lt;/a> in May 2023, exploring how GPT3.5 could be coerced into writing code on the terminal.&lt;/p>
&lt;p>Thanks to LLM assist, I&amp;rsquo;ve &lt;a href="https://github.com/radoshi">written more code&lt;/a> in 2025 than I have in any other year of my career, including a decade where I was a full-time engineer.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/multiclauding/2025-year-in-code.png" alt="2025 git wrapped">
Generated using &lt;a href="https://git-wrapped.com/profiles/Radoshi">git-wrapped&lt;/a>&lt;/p>
&lt;p>I fully expect that by the end of 2026, the entire world is effectively using LLMs to write software and hand-written software will soon get delegated into the educational / learning category or for niche software without adequate training data. This claim would have seemed absurd a few years ago, but doesn&amp;rsquo;t feel as crazy now. To understand the basis of this claim, one has to use Claude Code on a production codebase for a few weeks and the conclusion feels obvious.&lt;/p>
&lt;p>Like most futures, this one is here but unevenly distributed. I&amp;rsquo;ll go into some detail here on how our setup at Hiro works, what works for us and what doesn&amp;rsquo;t (yet), and provide some references. Prognostications on the future of software development and engineering will come in a follow-up post ~week from now.&lt;/p>
&lt;hr>
&lt;p>&lt;strong>Contents&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#setup-and-install">Setup and Install&lt;/a> — Claude subscription, Claude Code, Terminal, Code editor&lt;/li>
&lt;li>&lt;a href="#commands">Commands&lt;/a> — Repository init, monorepo setup, code checkouts&lt;/li>
&lt;li>&lt;a href="#workflow">Workflow&lt;/a> — Plan/Write/Review, Think/Test/Write/Review, permissions, subagents, MCP&lt;/li>
&lt;li>&lt;a href="#multi-claude-like-a-boss">Multi-Claude like a boss&lt;/a> — Running multiple Claudes in parallel&lt;/li>
&lt;li>&lt;a href="#important-note">Important note&lt;/a> — Code review expectations&lt;/li>
&lt;li>&lt;a href="#references">References&lt;/a> — Links, tmux.conf, commit command&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h1 id="setup-and-install" class="group relative">Setup and Install&lt;a href="#setup-and-install" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;h2 id="claude-subscription" class="group relative">Claude subscription&lt;a href="#claude-subscription" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>First thing you need. I strongly recommend the $200 max subscription if you&amp;rsquo;re doing development professionally, or at least the $100 subscription. You can upgrade pretty easily as you go along, but the thing you &lt;em>don&amp;rsquo;t&lt;/em> want to do is try and use Sonnet or some of the weaker models. You&amp;rsquo;ll have poorer results and get frustrated quickly because weaker models will deliver suboptimal results that need substantial manual review and editing to get the code over the line.&lt;/p>
&lt;h2 id="claude-code" class="group relative">Claude code&lt;a href="#claude-code" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>From &lt;a href="https://code.claude.com/docs/en/quickstart">official Claude docs&lt;/a> you can install it using curl, npm, or homebrew. In our case, we use &lt;a href="https://github.com/nvm-sh/nvm">nvm&lt;/a> pretty religiously and pin all our npm deps, so using npm to install it makes sense. Claude does auto-upgrade and managing claude upgrade cycles has not proven to be challenging.&lt;/p>
&lt;h2 id="terminal" class="group relative">Terminal&lt;a href="#terminal" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="https://ghostty.org/">Ghostty&lt;/a> is my terminal of choice, iTerm and &lt;a href="https://www.warp.dev/">Warp&lt;/a> get honorable mentions.&lt;/p>
&lt;p>&lt;a href="https://github.com/tmux/tmux/wiki">tmux&lt;/a> is a &lt;em>MUST&lt;/em>. It doesn&amp;rsquo;t take long to learn it. Configure tmux using Claude Code - this way you don&amp;rsquo;t really need to learn the intricacies of the file. I&amp;rsquo;ll put my tmux.conf in the references section below.&lt;/p>
&lt;h2 id="code-editor" class="group relative">Code editor&lt;a href="#code-editor" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>This almost doesn&amp;rsquo;t matter. I use &lt;a href="https://www.cursor.com/">Cursor&lt;/a> because I like its tab completion model, but regularly switch back to &lt;a href="https://code.visualstudio.com/">VSCode&lt;/a> and &lt;a href="https://neovim.io/">nvim&lt;/a> for quick terminal based edits.&lt;/p>
&lt;h1 id="commands" class="group relative">Commands&lt;a href="#commands" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>From here on out, I&amp;rsquo;ll assume you have Claude Code up and running and can fire commands.&lt;/p>
&lt;h2 id="repository-initialization" class="group relative">Repository initialization&lt;a href="#repository-initialization" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;code>/init&lt;/code> - Quickly generate your &lt;code>CLAUDE.md&lt;/code> file that is at the repo root. Optional for now: Read through the file and make manual edits (or getting Claude to edit) to tune it to your codebase.&lt;/p>
&lt;h2 id="monorep-setup" class="group relative">Monorep setup&lt;a href="#monorep-setup" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Hiro codebase is a small-medium sized monorepo with various directories for backend (python), frontend/web (typescript), frontend/mobile (typescript), terraform, data etc. We have multiple Claude.md files across the monorepo. We fire claude from root - it seems to reference the correct CLAUDE.md file, in addition to the root one, when working on a particular part of the codebase.&lt;/p>
&lt;p>See the &amp;ldquo;Customize your setup&amp;rdquo; section in &lt;a href="https://www.anthropic.com/engineering/claude-code-best-practices">Claude best practices&lt;/a> from Anthropic.&lt;/p>
&lt;h2 id="commands-plugins-subagents" class="group relative">Commands, plugins, subagents&lt;a href="#commands-plugins-subagents" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>These are important and easy to setup, but we will explore these in the context of workflows 👇🏽&lt;/p>
&lt;h2 id="code-checkouts" class="group relative">Code checkouts&lt;a href="#code-checkouts" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>I tend to have about 5 checkouts of my codebase, in different directories, each tied to a different tmux window. I do not use &lt;code>git-worktrees&lt;/code> - I tried it, couldn&amp;rsquo;t really get it to work well because our repo has other dependencies like a sqlitedb that must be maintained with migrations. It&amp;rsquo;s just much easier to have a complete checkout living in a directory.&lt;/p>
&lt;p>Each checkout is its own reality - I can run dev servers and mess with the local db without affecting anything else. Each checkout often has a bunch of branches; I use &lt;code>git-town&lt;/code> to do stacked changes (&lt;code>sapling&lt;/code> is another alternative) but that&amp;rsquo;s a whole different post by itself. One branch may be in a few checkouts; it mostly doesn&amp;rsquo;t matter as long as we maintain that each tmux window and subsequent checkout is its own sealed world.&lt;/p>
&lt;p>Note: &lt;strong>5&lt;/strong> is a bit of trial-and-error. My brain maxes out around 3-4 claudes running in parallel, the 5th is for random one-offs.&lt;/p>
&lt;h1 id="workflow" class="group relative">Workflow&lt;a href="#workflow" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;blockquote>
&lt;p>Use &lt;code>Ctrl-Tab&lt;/code> to quickly cycle through modes.&lt;/p>&lt;/blockquote>
&lt;h2 id="plan-write-review" class="group relative">Plan, Write, Review&lt;a href="#plan-write-review" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>When building a new feature, I almost always start in Plan mode. You tell Claude what you&amp;rsquo;d like it to do, or point to a Linear ticket or Slack thread and let it go to town exploring. Once claude comes up with a plan, I will go through and read the plan, making edits inline. If the edits are substantial, I&amp;rsquo;ll just prompt claude to keep planning in the direction that I want to go.&lt;/p>
&lt;p>I consider most plans and explorations to be throw-away. If I don&amp;rsquo;t like the direction things are going, I hit &lt;code>/clear&lt;/code> and just start again.&lt;/p>
&lt;p>Once the plan is done, I let Claude rip using &lt;code>Accept Edits mode&lt;/code> (&lt;code>Ctrl-Tab&lt;/code> your way into this, Claude will also prompt you).&lt;/p>
&lt;p>Here you&amp;rsquo;ll hit your first roadblock, with Claude asking you for a bunch of permissions.&lt;/p>
&lt;h3 id="sidebar-permission-management" class="group relative">Sidebar: Permission management&lt;a href="#sidebar-permission-management" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>I do not like running Claude in &lt;em>Dangerously accept all permissions&lt;/em> mode. Turns out, for most operations on a reasonably tuned codebase, you don&amp;rsquo;t need a ton of crazy commands. Most of our commands tend to fall in the &lt;code>Bash(ls:*)&lt;/code> or &lt;code>Bash(git diff:*)&lt;/code> type buckets. For all of these, when we see us needing to give Claude these permissions, we add it to the project permission set, so everyone benefits from it. It should take a few iterations, but you&amp;rsquo;ll rapidly find yourself rarely needing to give Claude permissions.&lt;/p>
&lt;h3 id="sidebar-shared-claude-directories" class="group relative">Sidebar: Shared &lt;code>.claude&lt;/code> directories&lt;a href="#sidebar-shared-claude-directories" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>I strongly recommend having project level claude settings, at the root of your codebase. This allows everyone working on that codebase to contribute while having everything version controlled and merged in. This requires everyone in the company to agree on coding practices and conventions - if you don&amp;rsquo;t have that, then this serves as a good forcing function.&lt;/p>
&lt;p>Let&amp;rsquo;s continue.&lt;/p>
&lt;p>Once claude is done writing all your code and your tests, you&amp;rsquo;ll want it to execute tests and review the code. Here you have two options:&lt;/p>
&lt;ol>
&lt;li>Just tell claude how to execute tests. In our case we make liberal use of &lt;code>justfile&lt;/code>s to capture common commands and have Claude execute those. However, this does pollute context quickly if your tests spew a lot or you have one tests that blows up at the beginning of the run etc.&lt;/li>
&lt;li>Use a sub-agent to do the test linting, formatting, testing. The benefit of this approach is that your main agent context stays clean.&lt;/li>
&lt;/ol>
&lt;h3 id="sidebar-subagents" class="group relative">Sidebar: Subagents&lt;a href="#sidebar-subagents" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Now that we have a clear use for sub-agents, let&amp;rsquo;s set one up. Simply hit &lt;code>/agents&lt;/code> from claude code and follow the prompts to setup your first sub-agent. We set ours to be project wide, so they can be shared across the team.&lt;/p>
&lt;p>Similar to &lt;code>CLAUDE.md&lt;/code>, it is worth reviewing these and tuning them. One important adjustment my colleague made to our agents file was to tell Claude to run just the tests that it thinks exercise the code that was written, thus reducing the amount of time the agent takes to run (instead of running the world).&lt;/p>
&lt;p>Moving on.&lt;/p>
&lt;p>Once we have our code in a good place, it&amp;rsquo;s time to commit and push to GitHub. You can just tell claude to do so, and it&amp;rsquo;ll do the right thing. However, you&amp;rsquo;ll find yourself doing this a lot, so let&amp;rsquo;s be lazy and write a shortcut. Introducing commands.&lt;/p>
&lt;h3 id="sidebar-commands" class="group relative">Sidebar: Commands&lt;a href="#sidebar-commands" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Commands are literally aliases for prompts. You can add commands by dropping a file into the &lt;code>.claude/commands&lt;/code> directory. We prefer to kebab-case our commands like &lt;code>pr-commit-and-push.md&lt;/code>. The entire commit-and-push command is in references below.&lt;/p>
&lt;p>At this point, claude is done. My followups here are to manually test and check if we actually got things right, and to carefully review the code in question.&lt;/p>
&lt;p>When making small adjustments (like a docstring here or there), it&amp;rsquo;s much easier to pop into an editor and tune quickly. For large adjustments, I will either have claude do it, or potentially throw everything away and start again.&lt;/p>
&lt;h2 id="think-test-write-review" class="group relative">Think, Test, Write, Review&lt;a href="#think-test-write-review" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The second workflow is typically used when fixing bugs.&lt;/p>
&lt;p>I start with describing the bug or pointing Claude at Linear, and then having it think and write a test to explore the bug.&lt;/p>
&lt;h3 id="sidebar-mcp" class="group relative">Sidebar: MCP&lt;a href="#sidebar-mcp" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Setting up MCPs in claude is straightforward. &lt;code>/mcp&lt;/code> will open up a list, most tools out there have instructions on how to setup their MCP integrations. Linear&amp;rsquo;s is quite good and supports both token and OAuth based auth. If using token auth, be careful not to merge your token into your codebase.&lt;/p>
&lt;p>Moving on: when the test is written, Claude usually prompts me to let it continue on and fix the code, which is also straightforward.&lt;/p>
&lt;p>The format, lint, test and review steps are not substantially different from the one above.&lt;/p>
&lt;h1 id="multi-claude-like-a-boss" class="group relative">Multi-Claude like a boss&lt;a href="#multi-claude-like-a-boss" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>Claudes can take some time to run, it&amp;rsquo;s nice to be able to do a few things in parallel.&lt;/p>
&lt;p>I have multiple checkouts of our code (about 5, as mentioned above). I have one tmux session running in a terminal, with good naming so that window-1 points to hiro-1 points to the same named directory. This mostly helps me stay sane.&lt;/p>
&lt;p>The central limiting factor with multi-claude is my ability to keep 5 different bugs or features in my head, test them thoroughly, review the code, etc. My brain gets completely fried after doing Claude x3 for ~2 hours.&lt;/p>
&lt;h1 id="important-note" class="group relative">Important note&lt;a href="#important-note" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>Since code generation is no longer the limiting factor, it can be really easy to write a thousands of lines of bad code and send it over to your colleagues to review. We require all engineers to stand by the code that they are putting up for review. Typically, most PRs will have comments about which parts were completely vibed (increasingly all of it) and specific comments to guide the reviewer through potentially tricky areas. We give each other feedback around reducing the slop (especially around tests where Claude really wants to test the implementation and be thorough) and continue to tune our Claudes.&lt;/p>
&lt;h1 id="references" class="group relative">References&lt;a href="#references" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;ul>
&lt;li>&lt;a href="https://www.anthropic.com/engineering/claude-code-best-practices">Claude best practices&lt;/a> from Anthropic. Excellent, readable tips.&lt;/li>
&lt;li>&lt;a href="https://x.com/bcherny/status/2007179832300581177?s=12&amp;amp;t=MvhsioDQMtOq70SL9HUDsw">Boris Cherney&amp;rsquo;s X thread&lt;/a> on how the creator of Claude code uses it. Maps to the best practices article that he wrote.&lt;/li>
&lt;/ul>
&lt;h2 id="my-tmuxconf-file" class="group relative">My tmux.conf file&lt;a href="#my-tmuxconf-file" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span># split panes using | and -
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>bind | split-window -h
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>bind - split-window -v
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>unbind &amp;#39;&amp;#34;&amp;#39;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>unbind %
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># switch panes using Alt-arrow without prefix
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>bind h select-pane -L
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>bind l select-pane -R
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>bind k select-pane -U
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>bind j select-pane -D
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># Enable mouse control (clickable windows, panes, resizable panes)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>set -g mouse on
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># Make active pane visually distinct
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>set -g pane-active-border-style &amp;#39;fg=green,bold&amp;#39;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>set -g pane-border-style &amp;#39;fg=colour238&amp;#39;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># Reset window background to default (no tint)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>set -g window-style &amp;#39;default&amp;#39;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>set -g window-active-style &amp;#39;default&amp;#39;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="our-commit-and-push-command" class="group relative">Our commit-and-push command&lt;a href="#our-commit-and-push-command" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-md" data-lang="md">&lt;span style="display:flex;">&lt;span>Goal: Commit outstanding changes to a branch and push upstream.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Tasks:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">-&lt;/span> If the current branch is main, create a new branch and PR using the &lt;span style="color:#e6db74">`pr-new`&lt;/span> command.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">-&lt;/span> Commit all the outstanding changes to the current branch.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">-&lt;/span> Push the current branch to origin.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Coding for Managers</title><link>https://rushabhdoshi.com/posts/2025-12-25-coding-for-managers/</link><pubDate>Thu, 25 Dec 2025 09:29:14 -0800</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2025-12-25-coding-for-managers/</guid><description>&lt;p>Many people managers I know are facing some variant of the following crisis:&lt;/p>
&lt;blockquote>
&lt;p>&lt;Exciting company> wants me to consider coming onboard as an IC.
But I haven’t coded professionally in 10 years.
I’m not sure I’m a good engineer anymore.&lt;/p>&lt;/blockquote>
&lt;p>If you’re a professional manager who isn’t coding regularly, this probably feels familiar.&lt;/p>
&lt;p>After talking to a host of smart friends, I’m convinced this isn’t a crisis of ability. It’s a crisis of confidence.&lt;/p>
&lt;p>Good news: there has never been a better time to dip back into being technical. Picking up where you left off is easier than you think.&lt;/p>
&lt;p>A few opinionated notes from going through this myself:&lt;/p>
&lt;h2 id="setup" class="group relative">Setup&lt;a href="#setup" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Don’t spend time setting up your machine, dev env, and tool chain. This used to be really challenging and is still an incredible nerdsnipe. You could lose weeks tweaking your settings files and not make any real progress. Here is my stack. I’d recommend just copying it.&lt;/p>
&lt;ol>
&lt;li>Use &lt;a href="https://code.visualstudio.com/">VSCode&lt;/a>+Copilot or Cursor for your main editor. The specific choice doesn’t matter (Cursor is a fork so they both feel identical). I go back and forth between the two - keybindings are pretty easy to translate over.&lt;/li>
&lt;li>Get &lt;a href="https://code.claude.com/docs/en/overview">Claude Code&lt;/a> and &lt;a href="https://chatgpt.com/features/codex">Codex&lt;/a> CLIs. If you find yourself running out quota on Claude, upgrade to Max ($200/mo) if you can afford it. I have not experimented with Gemini much.&lt;/li>
&lt;li>&lt;a href="https://ghostty.org/">Ghostty&lt;/a> for your terminal. Straightforward, fast, easy to use. What’s not to like.&lt;/li>
&lt;li>&lt;a href="https://github.com/tmux/tmux/wiki">tmux&lt;/a>. You&amp;rsquo;ll need this to run a few different things together, especially if you’re running frontends and backends. Use Claude to fix your configuration.&lt;/li>
&lt;/ol>
&lt;p>What you don’t need:&lt;/p>
&lt;ol>
&lt;li>Expensive machine with a $5000 NVidia GPU. Even if you’re training your own models, you could rent GPUs when you need them. That being said, I admit that the NVidia DGX Spark is calling to me.&lt;/li>
&lt;/ol>
&lt;p>Note:&lt;/p>
&lt;p>I am quite liberal with my $20 subscriptions, which add up quickly. If you can afford it, I think it’s worth spending freely on these tools for a few months without worrying about optimizing your spend. You can easily discard tools that don’t work for you.&lt;/p>
&lt;h2 id="languages-and-frameworks" class="group relative">Languages and frameworks&lt;a href="#languages-and-frameworks" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>A common mistake is to layer on too many new things at once. For example, learning a new language (say &lt;a href="https://www.modular.com/mojo">Mojo&lt;/a> or &lt;a href="https://rust-lang.org/">Rust&lt;/a>), at the same time as figuring out hosting and deployment, and learning machine learning, is overwhelming. Moreover, if you choose something non-standard, you will likely find yourself in configuration hell.&lt;/p>
&lt;p>My strong suggestion is to pick one thing that sits at the intersection of personal curiosity, interest, and a real project that you can ship.&lt;/p>
&lt;p>If your goal is to get back into programming, pick Python or Typescript. Both these languages and associated ecosystems are excellent, fully featured, and easy to go from toys to production.&lt;/p>
&lt;p>At Hiro, we use Python and Django on the backend, with Typescript, React, and React-Native on the frontend. When I started on my journey ~2 years ago, I used vanilla Python and over time, layered on a number of packages that I’ve found to be very useful, for example:&lt;/p>
&lt;ol>
&lt;li>&lt;a href="https://pypi.org/project/rich/">Rich&lt;/a> and &lt;a href="https://pypi.org/project/click/">Click&lt;/a> - build great CLI utilities using these.&lt;/li>
&lt;li>&lt;a href="https://pypi.org/project/pydantic/">Pydantic&lt;/a> - easy validation for objects, super useful when talking to other services that primarily talk REST. Most AI frameworks (OpenAI, Anthropic) use Pydantic under the hood.&lt;/li>
&lt;li>&lt;a href="https://fastapi.tiangolo.com/">FastAPI&lt;/a> - easiest way to get rolling building your own servers. Even though we chose Django and like its built in ORM and Admin tooling, it’s quite likely that if we were starting today, we’d choose FastAPI instead.&lt;/li>
&lt;/ol>
&lt;p>If your goal is to go deeper on LLMs, I strongly suggest not using any AI framework to start with. OpenAI and Anthropic APIs are incredibly straightforward, and programming against them directly will give you a much better understanding of the available knobs e.g. reasoning level, temperature, bias. When you decide to choose a framework, Langchain and PydanticAI are the two leading ones. I strongly recommend PydanticAI - it’s tastefully designed and very powerful, while not abstracting bits that it doesn’t need to. We use this extensively in production.&lt;/p>
&lt;h2 id="taste-still-matters" class="group relative">Taste still matters&lt;a href="#taste-still-matters" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>As you start coding, you will quickly discover that what used to matter still does - a lot.&lt;/p>
&lt;p>In fact, AI tooling has amplified some of the important experiential learnings because when you can generate an infinite amount of code really fast, editing becomes paramount. AI coding tools won’t give you software that is anti-fragile, structured beautifully and layered to make extension easier.&lt;/p>
&lt;p>It’s also very tempting to delegate test generation to AI coding tools. Tests themselves are code debt. Without paying attention, it’s easy to accumulate this debt with tests that are effectively testing each line of the implementation. Go back to basics and re-remember your testing rules.&lt;/p>
&lt;p>Thankfully, refreshing all your old knowledge is very straightforward. Dust off your GoF book, reread CAP theorem papers, talk to &lt;a href="https://rushabhdoshi.com/posts/2025-11-30-on-learning-faster/#3-chatgpt-voice-mode">ChatGPT&lt;/a> or stick things in &lt;a href="https://rushabhdoshi.com/posts/2025-11-30-on-learning-faster/#2-use-notebooklm">NotebookLM&lt;/a>.&lt;/p>
&lt;h2 id="be-public-and-consistent" class="group relative">Be public and consistent&lt;a href="#be-public-and-consistent" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Writing a Jupyter notebook is easy. Writing scripts is easy. Don’t fool yourself in ways that make your imposter syndrome worse. Put stuff into a public github repo and push it out. This will help on a few dimensions:&lt;/p>
&lt;ol>
&lt;li>It forces you to think of deployment. Despite what people say online, deployment is still hard and requires configuring a few things. There is some initial pain, but the result is very satisfying.&lt;/li>
&lt;li>It raises the bar on what you build. Software is often about the last mile - this is where all the annoying issues and bugs pop up. By posting something publicly, you have to cover a lot more than the easier first 80%.&lt;/li>
&lt;li>It’s still interesting to someone. I am constantly surprised by the people who ping me and say “Hey that thing you did &lt;long time ago> was super interesting and helpful.”&lt;/li>
&lt;/ol>
&lt;p>Do not worry about the project not being good enough. Let it be embarrassing. I can assure you - &lt;a href="https://demos.rushabhdoshi.com/">https://demos.rushabhdoshi.com/&lt;/a> is extremely cringe - but it’s worth it.&lt;/p>
&lt;p>Finally, be consistent. Write a little code here and there every day. You don’t need to go into a remote hut for a month - it’s perfectly okay to chip away at things.&lt;/p>
&lt;p>It’s time to build&lt;/p>
&lt;p>There has never been a better time to build. Software is easier than ever to pick up. Yet, the number of things that need to be built continues to grow.&lt;/p>
&lt;p>Happy holidays to you and yours! I look forward to seeing what you create.&lt;/p>
&lt;hr>
&lt;h2 id="a-note-on-hiring" class="group relative">A note on hiring&lt;a href="#a-note-on-hiring" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>If you care deeply about the craft of software engineering, about building incredible financial tools that help real people, and want to work at a small startup where you can have tons of impact, we’re hiring software engineers and a product designer.&lt;/p>
&lt;p>&lt;a href="https://hirofinance.com/jobs/">Please apply directly&lt;/a> or reach out to me.&lt;/p></description></item><item><title>On Learning Faster</title><link>https://rushabhdoshi.com/posts/2025-11-30-on-learning-faster/</link><pubDate>Sun, 30 Nov 2025 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2025-11-30-on-learning-faster/</guid><description>&lt;p>We live in a world where human knowledge is more accessible than it has ever been, yet people continue to use old, linear methods of learning (books, papers, videos) as if nothing has changed. The modern LLM stack compresses months of learning into days.&lt;/p>
&lt;p>This post is about how I learn today. Not theoretically, but the literal tools and workflows that enable me to make progress in solidifying my fundamentals (what is a tensor, how is it different from a matrix, why PyTorch vs NumPy), or picking up entirely new concepts (what does attention really mean, why does the KV cache matter).&lt;/p>
&lt;p>When ChatGPT came out in November of 2022, I was serving as the interim CTO at Oportun, a public financial company that had acquired our startup Digit. I believed then that LLMs were an inflection point similar to the internet - if anything, this may have been an underestimate. After quitting in February of the next year, I immersed myself in learning ML from the ground up (my formal background in CS is in systems). I used books, papers, YouTube (thank you Jeremy Howard and Andrej Karpathy) but struggled. The problem wasn’t the material, but the limits of unidirectional learning.&lt;/p>
&lt;p>Fast forward to today, as we are deep in building out Hiro, that pace of learning has only accelerated. To pick up all this material, some of which has half a century of research behind it, and put it to productive use, would have been impossible had we been stuck with the traditional modes of learning. My learning stack today is anchored by three workflows that I could not live without:&lt;/p>
&lt;h2 id="1-chatgpt-with-branching-chats" class="group relative">1. ChatGPT with branching chats&lt;a href="#1-chatgpt-with-branching-chats" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Sure, everyone uses ChatGPT (or Gemini or Claude). I’d like to draw attention to two extremely important things:&lt;/p>
&lt;ol>
&lt;li>Use branching chats to explore a vast body of work in different threads. This is such an incredible feature, yet, as of this writing, only ChatGPT supports this 🤯. Most of my learning chats result in lots of little side branches - I use it to explore related topics or background that I don’t fully understand, while keeping the main bits in context.&lt;/li>
&lt;li>Use the best model possible, even if you have to pay for it. The $20 subscription is well worth the money - the newer models really are better. Besides, you get a host of features (including privacy). As of this writing, this means you should use GPT5.1, Opus 4.5, or Gemini 3, amongst the typical set of widely available consumer LLMs.&lt;/li>
&lt;/ol>
&lt;h2 id="2-use-notebooklm" class="group relative">2. Use NotebookLM&lt;a href="#2-use-notebooklm" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Google’s NotebookLM tool is incredible when trying to understand dense research papers. If you’re unfamiliar with it: the tool allows you to add links and documents in a “notebook” and then ask questions of everything in context, or generate a “podcast” narrating the content. If you like, it can even pull in more context using search.&lt;/p>
&lt;p>Most papers have a central point or two, but have a huge body of reference material that one must be nominally familiar with, to contextualize and understand the novel bits. I tend to put the initial paper, along with some background papers into NotebookLM and ask it to generate a podcast. Stick it on my phone, go on a walk, and get a quick understanding (along with some fresh air and exercise).&lt;/p>
&lt;h2 id="3-chatgpt-voice-mode" class="group relative">3. ChatGPT voice mode&lt;a href="#3-chatgpt-voice-mode" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>This is another ChatGPT feature that people don’t talk about enough. I will regularly have long 15-20 minute conversations with ChatGPT about something that is not very clear to me. I love the fact that I have an infinitely patient, superhuman teacher, who can explain things to me in ways that I understand.&lt;/p>
&lt;p>Note: the voice model can be weaker than GPT5.1 - use it for more well understood, fundamental learning, which is well-trodden material. Nuanced, cutting-edge stuff is likely to be imperfect.&lt;/p>
&lt;h2 id="learning-is-hard" class="group relative">Learning is hard&lt;a href="#learning-is-hard" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>If your brain doesn’t hurt after an hour or two of trying to learn something new, you’re not trying hard enough. I have many days of mental exhaustion, some quite frustrating as progress seems stuck. It is important to remind yourself that learning new things is supposed to be hard, it’s supposed to suck, and that the reward on the other side justifies the pain.&lt;/p>
&lt;p>Additionally, just reading (or listening) is never going to be enough. I live by Feynman’s quote: “What I cannot create, I do not understand”. Without actually implementing the concepts (or the equivalent of implementation, such as solving math problems), it is very likely that I’m deluding myself into believing that I understand something, only to come up short when I need to explain it or implement it.&lt;/p>
&lt;p>New tools help make the process faster and better, but learning is still very difficult work.&lt;/p>
&lt;h2 id="about-hiro" class="group relative">About Hiro&lt;a href="#about-hiro" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Building Hiro is a multi-domain learning exercise - we’re building something truly exceptional at the intersection of personal finance, LLMs, and great product engineering. If learning and mastering hard things resonates with you, if you want to dive in headfirst into new domains that most people haven’t explored, and you want to work with a small, incredible team, drop me a line. We’re hiring great software engineers, remote/hybrid in the US.&lt;/p>
&lt;h2 id="your-stack" class="group relative">Your stack&lt;a href="#your-stack" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Given how new things are, and how quickly they are evolving, I’m certain my stack is incomplete and won’t stand the test of time. If you have figured out things that work for you, I’d love to learn about them. Please comment below or drop me an email.&lt;/p></description></item><item><title>Rushabh Doshi</title><link>https://rushabhdoshi.com/about/</link><pubDate>Fri, 28 Nov 2025 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/about/</guid><description>&lt;p>Hi, I&amp;rsquo;m Rushabh.&lt;/p>
&lt;p>I co-founded &lt;a href="https://www.hirofinance.com">Hiro Finance&lt;/a> to build the first AI-powered financial advisor. We are a small, passionate team working on challenging problems, and we care just as much about the people we build with as the products we build.&lt;/p>
&lt;p>Before Hiro, I was the CPO at &lt;a href="https://www.digit.co">Digit&lt;/a> where we helped millions save over a billion dollars and eventually joined forces with &lt;a href="https://www.oportun.com">Oportun&lt;/a>. Prior to Digit, I spent years at Facebook and YouTube (Google) building products used by billions of people. Very early in my career, I was an engineer at Microsoft, working on clustering Windows machines together.&lt;/p>
&lt;p>I&amp;rsquo;m an engineer at heart, with a BS and MS in computer science from &lt;a href="https://www.uiuc.edu">Illinois&lt;/a> and &lt;a href="https://www.stanford.edu">Stanford&lt;/a>. I love building things - products, teams, systems, companies - and I care deeeply about elegance, craft, scale, and reliability.&lt;/p>
&lt;p>When I&amp;rsquo;m not working, I&amp;rsquo;m with my family, or playing squash, or hitting the slopes on my board. In a previous life, I drank way too much good beer.&lt;/p>
&lt;p>If you’d like to get these posts in your mail, you can subscribe to my &lt;a href="https://rushabh.substack.com">newsletter&lt;/a>.&lt;/p></description></item><item><title>Vibe Coding Safely</title><link>https://rushabhdoshi.com/posts/2025-08-20-vibe-coding-safely/</link><pubDate>Wed, 20 Aug 2025 10:02:25 -0700</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2025-08-20-vibe-coding-safely/</guid><description>&lt;p>Everyone at Hiro cares deeply about building a great product - one that solves real problems while maintaining an extremely high quality bar. We take inspiration from other software products like Linear (the first issue tracking product that has actually given me joy) where every interaction feels intentional and polished. This obsession with quality isn’t just about aesthetics - we want Hiro to be something that people can rely upon, software that doesn’t break in unexpected ways. In an age of AI driven development, this has become more achievable and paradoxically more challenging.&lt;/p>
&lt;p>A constant tension against the high quality bar is a desire to move fast by cutting corners. This is often a false choice - moving quickly this way feels fast, but is often followed by weeks of “fixes” to make the thing really work. This has not stopped teams, including ours, from falling into this trap - the temptation to push something out before it is properly engineered or ready.&lt;/p>
&lt;p>Enter LLMs: Tools like Claude, ChatGPT, Cursor and VSCode/Copilot have transformed the software development workflow as we know. 2021 (and before) feel like the dark ages of coding. As a company that is on the cutting edge of LLMs and software development, we want to use the latest, greatest tools to their fullest extent. But this represents a fundamental tension: LLM coding tools today can create a lot of slop, which isn’t the only problem.&lt;/p>
&lt;p>Amongst some of the issues we have encountered first hand:&lt;/p>
&lt;ul>
&lt;li>LLMs tend to be verbose and want to write oodles of code that looks right but can hide subtle bugs. This is especially true in “agent-mode” where the LLM is doing multi-file edits.&lt;/li>
&lt;li>Misdiagnoses of bugs can result in a large volume of code and entire rewrites when a surgical fix, or a completely different approach, is appropriate.&lt;/li>
&lt;li>LLMs prefer to follow commonly accepted styles (based on their training set) rather than the styles and frameworks of your codebase. For example, we use tailwind, but have specific components like &lt;Select> that have our own styles. LLMs would prefer to write a &lt;select className="..."> from scratch.&lt;/li>
&lt;li>Even when the code is reasonable, the overall architecture can be inelegant. LLM code can be repetitive and miss similar code in other files.&lt;/li>
&lt;/ul>
&lt;p>The dichotomy of obvious LLM coding superpowers combined with the aforementioned issues can create problems that must be addressed through a combination of tooling and culture. Through discussions with other engineers and leaders at AI startups, we know that we are not alone here. Everyone faces this question of “how much AI coding is okay”. Tab completions are obviously fine, but what about letting agents run amok? What about vibe coding entire features?&lt;/p>
&lt;p>Our goals are to move quickly while maintaining excellent software quality. To achieve these, we want to lean into agents and llm coding tools as much as possible. Everyone at Hiro can, and is encouraged to write code. Ethan (my co-founder and co-CEO) regularly writes PRs for minor changes and will even ship larger features. Contrary to traditional thinking, we want everyone to write code. That’s the whole point - with LLMs the barrier is significantly lower, we need to lean into it.&lt;/p>
&lt;p>To enable this degree of code democracy while also allowing us to sleep at night, we are very rigorous about how we structure, write and maintain our code. Here is a list of some of things that have worked for us:&lt;/p>
&lt;ol>
&lt;li>You own your vibed code. Vibe coding makes writing code feel a lot easier but reviewing vibed code is painful. Throwing some vibed stuff over the fence to another engineer to review is lazy and rude. We treat vibed code as our own and carefully review it before sending it over for a formal review. There are cases where we’re not sure - for example, I’m no terraform expert and often have to rely on the LLM to generate the right things. In these cases, we make it really clear in our PR which bits were vibed, and need extra eyes and help.&lt;/li>
&lt;li>Monorepo forever. This can be a religious lightning rod, but we have taken a very firm stance on putting all our code in one repo. This makes it really easy for the LLM to grep and find files across frontend and backend and make changes that span different layers in the stack. Some of our frontend code is shared between web and mobile (react native) and having things split into different repos would make life difficult.&lt;/li>
&lt;li>Explicit STYLEGUIDE.md. Our styleguide is a file that is checked into our repo and referenced via CLAUDE.md (see below). Any updates to the styleguide necessarily warrant a PR and a discussion.&lt;/li>
&lt;li>Leaning into type systems. Type systems are back in vogue (thanks to Typescript and Rust) and we couldn’t be happier. Our codebase is primarily python/django and Typescript and we lean heavily into enforcing types in both. As an example of how maniacal we’ve gotten, we turned on the no-explicity-any eslint rule, effectively disallowing people to get around the type checker by casting to any. On the python side, we treat all mypy issues as errors that must be fixed before merging.&lt;/li>
&lt;li>Tons of (fast) unit tests. Unit testing used to be a huge chore until LLMs essentially took that pain away. In 2025, there is pretty much no excuse for not having tons of unit tests to check all aspects of your code. We don’t mandate that all new lines of code need to be unit tested but culturally, almost every new PR is. Frontend components are one place where we don’t unit test things; relying on other tools like Storybook instead.&lt;/li>
&lt;/ol>
&lt;p>The net result of leaning extremely heavily into type checkers and unit tests, is that the LLM can quickly loop on itself to fix these problem, resulting in eliminating a whole slew of issues with vibe coded output. 6. Create abstractions and tell the LLM about them. When using LLMs to vibe frontend code, we’d run into problems where it would create correct react/ts code, but would be building from Figma to code resulting in lots of component duplication and subtle differences. After all, it’s really easy to change a px-4 to a px-5 in that one instance without caring about everything else. We changed our codebase to create abstractions, like our component library, based on our design system. Then, we add something like &lt;code>look in &lt;/code>@/components/&lt;code> for the right components&lt;/code> to our prompt to get the LLM to do the right thing. 7. Share your CLAUDE.md. We use claude-code pretty heavily and have shared CLAUDE.md files that we check-in and update periodically. &lt;a href="https://www-cdn.anthropic.com/58284b19e702b49db9302d5b6f135ad8871e7658.pdf">How Anthropic teams use Claude code&lt;/a> is a pretty great whitepaper with tips on using claude code together as a team.&lt;/p>
&lt;p>I’d love to hear your thoughts on effective ways you’re using LLMs to develop code. I’m particularly interested in cultural and tooling changes you’ve made to accommodate and accelerate LLM adoption.&lt;/p>
&lt;p>If you’re an engineer and like nerding out about this stuff, and care about personal finance, we’d love to work with you. We are a small, fully remote team (another post on that coming up), obsessed with building the future of personal finance. We are looking for senior full stack software engineers proficient in at least Python or Typescript (ideally both), who can learn quickly, are very curious and interested in AI and LLMs, and have a passion for personal finance. If that sounds like you, please reach out. Note: we cannot sponsor visas at this time, and are only looking for engineers that live in the Western United States.&lt;/p></description></item><item><title>A Return to Writing</title><link>https://rushabhdoshi.com/posts/2025-07-22-a-return-to-writing/</link><pubDate>Tue, 22 Jul 2025 23:49:25 -0400</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2025-07-22-a-return-to-writing/</guid><description>&lt;p>I&amp;rsquo;m back to writing after nearly two years. A lot has happened since then.&lt;/p>
&lt;p>First, my explorations around AI and LLMs kept increasing my excitement about the area. This excitement has proven well founded, as we are collectively in the midst of one of the greatest revolutions in computing that we have ever seen.&lt;/p>
&lt;p>Second, I started a company! &lt;a href="https://ethanbloch.com">Ethan&lt;/a> and I are back into personal finance, but this time with LLMs. We believe there is no world in which everyone doesn&amp;rsquo;t have a personal financial expert in their pocket in the next ~years. We want to build this future we believe in. To see what we&amp;rsquo;re cooking, head over to &lt;a href="https://hirofinance.com">Hiro&lt;/a> and sign up. If you sign up for the beta and are waiting to get in, just drop me a line and I&amp;rsquo;ll bump you up.&lt;/p>
&lt;p>Finally, I spent some time updating this site to the latest greatest Hugo and Tailwind. It&amp;rsquo;s a lot simpler, a lot less code. There is probably a bunch of other code that can go, but this is good for now. I used Claude Code extensively to get me here, there is probably a large post on effective Claude Code usage coming up in the future.&lt;/p></description></item><item><title>LLM Leverage: Where to Build and Where to Bet</title><link>https://rushabhdoshi.com/posts/2023-09-18-llm-leverage/</link><pubDate>Mon, 18 Sep 2023 12:28:34 -0700</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2023-09-18-llm-leverage/</guid><description>&lt;h1 id="introduction" class="group relative">Introduction&lt;a href="#introduction" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>What do electricity, steam engines, printing presses, and large language models (LLMs) have in common?&lt;/p>
&lt;p>They are (likely) General Purpose Technologies: technologies that have a broad impact on all sectors of the economy.&lt;/p>
&lt;p>Given this broad applicability, how do we reason about the impact of LLMs? If you&amp;rsquo;re an investor or builder, where do you start?&lt;/p>
&lt;p>The GPTs are GPTs (1) paper by OpenAI provides one way to reason about the impact of LLMs. I replicate this paper using GPT-3.5 as a classifier and look at the complete impact, according to this methodology and the most exposed industries.&lt;/p>
&lt;p>The following analysis is targeted at two sets of people:&lt;/p>
&lt;ol>
&lt;li>Application builders who are looking for areas to build in.&lt;/li>
&lt;li>Investors who are trying to understand likely areas to invest in.&lt;/li>
&lt;/ol>
&lt;h1 id="tldr" class="group relative">TL;DR&lt;a href="#tldr" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>We use &amp;ldquo;exposure&amp;rdquo; as our primary measure. At the task level, an &amp;ldquo;exposed&amp;rdquo; task is one that can be done more productively given some LLM technology. This definition can be extended to occupations (which comprise of tasks) and industries (which comprise of people doing occupations).&lt;/p>
&lt;p>Greater exposure means more tasks can be aided by LLMs or tools built on top of LLMs. There is no surprise that industries that deal primarily with information are the most exposed. Back-offices of &lt;em>every&lt;/em> industry are exposed.&lt;/p>
&lt;p>I like exposure as it gives us a way to look at different industries. It also allows us (in the future) to change the definition subtly (if we want to look at job replacement vs. productivity increases) and rerun the whole analysis in the same way.&lt;/p>
&lt;p>We define 3 types of exposure:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Alpha&lt;/strong>: What is the impact of a general chatbot like ChatGPT on productivity increase.&lt;/p>
&lt;p>This measure is a base level measure. This represents the key opportunity for Foundation Model companies and anyone providing generalized tools on top of foundational models - aka Google and OpenAI.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Zeta&lt;/strong>: What is the impact of ChatGPT + Tooling on productivity increase.&lt;/p>
&lt;p>This measure looks at the impact of tooling. It&amp;rsquo;s a superset of alpha, so no major surprise that the top industries are mostly similar.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Delta&lt;/strong>: What is the marginal impact of Tooling: &lt;code>delta = (zeta - alpha)&lt;/code>. This is a narrower version of zeta exposure. &lt;em>This is the key market for application builders.&lt;/em>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="top-5-industries-by-delta" class="group relative">Top-5 industries by Delta&lt;a href="#top-5-industries-by-delta" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ol>
&lt;li>Finance and insurance&lt;/li>
&lt;li>&lt;del>Management of companies and enterprises&lt;/del> (Ignore)&lt;/li>
&lt;li>Professional, scientific, and technical services&lt;/li>
&lt;li>Education services&lt;/li>
&lt;li>Information&lt;/li>
&lt;/ol>
&lt;p>Note: Management is ignored because while it comes up as an occupation code, it doesn&amp;rsquo;t show up in industry output (where it gets layered in).&lt;/p>
&lt;h2 id="top-5-industries-by-output-delta" class="group relative">Top-5 industries by Output-Delta&lt;a href="#top-5-industries-by-output-delta" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Different industries have different output. If we look out output-weighted delta, we get a slightly different picture. If you believe that one should be playing in a big pond, this is the list to look at:&lt;/p>
&lt;ol>
&lt;li>Finance and insurance&lt;/li>
&lt;li>Manufacturing&lt;/li>
&lt;li>Professional, scientific, and technical services&lt;/li>
&lt;li>Information&lt;/li>
&lt;li>Health care and social assistance&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>This list intuitively feels like the right list to be building tooling in. Huge output, large exposure and large delta values (tooling has a major impact). If you&amp;rsquo;re investing or building in AI tooling (outside of hardware, foundational models, and orchestration software) this is a good lens to start with.&lt;/p>&lt;/blockquote>
&lt;h1 id="methods" class="group relative">Methods&lt;a href="#methods" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>The method is based on the GPTs are GPTs paper (1). The high level approach is as follows:&lt;/p>
&lt;ol>
&lt;li>We have data from the US Bureau of Labor Statistics on employment by industry and occupation.&lt;/li>
&lt;li>For each occupation, we have a set of Tasks and for each Task, we have a set of Detailed Work Activities (DWA).&lt;/li>
&lt;li>We can classify these DWAs into 3 categories:
&lt;ol>
&lt;li>Direct exposure: The DWA can be done by a LLM alone.&lt;/li>
&lt;li>Exposure by LLM-powered applications: The DWA can be done by a LLM + Tooling.&lt;/li>
&lt;li>Exposure given image capabilities: The DWA can be done by a LLM + Tooling + Image capabilities.&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>We can then back out the exposure of each occupation and industry to LLMs.&lt;/li>
&lt;/ol>
&lt;p>&lt;em>For precise classification prompts, see the appendix or the code.&lt;/em>&lt;/p>
&lt;blockquote>
&lt;p>Important note: We are estimating &lt;em>exposure&lt;/em> to LLMs. An exposed job simply means that the job could be done with far greater efficiency using LLMs. It does not imply job loss or redundancies.&lt;/p>&lt;/blockquote>
&lt;p>For example, we&amp;rsquo;re seeing a lot of LLM use for software development (eg. Github Co-pilot, ChatGPT, Cursor.so). These applications seem to be making software developers more efficient, not redundant. Similary, we would expect a legal assistant (like Harvey) to make paralegals and lawyers more efficient, not redundant.&lt;/p>
&lt;p>It&amp;rsquo;s simply too early to tell whether LLMs replace jobs (like switchboard operators) or just them more efficient, causing the industry to expand (like accountants after spreadsheets).&lt;/p>
&lt;h1 id="data" class="group relative">Data&lt;a href="#data" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>To understand and contextualize the results, we need to understand the data used.&lt;/p>
&lt;ol>
&lt;li>O*Net Database (2) maintains data on all occupations (eg. CEO)&lt;/li>
&lt;li>Each occupation is broken into a set of Tasks (eg. “Direct or coordinate an organization&amp;rsquo;s financial or budget activities to fund operations, maximize investments, or increase efficiency.”)&lt;/li>
&lt;li>Each task is broken into a set of Activities (eg. “Analyze impact of legal or regulatory changes.”)&lt;/li>
&lt;li>US Bureau of Labor Statistics (3) maintains data on employment data by industry and occupation. This matrix has the employment mix of every industry (eg. the “Rental and leasing services” industry employs “Marketing managers”, “Sales managers”, etc.)&lt;/li>
&lt;/ol>
&lt;h2 id="example" class="group relative">Example&lt;a href="#example" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Let&amp;rsquo;s work through an example to understand how the whole flow works.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>industry_output[(industry_output[&lt;span style="color:#e6db74">&amp;#34;Supergroup&amp;#34;&lt;/span>] &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#e6db74">&amp;#34;Information&amp;#34;&lt;/span>) &lt;span style="color:#f92672">&amp;amp;&lt;/span> (&lt;span style="color:#f92672">~&lt;/span>industry_output[&lt;span style="color:#e6db74">&amp;#34;is_supergroup&amp;#34;&lt;/span>])]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This gives us a look at everything that is part of the &amp;ldquo;Information&amp;rdquo; supergroup. Truncated list:&lt;/p>
&lt;ol>
&lt;li>Software publishers&lt;/li>
&lt;li>Computing infrastructure providers, data processing, web hosting, and related service&lt;/li>
&lt;li>Web search portals, libraries, archives, and other information services(3)&lt;/li>
&lt;li>Publishing industries(3)&lt;/li>
&lt;/ol>
&lt;p>Let&amp;rsquo;s look at &lt;code>Software Publishers&lt;/code> which is NAICS Code &lt;code>5132&lt;/code>, by employment:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>bls_matrix[bls_matrix[&lt;span style="color:#e6db74">&amp;#34;industry_code&amp;#34;&lt;/span>]&lt;span style="color:#f92672">.&lt;/span>str&lt;span style="color:#f92672">.&lt;/span>startswith(&lt;span style="color:#e6db74">&amp;#34;5132&amp;#34;&lt;/span>)]&lt;span style="color:#f92672">.&lt;/span>nlargest(&lt;span style="color:#ae81ff">10&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;employment_2022&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &amp;ldquo;Software Publishers&amp;rdquo; industry employs people who do the following jobs (truncated):&lt;/p>
&lt;ol>
&lt;li>Software developers&lt;/li>
&lt;li>Computer and information systems managers&lt;/li>
&lt;li>Computer user support specialists&lt;/li>
&lt;li>Sales representatives, wholesale and manufacturing, technical and scientific products&lt;/li>
&lt;/ol>
&lt;p>A &lt;code>Software developer&lt;/code> does the following tasks (truncated):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>task_statements[task_statements[&lt;span style="color:#e6db74">&amp;#34;onetsoc_code&amp;#34;&lt;/span>] &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#e6db74">&amp;#34;15-1252.00&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Analyze information to determine, recommend, and plan installation of a new system or modification of an existing system.&lt;/li>
&lt;li>Analyze user needs and software requirements to determine feasibility of design within time and cost constraints.&lt;/li>
&lt;li>Confer with data processing or project managers to obtain information on limitations or capabilities for data processing projects.&lt;/li>
&lt;li>Confer with systems analysts, engineers, programmers and others to design systems and to obtain information on project limitations and capabilities, performance requirements and interfaces.&lt;/li>
&lt;li>Consult with customers or other departments on project status, proposals, or technical issues, such as software system design or maintenance.&lt;/li>
&lt;/ol>
&lt;p>An example &lt;code>task&lt;/code> has the following detailed activities:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>tasks_to_dwas[tasks_to_dwas[&lt;span style="color:#e6db74">&amp;#34;task_id&amp;#34;&lt;/span>] &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#ae81ff">21669&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dwa_reference[dwa_reference[&lt;span style="color:#e6db74">&amp;#34;dwa_id&amp;#34;&lt;/span>]&lt;span style="color:#f92672">.&lt;/span>isin([&lt;span style="color:#e6db74">&amp;#34;4.A.2.b.4.I03.D15&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4.A.4.b.4.I06.D07&amp;#34;&lt;/span>])][&lt;span style="color:#e6db74">&amp;#34;dwa_title&amp;#34;&lt;/span>]&lt;span style="color:#f92672">.&lt;/span>to_list()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Develop testing routines or procedures.&lt;/li>
&lt;li>Manage information technology projects or system activities.&lt;/li>
&lt;/ol>
&lt;p>We can take each of these and classify them. For example, we get the following classifications:&lt;/p>
&lt;ol>
&lt;li>1 - Direct exposure&lt;/li>
&lt;li>2 - Exposure by LLM-powered applications&lt;/li>
&lt;/ol>
&lt;p>We can now back this classification out all the way, through the employment matrix and get to an overally alpha, zeta etc. number for the entire &amp;ldquo;Information&amp;rdquo; industry.&lt;/p>
&lt;h1 id="analysis" class="group relative">Analysis&lt;a href="#analysis" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>The analysis section is graph heavy. Each graph follows a similar format: in a 2X3 grid, we see a list of industries or occupations. The first row is alpha, zeta, and delta scores, the second row is the same, but multiplied by the output of the industry.&lt;/p>
&lt;h2 id="top-supergroups" class="group relative">Top Supergroups&lt;a href="#top-supergroups" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>A Supergroup is a set of industries, bunched together.&lt;/p>
&lt;p>&lt;a href="https://rushabhdoshi.com/assets/llm-impact/supergroup.png">&lt;img src="https://rushabhdoshi.com/assets/llm-impact/supergroup.png" alt="Top Supergroups">&lt;/a>&lt;/p>
&lt;h2 id="top-groups" class="group relative">Top Groups&lt;a href="#top-groups" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Groups look at one more level of granularity compared to supergroups.&lt;/p>
&lt;p>&lt;a href="https://rushabhdoshi.com/assets/llm-impact/group.png">&lt;img src="https://rushabhdoshi.com/assets/llm-impact/group.png" alt="Top Groups">&lt;/a>&lt;/p>
&lt;p>Looking at these, a few industries stand out as being worthy of deeper dives:&lt;/p>
&lt;ol>
&lt;li>Finance and insurance&lt;/li>
&lt;li>Professional, scientific, and technical services&lt;/li>
&lt;li>Information&lt;/li>
&lt;li>Educational services&lt;/li>
&lt;li>Health care and social assistance&lt;/li>
&lt;/ol>
&lt;h1 id="deep-dives" class="group relative">Deep Dives&lt;a href="#deep-dives" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>The following industries deserve their own deep dives:&lt;/p>
&lt;h2 id="finance-and-insurance" class="group relative">Finance and insurance&lt;a href="#finance-and-insurance" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Two interesting aspects of finance and insurance:&lt;/p>
&lt;ol>
&lt;li>Base level alpha is very high. As a result, the delta value is lower. Building tooling in this space could be lucrative but one has to be careful about building too close to a general purpose LLM-enabled task.&lt;/li>
&lt;li>The output is massive. Finance is a huge, huge industry. The scaled impact of even small tooling improvements could be massive.&lt;/li>
&lt;/ol>
&lt;p>&lt;a href="https://rushabhdoshi.com/assets/llm-impact/finance_and_insurance.png">&lt;img src="https://rushabhdoshi.com/assets/llm-impact/finance_and_insurance.png" alt="Finance and Insurance">&lt;/a>&lt;/p>
&lt;h2 id="professional-scientific-and-technical-services" class="group relative">Professional, scientific, and technical services&lt;a href="#professional-scientific-and-technical-services" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>This is the motherload of the tooling bonanza.&lt;/p>
&lt;ol>
&lt;li>Legal&lt;/li>
&lt;li>Advertising&lt;/li>
&lt;li>Accounting&lt;/li>
&lt;li>Design&lt;/li>
&lt;li>Architecture&lt;/li>
&lt;/ol>
&lt;p>So much whitespace to build amazing, bespoke tooling.&lt;/p>
&lt;p>&lt;a href="https://rushabhdoshi.com/assets/llm-impact/professional_scientific_and_technical_services.png">&lt;img src="https://rushabhdoshi.com/assets/llm-impact/professional_scientific_and_technical_services.png" alt="Professional Services">&lt;/a>&lt;/p>
&lt;h2 id="information" class="group relative">Information&lt;a href="#information" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Some whitespace for software. Like finance, high base levels of alpha. I admittedly do not understand why telecom is such a huge output industry or why the scaled output is so high.&lt;/p>
&lt;p>&lt;a href="https://rushabhdoshi.com/assets/llm-impact/information.png">&lt;img src="https://rushabhdoshi.com/assets/llm-impact/information.png" alt="Information">&lt;/a>&lt;/p>
&lt;h2 id="healthcare" class="group relative">Healthcare&lt;a href="#healthcare" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>I am not a healthcare expert. If someone wants to collaborate and add a commentary, I would welcome it.&lt;/p>
&lt;p>&lt;a href="https://rushabhdoshi.com/assets/llm-impact/health_care_and_social_assistance.png">&lt;img src="https://rushabhdoshi.com/assets/llm-impact/health_care_and_social_assistance.png" alt="Healthcare">&lt;/a>&lt;/p>
&lt;h1 id="conclusion" class="group relative">Conclusion&lt;a href="#conclusion" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>Thanks for making it all the way here!&lt;/p>
&lt;p>Using exposure classification to figure out what industries are highly exposed seems like a reasonable first pass to understand the impact of LLMs on the broader economy. I like it because it widens my aperture to think of all the areas where people work, where better tooling will lead to productivity increases. It&amp;rsquo;s not perfect, but it&amp;rsquo;s certainly a start.&lt;/p>
&lt;h1 id="what-about-foundational-models-or-orchestration" class="group relative">What about Foundational Models or Orchestration?&lt;a href="#what-about-foundational-models-or-orchestration" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>Martin Casado at a16z had a great post about the &lt;a href="https://a16z.com/who-owns-the-generative-ai-platform/">Generative AI Platform&lt;/a>.&lt;/p>
&lt;p>The Model provider and Orchestration layers lend themselves to reason - we understand model copabilities and dimensions of price, speed, data privacy etc. Similarly, on the tooling layer, we know some of the problems associated with LLMs and how to build tooling to overcome them.&lt;/p>
&lt;p>However, the application layer remains both the great unknown and the great promise. I hope to understand this layer, in a systematic way, to provide guideposts for those of us looking for gold. Hence this analysis solely looks at the Application Layer.&lt;/p>
&lt;h1 id="reference" class="group relative">Reference&lt;a href="#reference" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;ol>
&lt;li>GPTs are GPTs paper: &lt;a href="https://arxiv.org/abs/2303.10130">https://arxiv.org/abs/2303.10130&lt;/a>&lt;/li>
&lt;li>O*Net Database: &lt;a href="https://www.onetcenter.org/database.html#all-files">https://www.onetcenter.org/database.html#all-files&lt;/a>&lt;/li>
&lt;li>Bureau of Labor Statistics, Occupation Data: &lt;a href="https://www.bls.gov/emp/data/occupational-data.htm">https://www.bls.gov/emp/data/occupational-data.htm&lt;/a>&lt;/li>
&lt;li>How will Language Modelers like ChatGPT Affect Occupations and Industries: &lt;a href="https://arxiv.org/abs/2303.01157">https://arxiv.org/abs/2303.01157&lt;/a>&lt;/li>
&lt;li>a16z: Who owns the Generative AI Platform: &lt;a href="https://a16z.com/who-owns-the-generative-ai-platform/">https://a16z.com/who-owns-the-generative-ai-platform/&lt;/a>&lt;/li>
&lt;/ol>
&lt;h1 id="appendix" class="group relative">Appendix&lt;a href="#appendix" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;h2 id="software" class="group relative">Software&lt;a href="#software" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>All the data and software for this is availble and open source. You can find the datasets above, the software is the following repo:&lt;/p>
&lt;p>&lt;a href="https://github.com/radoshi/gptsaregpts">https://github.com/radoshi/gptsaregpts&lt;/a>&lt;/p>
&lt;h2 id="detailed-classification-prompt" class="group relative">Detailed classification prompt&lt;a href="#detailed-classification-prompt" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>## 1 – Direct exposure
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Label tasks 1 if direct access to the LLM through an interface like ChatGPT or the OpenAI playground alone can reduce the time it takes to complete the task with equivalent quality by at least half. This includes tasks that can be reduced to:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Writing and transforming text and code according to complex instructions,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Providing edits to existing text or code following specifications,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Writing code that can help perform a task that used to be done by hand,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Translating text between languages,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Summarizing medium-length documents,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Providing feedback on documents,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Answering questions about a document, or
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Generating questions a user might want to ask about a document.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>## 2 – Exposure by LLM-powered applications
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Label tasks 2 if having access to the LLM alone may not reduce the time it takes to complete the task by at least half, but it is easy to imagine additional software that could be developed on top of the LLM that would reduce the time it takes to complete the task by half. This software may include capabilities such as:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Summarizing documents longer than 2000 words and answering questions about those documents
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Retrieving up-to-date facts from the Internet and using those facts in combination with the LLM capabilities
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Searching over an organization’s existing knowledge, data, or documents and retreiving information
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Examples of software built on top of the LLM that may help complete worker activities include:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Software built for a home goods company that quickly processes and summarizes their up-to-date internal data in customized ways to inform product or marketing decisions
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Software that is able to suggest live responses for customer service agents speaking to customers in their company’s customer service interface
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Software built for legal purposes that can quickly aggregate and summarize all previous cases in a particular legal area and write legal research memos tailored to the law firm’s needs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Software specifically designed for teachers that allows them to input a grading rubric and upload the text files of all student essays and have the software output a letter grade for each essay
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Software that retrieves up-to-date facts from the internet and uses the capabilities of the LLM to output news summaries in different languages
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>## 3 – Exposure given image capabilities
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Suppose you had access to both the LLM and a system that could view, caption, and create images. This system cannot take video media as inputs. This system cannot accurately retrieve very detailed information from image inputs, such as measurements of dimensions within an image. Label tasks as 3 if there is significant reduction in the time it takes to complete the task given access to a LLM and these image capabilities:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Reading text from PDFs,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Scanning images, or
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- Creating or editing digital images according to instructions.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>## N - Not confident
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>If you are not confident in your classification or if you believe it could go either way, label a task as En.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Two books</title><link>https://rushabhdoshi.com/posts/2023-07-20-two-books/</link><pubDate>Thu, 20 Jul 2023 11:44:30 -0700</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2023-07-20-two-books/</guid><description>&lt;p>&lt;em>Instead of asking GPT to write my material, I used it as a critic to help strengthen my writing. I like the result: it feels much more authentic and less like generated text.&lt;/em>&lt;/p>
&lt;h1 id="ministry-for-the-future" class="group relative">Ministry for the Future&lt;a href="#ministry-for-the-future" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/two-books/mftf.jpeg" alt="Ministry for the Future">&lt;/p>
&lt;p>I enjoyed &lt;a href="https://a.co/d/h8HGwvD">Ministry for the Future&lt;/a> by Kim Stanley Robinson. This book is difficult to pigeonhole into a particular genre - somewhere in between &amp;ldquo;climate fiction&amp;rdquo; and &amp;ldquo;hard sci-fi&amp;rdquo;. It paints an optimistic future of saving the Earth through geo-engineering and crypto currency utopianism. It&amp;rsquo;s set in Zurich, which made me nostalgic for all the time spent hanging out there. The closest comparable recent book is Neal Stephenson&amp;rsquo;s Termination Shock which explores similar themes of geoengineering to save the planet. Where Termination Shock is full of action and adventure, set against a climate change background, MftF is more mellow, focusing on the workings of a small international governmental agency trying to save the planet. Besides climate change, the book also explores themes of global inequality and the power of individuals to make a lasting change. The opening scene will be seared into my memory forever: a harrowing heatwave in North India which results in millions of deaths. Given the heat waves ripping through America and Europe today, this possibility feels all too real. Ultimately, the book left me feel optimistic and hopeful. It&amp;rsquo;s unlikely we can get through this without geoengineering, but the fact that there is a possible way out of this mess is heartening. Recommended.&lt;/p>
&lt;h1 id="when-the-heavens-went-on-sale" class="group relative">When the Heavens Went on Sale&lt;a href="#when-the-heavens-went-on-sale" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/two-books/wthwos.jpeg" alt="When the Heavens Went on Sale">&lt;/p>
&lt;p>I listened to Vance&amp;rsquo;s latest book &lt;a href="https://a.co/d/bNy5pqu">When the Heavens Went on Sale&lt;/a> via Audible. I find the audio format more compelling for dramatized non-fiction - the details are less important than the story and the narrative arc. I&amp;rsquo;m very interested in space - it presents a completely new, unexplored frontier, vast and unimaginably huge. The book is about engineers, investors, and various characters building companies to conquer near earth space: Planet Labs, Rocket Lab, Astra, and Firefly. Planet Labs launched small satellites to constantly image the world, RocketLab and Astra are launching rockets to deliver payloads to space, and Firefly is building engines to power these rockets. The stories lose some steam as we go through the companies - Planet and RocketLab are the strongest, Astra is weird, and things sort of fall apart with Firefly. Given that at least three of the companies are public, it is interesting to see how things unfolded after Vance&amp;rsquo;s coverage of these companies ended. Regardless of some story weakness toward the end, I came up with a great sense of excitement about everything going on a few hundred miles above our heads. Recommended for a non-fiction summer read / listen and for anyone at all interested in space and its potential to impact life on earth.&lt;/p></description></item><item><title>Trivia</title><link>https://rushabhdoshi.com/projects/2023-06-12-trivia/</link><pubDate>Mon, 12 Jun 2023 16:54:16 -0800</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/projects/2023-06-12-trivia/</guid><description>&lt;p>A fun little trivia game, co-written with my friend
&lt;a href="https://www.linkedin.com/in/linktovivekpatel/">Vivek Patel&lt;/a>.&lt;/p>
&lt;p>Enjoy: &lt;a href="https://demos.rushabhdoshi.com/trivia/">https://demos.rushabhdoshi.com/trivia/&lt;/a>&lt;/p></description></item><item><title>Bartender</title><link>https://rushabhdoshi.com/projects/2023-05-31-bartender/</link><pubDate>Wed, 31 May 2023 16:54:16 -0800</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/projects/2023-05-31-bartender/</guid><description>&lt;p>I used GPT to generate cocktail recipes. A bunch of recipes are pre-generated and cached, but you
can generate new ones on the fly.&lt;/p>
&lt;p>🥂: &lt;a href="https://demos.rushabhdoshi.com/bartender/">https://demos.rushabhdoshi.com/bartender/&lt;/a>&lt;/p></description></item><item><title>llm-code</title><link>https://rushabhdoshi.com/projects/2023-05-22-announcing-llm-code/</link><pubDate>Mon, 22 May 2023 14:19:46 -0700</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/projects/2023-05-22-announcing-llm-code/</guid><description>&lt;h1 id="llm-code" class="group relative">&lt;code>llm-code&lt;/code>&lt;a href="#llm-code" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;blockquote>
&lt;p>tl;dr: &lt;code>llm-code&lt;/code> is a CLI tool that helps you write code. It&amp;rsquo;s powered by OpenAI&amp;rsquo;s models. It&amp;rsquo;s open-source and free to use. &lt;a href="https://github.com/radoshi/llm-code">Check it out on github&lt;/a> or install it with &lt;code>pipx install llm-code&lt;/code>.&lt;/p>&lt;/blockquote>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/yellow-robot-small.png" alt="llm-code">&lt;/p>
&lt;p>&lt;em>I&amp;rsquo;m really excited about this project. Excuse the enthusiasm.&lt;/em>&lt;/p>
&lt;p>I&amp;rsquo;ve been messing around with LLMs since leaving my job in February. In part, I&amp;rsquo;ve tried to get back to my technical roots by coding up a storm, and reading paper after paper. However, the honest truth is that I&amp;rsquo;m just having &lt;em>a lot of fun&lt;/em>.&lt;/p>
&lt;p>As I explore what LLMs can do, I started writing little utilities to help me program. For example, one of the most boring things an engineer has to do is write a ton of unit tests. The net result: we get lazy and unit test some bits and then hope the rest works out. What if we all had a little assistant that did the boring bits for us - like writing unit tests?&lt;/p>
&lt;p>I was messing around with bits and pieces of what would become &lt;code>llm-code&lt;/code> for a few weeks. Then I saw &lt;a href="https://simonwillison.net/">Simon Willison&amp;rsquo;s&lt;/a> &lt;a href="https://simonwillison.net/2023/May/18/cli-tools-for-llms/">post&lt;/a> about his &lt;a href="https://github.com/simonw/llm">llm tool&lt;/a> and was inspired to write and release &lt;code>llm-code&lt;/code>.&lt;/p>
&lt;h1 id="what-is-llm-code" class="group relative">What is &lt;code>llm-code&lt;/code>?&lt;a href="#what-is-llm-code" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>&lt;code>llm-code&lt;/code> is an open-source CLI tool that helps you write code. It&amp;rsquo;s really straightforward to use, with a few quality of life features thrown in. I won&amp;rsquo;t go into all the things you can do here - there are a lot more examples on the github page - &lt;a href="https://github.com/radoshi/llm-code">github.com/radoshi/llm-code&lt;/a>, but here&amp;rsquo;s a sample.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>llm-code &lt;span style="color:#e6db74">&amp;#39;write me a hello world program in rust&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-rust" data-lang="rust">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">fn&lt;/span> &lt;span style="color:#a6e22e">main&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">println!&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Hello World!&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Simple enough.&lt;/p>
&lt;p>Let&amp;rsquo;s get more complicated.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>llm-code &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&amp;#34;Write a python program that uses SQLAlchemy to model the following database class:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">id - int autoincrement primary key
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">name - string
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">phone - string
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">Add a function to create the database and a function to add a new entry to the database.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">from&lt;/span> sqlalchemy &lt;span style="color:#f92672">import&lt;/span> create_engine, Column, Integer, String
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">from&lt;/span> sqlalchemy.ext.declarative &lt;span style="color:#f92672">import&lt;/span> declarative_base
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">from&lt;/span> sqlalchemy.orm &lt;span style="color:#f92672">import&lt;/span> sessionmaker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Base &lt;span style="color:#f92672">=&lt;/span> declarative_base()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>engine &lt;span style="color:#f92672">=&lt;/span> create_engine(&lt;span style="color:#e6db74">&amp;#39;sqlite:///phonebook.db&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Session &lt;span style="color:#f92672">=&lt;/span> sessionmaker(bind&lt;span style="color:#f92672">=&lt;/span>engine)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">class&lt;/span> &lt;span style="color:#a6e22e">Contact&lt;/span>(Base):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> __tablename__ &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#39;contacts&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> id &lt;span style="color:#f92672">=&lt;/span> Column(Integer, primary_key&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">True&lt;/span>, autoincrement&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">True&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name &lt;span style="color:#f92672">=&lt;/span> Column(String)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> phone &lt;span style="color:#f92672">=&lt;/span> Column(String)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">create_database&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Base&lt;span style="color:#f92672">.&lt;/span>metadata&lt;span style="color:#f92672">.&lt;/span>create_all(engine)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">add_contact&lt;/span>(name, phone):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> session &lt;span style="color:#f92672">=&lt;/span> Session()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> new_contact &lt;span style="color:#f92672">=&lt;/span> Contact(name&lt;span style="color:#f92672">=&lt;/span>name, phone&lt;span style="color:#f92672">=&lt;/span>phone)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> session&lt;span style="color:#f92672">.&lt;/span>add(new_contact)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> session&lt;span style="color:#f92672">.&lt;/span>commit()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>create_database()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>add_contact(&lt;span style="color:#e6db74">&amp;#39;John Doe&amp;#39;&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;123-456-7890&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>That&amp;rsquo;s pretty darn good!&lt;/p>
&lt;h2 id="quality-of-life-features" class="group relative">Quality of life features&lt;a href="#quality-of-life-features" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>A common pattern that I&amp;rsquo;ve been using is to get the LLM to output something, examine it, and then do something with it. Copy-pasting console output becomes tedious, and in theory, one could use &lt;code>tee&lt;/code> to store it away, but what if the tool just cached the previous response and repeated it if you asked it exactly the same question?&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>llm-code &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&amp;#34;Write a python ...&amp;#34;&amp;#34;&amp;#34;&lt;/span> &amp;gt; contact.py
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>No round-trips to OpenAI necessary.&lt;/p>
&lt;p>Didn&amp;rsquo;t like the output? Want to reroll or use the more expensive GPT-4 model? No problem. Changing any parameters or using the &lt;code>-nc&lt;/code> option gets rid of the caching.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>llm-code --gpt-4 &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&amp;#34;Write a python ...&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="remembering-responses" class="group relative">Remembering responses&lt;a href="#remembering-responses" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;code>llm-code&lt;/code> by default stores all interaction with the llm in &lt;code>~/.llm_code/db.sqlite&lt;/code> (just like &lt;code>llm&lt;/code>). You can examine all old ouputs, even look at the input and output tokens to estimate costs (if that&amp;rsquo;s your thing). Recommend using &lt;a href="https://datasette.io/">&lt;code>Datasette&lt;/code>&lt;/a> to view this database easily, but any tool will suffice.&lt;/p>
&lt;h2 id="installation" class="group relative">Installation&lt;a href="#installation" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Install quickly using &lt;code>pipx&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>pipx install llm-code
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="configuration" class="group relative">Configuration&lt;a href="#configuration" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>You need an API key from OpenAI. Store it in an environment variable called &lt;code>OPENAI_API_KEY&lt;/code> or in an &lt;code>env&lt;/code> file in &lt;code>~/.llm_code/env&lt;/code>.&lt;/p>
&lt;h1 id="enjoy-coding-again" class="group relative">Enjoy coding again&lt;a href="#enjoy-coding-again" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>The whole goal of this tool is to help take some of the pain away from doing great software engineering. It&amp;rsquo;s very evident, after using Copilot and ChatGPT and now &lt;code>llm-code&lt;/code> that we&amp;rsquo;re in a whole new age of programming productivity. These tools don&amp;rsquo;t make software engineers obsolete - they give us super powers and help us go 10x faster.&lt;/p>
&lt;p>Happy coding!&lt;/p></description></item><item><title>A Shift in Focus</title><link>https://rushabhdoshi.com/posts/2023-05-20-a-shift-in-focus/</link><pubDate>Sat, 20 May 2023 08:22:20 -0700</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2023-05-20-a-shift-in-focus/</guid><description>&lt;h1 id="a-shift-in-focus" class="group relative">A Shift in Focus&lt;a href="#a-shift-in-focus" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;h2 id="more-ai-more-random-less-focused" class="group relative">More AI, more random, less focused&lt;a href="#more-ai-more-random-less-focused" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;em>I wrote this post as a catchup for &lt;a href="https://rushabh.substack.com/">my substack newsletter&lt;/a>. Reposting it here.&lt;/em>&lt;/p>
&lt;p>Hello dear reader! It’s been a while - nearly a year to be precise, since the last substack post. I’ve been writing more regularly on my blog but didn’t crosspost here because the content was simply not worthy of the lofty ambitions of this blog. This bar was a mistake - instead of worrying about writing content that meets some arbitrary expectations, I’m going to do away with those expectations completely. If you still find my content interesting - I’m glad to have you here.&lt;/p>
&lt;p>This substack is becoming a lot less focused on leadership and managerial things. I’m widening the aperture to include some life updates, but more important, my thoughts and musings on AI, with a bent toward generative AI.&lt;/p>
&lt;h2 id="quick-catchup" class="group relative">Quick catchup&lt;a href="#quick-catchup" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>A lot has happened in my life in the last year:&lt;/p>
&lt;p>I joined &lt;a href="digit.co">Digit&lt;/a> in March 2020, right as the pandemic started. I will remain forever grateful to Ethan Bloch for bringing me on this ride. It was incredible. Startups are amazing, highs and lows like nothing else.&lt;/p>
&lt;p>Digit was acquired by &lt;a href="oportun.com">Oportun&lt;/a> in December 2021. We spent some time integrating Digit into Oportun, building out Oportun’s app offering that ties Savings, Banking, and Lending in one place. I served as the interim CTO for 6 months, and eventually left in February 2023.&lt;/p>
&lt;p>Since February, after taking some time to do personal stuff, I’ve been diving deep into the world of Generative AI.&lt;/p>
&lt;h2 id="generative-ai" class="group relative">Generative AI&lt;a href="#generative-ai" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>OpenAI’s release of GPT-3 in 2022, followed by GPT-3.5 and GPT-4 has taken the world by storm. I firmly believe these large language models (LLMs) constitute a new platform shift and have materially moved humans closer to Artificial General Intelligence (AGI).&lt;/p>
&lt;p>I’m following a three-pronged approach to understanding GenAI:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Bottoms up education&lt;/strong> by reading the foundational papers, and following courses such as &lt;a href="https://course.fast.ai/">fast.ai&lt;/a>, cs231n, and Andrej Karpathy’s excellent &lt;a href="https://www.youtube.com/playlist?list=PLAqhIrjkxbuWI23v9cThsA9GvCAUhRvKZ">neural network zero-to-hero series&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Building demos using APIs&lt;/strong> and publishing them for others. I’ve primarily been using OpenAI’s API, and have dabbled some with other models hosted on replicate.com and 🤗 model hub. Projects are all published on my projects page.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Writing memos&lt;/strong> about the business impact and opportunities that are being created with this shift.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>I am fully in the AI hype bubble. Between reading lots of interesting writers like &lt;a href="https://substack.com/@oneusefulthing">Ethan Mollick&lt;/a> and &lt;a href="https://simonwillison.net/">Simon Willison&lt;/a>, writing a bunch of code, and talking to interesting people, my work life is quite full.&lt;/p>
&lt;h2 id="future-expectations" class="group relative">Future expectations&lt;a href="#future-expectations" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>This blog and newsletter are going to expand to include AI things. To keep a reasonable signal-to-noise ratio, I won’t repost summaries of things you read on Twitter.&lt;/p>
&lt;p>I hope you enjoy the content - if there are things that you’re particularly interested about that you’d like me to write, please drop me a line.&lt;/p></description></item><item><title>My Development Stack</title><link>https://rushabhdoshi.com/posts/2023-05-17-my-development-stack/</link><pubDate>Wed, 17 May 2023 22:01:05 -0700</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2023-05-17-my-development-stack/</guid><description>&lt;h1 id="my-development-stack" class="group relative">My Development Stack&lt;a href="#my-development-stack" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>I&amp;rsquo;ve been programming since for 30+ years now. There have been a few times in my life when I&amp;rsquo;ve felt like a kid in a candy shop who couldn&amp;rsquo;t &lt;em>wait&lt;/em> to get to their computer and start coding.&lt;/p>
&lt;h2 id="first---the-very-early-days-with-basic-and-a-junky-zx-spectrum-clone" class="group relative">First - the very early days with Basic and a junky ZX Spectrum clone.&lt;a href="#first---the-very-early-days-with-basic-and-a-junky-zx-spectrum-clone" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Everything was new and amazing and 🤯s were common. This was pre-internet, so we had to get programs on cassettes, load them up with, and then start to mess with them. The internet changed everything of course - programming took a bit of a hit as &lt;em>surfing&lt;/em> (the web kind, non-athletic nerd here, thanks) took over.&lt;/p>
&lt;h2 id="second---joining-google-in-2008" class="group relative">Second - joining Google in 2008.&lt;a href="#second---joining-google-in-2008" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>It&amp;rsquo;s hard to overstate how ahead of the rest of the industry Google was back then. Engineering practices that are considered obvious were anything but, except at Google. Code reviews were mandated, you could only choose amongst a few blessed languages, documentation was excellent, new libraries, tools, and infrastructure were being written every month that gave everyone super powers (protobufs, gfs, colossus, borg).&lt;/p>
&lt;h2 id="third---now" class="group relative">Third - now.&lt;a href="#third---now" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>LLMs are crazy and every week, I&amp;rsquo;m breaking a new frontier in coding. The development world has evolved greatly over the last 30 years and gotten significantly more &lt;em>complex&lt;/em>. This complexity is needed - as a species, we compute more than we&amp;rsquo;ve ever computed, and optimization matter. In the past, we&amp;rsquo;ve tried to wrap and hide this complexity by trying to create libraries that simplify things, only to inevitably run into the one time when we need to break the abstraction, and then everything goes to hell. However, a new fighter has entered the areana; two new fighters actually. One: LLMs in the co-pilot flavor, as an in-context assistant, and two: LLMs in the ChatGPT flavor, as an open-ended chatbot. Between these two, dealing with esoteric libraries, or arcane syntax, is easy again. I can write code in mostly-python and get correct python, or write code in english, and get mostly-python. Either way, coding is &lt;em>FUN&lt;/em> again.&lt;/p>
&lt;h1 id="the-stack" class="group relative">The Stack&lt;a href="#the-stack" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>If you&amp;rsquo;re doing any AI LLM stuff, your stack almost certainly involves either python or Typescript or both. I welcome this - I love python&amp;rsquo;s clean and efficient syntax and the batteries included philosophy of the Python community. With the development of newer languages like Mojo🔥, I expect Python becomes even more powerful (by potentially morphing into Mojo.)&lt;/p>
&lt;p>As a result, I&amp;rsquo;m all in on Python and believe that developing one&amp;rsquo;s Python familiarity and using it as the primary stack language is a good choice. Here is a list of libraries I&amp;rsquo;m using regularly. I intend to keep this list current as I continue to build things:&lt;/p>
&lt;h2 id="python-basics" class="group relative">Python basics&lt;a href="#python-basics" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>&lt;code>Pydantic&lt;/code>&lt;/strong> - provides nice class helpers, similar to &lt;em>dataclass&lt;/em>. By providing types, we get free validation while constructing objects, and serialization to dicts and JSON objects, both of which matter when dealing with OpenAi APIs (and other LLMs). &lt;code>pydantic[dotenv]&lt;/code> helps in dealing with setings and &lt;code>.env&lt;/code> files.&lt;/li>
&lt;li>&lt;strong>&lt;code>FastAPI&lt;/code>&lt;/strong> - My servers are pure JSON API servers, written in FastAPI. It makes writing servers a breeze, has async request handling (needed for dealing with LLMs because everything takes so long), generates OpenAPI specs automatically, along with a neat little frontend where you can play with the API directly.&lt;/li>
&lt;li>&lt;strong>&lt;code>jupyter&lt;/code>&lt;/strong> - I find it easy to tinker with things using a notebook, and then convert stuff to a library or app once I have a handle on things.&lt;/li>
&lt;li>&lt;strong>&lt;code>pytest&lt;/code>&lt;/strong> and &lt;strong>pytest-watch&lt;/strong> - Pytest has made unit testing a breeze. &lt;code>pytest-watch&lt;/code> just monitors files for change and runs your test in a loop. Open a shell, start &lt;code>ptw&lt;/code> and code away. Plus coverage is easy with &lt;code>pytest-cov&lt;/code>.&lt;/li>
&lt;li>&lt;strong>&lt;code>click&lt;/code>&lt;/strong> - Makes dealing with command line arguments a breeze eg. when writing a batch script.&lt;/li>
&lt;li>&lt;strong>&lt;code>poetry&lt;/code>&lt;/strong> - Great way to handle python package management. &lt;code>python -m venv venv&lt;/code> or &lt;code>virtualenv&lt;/code> or other options work great as well. Poetry is just easier.&lt;/li>
&lt;/ol>
&lt;p>Not critical but very useful:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>&lt;code>rich&lt;/code>&lt;/strong> - Provide prettier output for most objects. &lt;code>from rich import print as pprint&lt;/code> and then use &lt;code>pprint(obj)&lt;/code> to get beautiful output.&lt;/li>
&lt;/ol>
&lt;h2 id="ai-stuff" class="group relative">AI stuff&lt;a href="#ai-stuff" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>&lt;code>openai&lt;/code>&lt;/strong> - OG AI lib for LLM interactions. Great API out of the box and easy to use.&lt;/li>
&lt;/ol>
&lt;p>Interesting but not absolutely required:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>&lt;code>langchain&lt;/code>&lt;/strong> - Langchain is almost its own little world and you have to understand it to use it. Since its often a wrapper around a bunch of careful prompts, one doesn&amp;rsquo;t absolutely &lt;em>need&lt;/em> langchain and for a lot of applications, it&amp;rsquo;s overkill.&lt;/li>
&lt;li>&lt;strong>&lt;code>chromadb&lt;/code>&lt;/strong> or &lt;strong>&lt;code>pinecone&lt;/code>&lt;/strong> - Similarly, most people don&amp;rsquo;t need vectorstores. But if you do, they&amp;rsquo;re great options.&lt;/li>
&lt;/ol>
&lt;p>Early but interesting:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>&lt;code>marvin&lt;/code>&lt;/strong> - Build a chatbot quickly. The idea of an AI Function - essentially an &lt;code>ai_fn&lt;/code> decorator that you can stick on any function, give it a docstring, and let the LLM do the rest, is incredible.&lt;/li>
&lt;/ol>
&lt;h2 id="frontend-stuff" class="group relative">Frontend stuff&lt;a href="#frontend-stuff" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>My frontends are written in simple React. I compile them into a set of static files and serve them up via the same FastAPI server above. This gets rid of all the CORS crap (its coming from the same server, so its all fine) but adds an additional build step. Oh, and its not &lt;em>optimized&lt;/em> in the way some of the crazier Vercel/Next stuff is.&lt;/p>
&lt;p>To be honest, I find frontend work quite intimidating and challenging. There are thousands of JS packages and frameworks, and all seem to have slightly different ways of expressing the same underlying complexity - how to manage application state and get the UI to work with said state. I eventually broke through with an understanding of React, thanks to Josh Comeau&amp;rsquo;s excellent &lt;a href="https://www.joyofreact.com/">Joy of React course&lt;/a>. Still, I consider myself a 101 level frontend developer, so take everything with a grain of salt.&lt;/p>
&lt;p>One breakthrough tool for frontend coding has been Vite. It takes all the mess of packaging and bundling and minifying and whatnot, and just puts it all together in one thing. Just use Vite and simplify life.&lt;/p>
&lt;h2 id="test-coverage" class="group relative">Test coverage&lt;a href="#test-coverage" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Unit testing is (was) painful. Not only would you have to think of how to test your code, you&amp;rsquo;d have to then construct all the mock objects and inject dependencies and what not. Net result - I almost never unit tested non-production code.&lt;/p>
&lt;p>This has changed completely. I simply plug in my python code into ChatGPT and ask it to generate unit tests. It does a reasonably good job, I fix it up, have &lt;code>pytest&lt;/code> running continuously in the background, et voila! 100% code coverage for everything.&lt;/p>
&lt;p>It&amp;rsquo;s amazing to be coding toys with 100% coverage. Making changes and doing drastic surgery is just fine - unit tests are catching things left and right and if coverage drops, GPT fixes things up again.&lt;/p>
&lt;h1 id="the-joy-of-hacking" class="group relative">The Joy of Hacking&lt;a href="#the-joy-of-hacking" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>If you&amp;rsquo;re a recovering engineer like me, there has never been a better time to dive into coding again. The tools are amazing, there are new developments every day, and you can build things that were impossibly hard just a few years ago. I&amp;rsquo;d love to see your hacks and projects - please reach out on Twitter and drop me a line.&lt;/p></description></item><item><title>Are Foundational Model Companies Overvalued?</title><link>https://rushabhdoshi.com/posts/2023-03-29-foundational-model-companies/</link><pubDate>Wed, 29 Mar 2023 10:40:03 -0700</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2023-03-29-foundational-model-companies/</guid><description>&lt;p>&lt;em>Random thoughts on the valuation of foundational model companies&lt;/em>&lt;/p>
&lt;p>Companies like &lt;a href="openai.com">OpenAI&lt;/a>, &lt;a href="anthropic.com">Anthropic&lt;/a>, and Google are currently leading the development of foundational models, which are highly valued for their potential to unlock fast value across a range of industries. OpenAI&amp;rsquo;s ChatGPT, Github co-pilot, Bing&amp;rsquo;s search assistant, and Jasper&amp;rsquo;s writing assistant are examples of the value of foundational models in action. However, this moment may be short-lived, as new technologies and developments are likely to drastically reduce the cost of building and deploying foundational models.&lt;/p>
&lt;p>Firstly, the cost of training, deploying, and running distilled foundational models is expected to be significantly lower than that of traditional models. Distillation involves using a large, complex base model to train a smaller, more efficient model that performs just as well. This process is much cheaper than training a new model from scratch and is becoming increasingly common. As distillation becomes more widespread, the cost of training models will continue to decrease, making it possible for companies of all sizes to build and deploy sophisticated deep learning models.&lt;/p>
&lt;p>Secondly, while research costs will remain a significant expense for foundational model companies, it is expected that training and inference costs will eventually go to zero. Building a foundational model requires extensive research to develop a deep understanding of the data and how it can be effectively modeled, which will continue to require significant investment in research. However, as the field of deep learning matures, more and more people will train their models on the same publicly available datasets, such as Wikipedia. This will reduce the cost of acquiring and preparing training data, making it more affordable for companies to train their models. Additionally, advancements in hardware and software engineering will continue to drive down the cost of inference, and code optimizations and specialized hardware will enable more efficient training. As a result, the cost of training and inference will eventually go to zero, making it possible for companies of all sizes to build and deploy sophisticated deep learning models at a lower cost.&lt;/p>
&lt;p>Finally, foundational models are expected to become increasingly vertically integrated, without accruing value to foundational model companies like OpenAI. As advancements in hardware and software engineering continue to drive down the cost of inference and training, the value of foundational models will increasingly be captured by companies that integrate them into their products and services. For example, Replit trained Ghostwriter (their version of copilot) while Neeva trained their own search assistant, without relying on or integrating with OpenAI. This means that foundational model companies will need to adapt and innovate in new ways to continue to drive progress in the field of deep learning.&lt;/p>
&lt;p>In conclusion, while foundational models are here to stay, cost structures will evolve, making it harder for Foundational Model companies to exist without providing value added services on top, as others rush to clone these models and vertically integrate them into their own products.&lt;/p>
&lt;p>&lt;em>Written with ChatGPT, obviously.&lt;/em>&lt;/p></description></item><item><title>Persona</title><link>https://rushabhdoshi.com/projects/2023-3-28-persona/</link><pubDate>Wed, 29 Mar 2023 09:54:08 -0700</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/projects/2023-3-28-persona/</guid><description>&lt;h2 id="live-demo" class="group relative">&lt;a href="https://persona-vpn9.onrender.com/">Live Demo&lt;/a>&lt;a href="#live-demo" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/persona-screenshot.png" alt="Persona screenshot">&lt;/p>
&lt;p>A small chat bot to talk to a historical figure. I try to explore whether chat is a fundamentally
better didactic medium (I believe so) and play around with python and react.&lt;/p>
&lt;p>Github is private. Let me know if you want the code.&lt;/p>
&lt;p>YouTube screen cap: &lt;a href="https://youtu.be/guUCG5yh-Ws">https://youtu.be/guUCG5yh-Ws&lt;/a>&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/guUCG5yh-Ws?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div></description></item><item><title>Audio Summarizer</title><link>https://rushabhdoshi.com/projects/2023-03-09-audio-summarizer/</link><pubDate>Thu, 09 Mar 2023 07:04:42 +0530</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/projects/2023-03-09-audio-summarizer/</guid><description>&lt;p>&lt;a href="https://github.com/radoshi/audio-summarizer">https://github.com/radoshi/audio-summarizer&lt;/a>&lt;/p>
&lt;p>A toy summarizer for english language podcasts. Testing with audio lengths of 15-30 minutes. The summarizer uses OpenAI APIs to transcribe speech and generate summaries from the transcriptions.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/microphone.png" alt="DALL-E: 3d render of a stylish podcast microphone on a light yellow background">&lt;/p></description></item><item><title>That's a Wrap</title><link>https://rushabhdoshi.com/posts/2023-01-13-thats-a-wrap/</link><pubDate>Mon, 13 Feb 2023 18:27:05 -0800</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2023-01-13-thats-a-wrap/</guid><description>&lt;h1 id="thats-a-wrap" class="group relative">That&amp;rsquo;s a Wrap&lt;a href="#thats-a-wrap" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>Last week, I wrapped up my three year journey with Digit and Oportun.&lt;/p>
&lt;p>Grateful to so many - few I&amp;rsquo;d like to call out in particular.
First, &lt;strong>Ethan Bloch&lt;/strong> for bringing me along - from 🍕 at Delfina, to joining three days before the pandemic, to building products that helped people become financially healthier, to building a team that I&amp;rsquo;d go into the trenches with any day, to selling the company and getting acquired - it has been an EPIC journey. Thank you.&lt;/p>
&lt;p>Second, &lt;strong>Hemant Taneja&lt;/strong> for connecting me and Ethan in the first place so many years ago, and always being willing to take calls and give advice as we navigated our ship.&lt;/p>
&lt;p>Third, &lt;strong>Raul Vazquez&lt;/strong> and the Oportun team for acquiring us and making us feel welcome.&lt;/p>
&lt;p>Finally, to all my Digits, who are still at Oportun or have moved on to other adventures: I&amp;rsquo;d go into the trenches with you again anytime. 🫡&lt;/p>
&lt;h2 id="whats-next" class="group relative">What&amp;rsquo;s next?&lt;a href="#whats-next" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>I&amp;rsquo;m convinced that we are in the early innings of a sea change brought about by generative AI. I am going back into student and builder mode - figuring out the underlying technology and engineering, and imagining the products that could be built with it.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/dall-e-path-into-mountains.jpg" alt="A path into snow capped mountains">
&lt;em>DALL-E: a realistic painting of a path forward, climbing snow capped mountains, at sunrise, 16:9 aspect ratio&lt;/em>&lt;/p></description></item><item><title>Cloudflare 🤯</title><link>https://rushabhdoshi.com/posts/2022-11-15-cloudflare/</link><pubDate>Tue, 15 Nov 2022 00:05:02 -0800</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2022-11-15-cloudflare/</guid><description>&lt;p>I was trying to build a really simple redirector to get back into the mode of building and deploying things for real. It&amp;rsquo;s been a while - management and children don&amp;rsquo;t leave that much time for hacking on the side.&lt;/p>
&lt;p>I started by building a simple thing with &lt;a href="https://go.dev">Go&lt;/a>. I love Go. It&amp;rsquo;s simple and straightforward. I cheated. I used copilot to get me through rusty syntax. Copilot is amazing - easily worth the $10 per month. Got the go app built in about 15 mins (all it does is redirect rushabhdoshi.com/linkname to https://linktarget with a 301 or 302.)&lt;/p>
&lt;p>Okay cool, lets deploy. Started with Google Cloud. I guess I still have some part of me that is loyal to Google and wants to start there first. Oh boy, what a mess. Cloud Workers are terrible, lots of versioning issues with the new version being mostly complete and the old version being deprecated (familiar to any Googler). DNS redirects not working. Yikes.&lt;/p>
&lt;p>I dialed in the cavalry (aka my friend Brian.) He suggested looking at Cloudflare workers. I&amp;rsquo;d heard of them before without playing with them. Took another look.&lt;/p>
&lt;p>Workers are &lt;strong>super&lt;/strong> interesting. They deploy everywhere, in the same process. Only JS workers are supported because of this execution model. Anything that compiles to webasm neatly is fine (Rust, C++). Here is a &lt;a href="https://community.cloudflare.com/t/native-golang-support-for-workers/65896/8">great post by Kenton&lt;/a> detailing why Go isn&amp;rsquo;t supported (and unlikely to be supported anytime soon.)&lt;/p>
&lt;p>Okay, fine. It took about 15m to write the damn thing, how long can it take to rewrite it in JS? Turns out &amp;hellip; about 15m. TS really, but samesies.&lt;/p>
&lt;p>Deployment otoh - SO MUCH SIMPLER. Get the app up and running in one command. Fabulous. Now to fix DNS.&lt;/p>
&lt;p>This opened up another rabbit hole - getting Cloudflare to be my default nameserver instead of Google. Fairly straightforward instructions. I had another toy domain that I wasn&amp;rsquo;t using, so tried that out first. Smooth as butter. 👏🏽👏🏽👏🏽 Cloudflare - I&amp;rsquo;m starting to get really impressed. Created a small website there - &lt;a href="https://rad-labs.io">rad-labs.io&lt;/a> - and deployed it. Whoa.&lt;/p>
&lt;p>And then it turns out that Cloudflare has redirects &lt;em>built in&lt;/em>. 🤯&lt;/p>
&lt;p>Okay, so now we need to move this site off Github pages and on to Cloudflare. And add redirects. And Cloudflare autodeploys on commmit, so get rid of deploy.sh. ✅ ✅ ✅&lt;/p>
&lt;p>Holy smokes. So over the space of an evening - 2 hours really - I&amp;rsquo;ve gone from zero to:&lt;/p>
&lt;ul>
&lt;li>Moving DNS for both my domains to Cloudflare&lt;/li>
&lt;li>Deploying a brand new website.&lt;/li>
&lt;li>Moving rushabhdoshi.com to Cloudflare.&lt;/li>
&lt;li>Adding a redirector so &lt;a href="https://rushabhdoshi.com/go/coda">rushabhdoshi.com/go/coda&lt;/a> will go to Coda.&lt;/li>
&lt;/ul>
&lt;p>And &lt;em>it&amp;rsquo;s all free&lt;/em>.&lt;/p>
&lt;p>🫡 Cloudflare. You won me tonight.&lt;/p></description></item><item><title>Digit + Oportun</title><link>https://rushabhdoshi.com/posts/2022-01-20-digit-oportun/</link><pubDate>Thu, 20 Jan 2022 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2022-01-20-digit-oportun/</guid><description>&lt;p>&lt;img src="https://rushabhdoshi.com/assets/digit-oportun.jpg" alt="Digit + Oportun">
Happy 2022 everyone!&lt;/p>
&lt;blockquote>
&lt;p>We at &lt;a href="https://investor.oportun.com/news-releases/news-release-details/oportun-completes-acquisition-digit-neobanking-company-and">Digit joined forces&lt;/a> with &lt;a href="https://oportun.com/">Oportun&lt;/a> just before Christmas!&lt;/p>&lt;/blockquote>
&lt;p>2021 has been a wild year. We started the year by refocusing our efforts on building the world&amp;rsquo;s smartest bank account from the ground up. We strongly believe that people want to lead financially healthy lives but need help getting to their goals. We set out to extend our automatic savings functionality to the bank account. Your bank account should know how much money you need for upcoming liabilities, like your bills. It should set aside money for emergencies and other life goals. It should put money away for the long term in retirement and investment vehicles—all without you needing to do anything.&lt;/p>
&lt;p>After extensive beta testing, we rolled out &lt;a href="https://blog.digit.co/2021/09/16/what-is-direct.html">Digit Direct&lt;/a> toward the end of the year and started accepting members off our waiting list to sign up. We&amp;rsquo;ve been thrilled to see people using Direct, paying bills on time, and putting money away for a rainy day.&lt;/p>
&lt;p>At the same time, we found a fantastic opportunity to join forces with another company and a leader that shared the same values as Digit &amp;ndash; focusing on helping hardworking people achieve their financial goals. The more we learned about Oportun and &lt;a href="https://www.linkedin.com/in/vazquezraul/">Raul Vazquez&lt;/a>, the more excited we got. We had a complementary fit of mission, values, and products. By joining forces, we can build a complete set of financial solutions to meet the needs of every person in this country - from savings, banking, investing to credit and lending. In December of 2021, we completed the deal and closed the acquisition. The &lt;a href="https://finhealthnetwork.org/">Financial Health Network&lt;/a> &lt;a href="https://www.linkedin.com/pulse/fintech-force-good-oportun-digit-deal-points-yes-jennifer-tescher/?utm_content=189294931&amp;amp;utm_medium=social&amp;amp;utm_source=twitter&amp;amp;hss_channel=tw-149134805">wrote an excellent piece&lt;/a> that explains why we believe this merger can be a real force for good.&lt;/p>
&lt;p>This brings us to 2022. We are at the beginning of a journey to build a modern consumer financial service that is focused on helping hardworking people be financially healthy and achieve their goals. And even though we have a lot of the pieces, there is a lot to build. Digit is a distinct business unit within the Oportun family. If you&amp;rsquo;re excited to work in fintech, want the flexibility and culture of working at a startup with the stability and backing of a larger organization, join us at Digit. We are hiring for &lt;a href="https://digit.co/careers">various positions&lt;/a>, from IC to management, across product, design, engineering, and security.&lt;/p></description></item><item><title>Accelerate</title><link>https://rushabhdoshi.com/posts/2021-11-27-accelerate/</link><pubDate>Sat, 27 Nov 2021 12:24:16 -0800</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2021-11-27-accelerate/</guid><description>&lt;p>Accelerate was written in 2018 following four years of survey based research data compiled by its authors. In 2021, the book feels a bit dated: the practices mentioned in the book are treated as fairly commonplace in high performing software development organizations. Most of the ideas presented in the book make intuitive sense are accepted without much argument in today&amp;rsquo;s software companies. The link between presented ideas and team performance is based on survey measures. The authors do not make conclusive claims about the overall performance of a company (using their stock price for example) and good devops practices.&lt;/p>
&lt;p>The book is in three parts. The first is of interest to an engineering audience, the second goes into their survey methods, and the third is a case study. If actionable takeaways are the sole things of interest, most of the book can be skipped for Appendix A &lt;code>Capabilities to Drive Improvement&lt;/code>.&lt;/p>
&lt;h1 id="key-ideas" class="group relative">Key Ideas&lt;a href="#key-ideas" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;ol>
&lt;li>Software development team performance can be measured and improved.&lt;/li>
&lt;li>Teams that develop devops capabilities and follow good practices ship software faster, and at a higher quality. Teams are also happier and more retained.&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/accelerate-cover.png" alt="Accelerate cover">&lt;/p>
&lt;h1 id="performance-measurement" class="group relative">Performance Measurement&lt;a href="#performance-measurement" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>The authors assert that team performance can be measured. Prior attempts to measure team performance have been unsuccessful because they have focused on outputs rather than outcomes. For example, lines of code, or story points, are outputs. They are highly subjective. Instead, measures should focus on &lt;strong>global outcomes&lt;/strong>. Company level goals, for example, are global outcomes.&lt;/p>
&lt;p>I saw this idea implemented at Facebook where all functions &amp;ndash; engineering, product, design &amp;ndash; were graded on whether they achieved a common, measurable goal. This prevented the ownership disparity where one function owns the product outcome (&amp;ldquo;did likes go up by 1%?&amp;rdquo;) and another function owned stability (&amp;ldquo;the app had 99% uptime&amp;rdquo;).&lt;/p>
&lt;p>The authors recommend four performance indicators to measure software delivery:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Delivery lead time&lt;/strong>: Time from spec to full rollout. Does not include design lead time (time for design and specification development, nor iteration to get the product right.)&lt;/li>
&lt;li>&lt;strong>Deployment frequency&lt;/strong>: Faster is better.&lt;/li>
&lt;li>&lt;strong>Time to restore service&lt;/strong>: All systems fail. How quickly can a complex system be restored?&lt;/li>
&lt;li>&lt;strong>Change fail rate&lt;/strong>: What percentages of submitted PRs result in a patch, hotfix, or need to be rolled back.&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>[These results demonstrate that] there is no tradeoff between improving performance and achieving higher levels of stability and quality&lt;/p>&lt;/blockquote>
&lt;h1 id="capabilities" class="group relative">Capabilities&lt;a href="#capabilities" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>Team performance can be correlated to a base of capabilities that the teams have developed, broken down into five categories:&lt;/p>
&lt;h2 id="1-continuous-delivery" class="group relative">1. Continuous Delivery&lt;a href="#1-continuous-delivery" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>Defn: Set of capabilities that enable us to get changes of all kinds - features, configuration changes, bug fixes, experiments - into production or into the hands of users safely, quickly, sustainably.&lt;/p>&lt;/blockquote>
&lt;p>Capabilities&lt;/p>
&lt;ul>
&lt;li>Version control.&lt;/li>
&lt;li>Fully automated deployments. No manual scripts needed.&lt;/li>
&lt;li>Continuous integration. Each check-in triggers a set of tests to discover serious regressions.&lt;/li>
&lt;li>Trunk based development. Somewhat challenging with GitHub flow, but a straightforward idea nonetheless. Use extremely short lived branches.&lt;/li>
&lt;li>Test automation.&lt;/li>
&lt;li>Test data management. Maintaining clean test data is just as important.&lt;/li>
&lt;li>Shifting Left on security. Pull security reviews up in the early part of the development cycle. Infosec contributes to all parts of the software development. Use pre-approved libraries, packages, toolchains, and processes.&lt;/li>
&lt;li>Continuous delivery. Code check-ins result in changes getting pushed out all the way to customers.&lt;/li>
&lt;/ul>
&lt;h2 id="2-software-architecture" class="group relative">2. Software Architecture&lt;a href="#2-software-architecture" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Authors found no significant correlation between system type and delivery performance, with the exception of engineers working on custom software developed by another company (outsourcing partners).&lt;/p>
&lt;p>Capabilities&lt;/p>
&lt;ul>
&lt;li>Loosely coupled architecture&lt;/li>
&lt;li>Let teams choose their tools.&lt;/li>
&lt;/ul>
&lt;h2 id="3-product-and-process" class="group relative">3. Product and Process&lt;a href="#3-product-and-process" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The capabilities mentioned by the authors are implemented in most modern software shops and taken for granted. They do not discuss the difficulties of implementing some of these capabilities (eg. experimentation is great, assuming you have sufficient sample size to experiment with.)&lt;/p>
&lt;p>Capabilities&lt;/p>
&lt;ul>
&lt;li>Gather and implement customer feedback&lt;/li>
&lt;li>Everyone should understand how their work flows into the whole.&lt;/li>
&lt;li>Work in small batches.&lt;/li>
&lt;li>Enable team experimentation.&lt;/li>
&lt;/ul>
&lt;h2 id="4-lean-management" class="group relative">4. Lean Management&lt;a href="#4-lean-management" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Capabilities&lt;/p>
&lt;ul>
&lt;li>Limit work in progress&lt;/li>
&lt;li>Create and maintain visual displays showing key quality and productivity metrics and current status of work (including bugs)&lt;/li>
&lt;li>Use data from application performance and infrastructure monitoring tools to make decisions.&lt;/li>
&lt;li>Lightweight change monitoring: no approvals or peer-reviewed approvals to check-in code.&lt;/li>
&lt;li>Leaders should try and follow the principles of &lt;a href="https://en.wikipedia.org/wiki/Transformational_leadership">Transformational Leadership&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="5-culture" class="group relative">5. Culture&lt;a href="#5-culture" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The authors define Culture using Edgar Schein&amp;rsquo;s model in &lt;a href="https://www.google.com/books/edition/Organizational_Culture_and_Leadership/l2jpCgAAQBAJ">Organizational Culture and Leadership&lt;/a>. The model posits that culture built on three concepts&lt;/p>
&lt;ol>
&lt;li>Basic assumptions. These are not stated but implicitly agreed upon.&lt;/li>
&lt;li>Values. Stated missions and way we approach problems.&lt;/li>
&lt;li>Artifacts. Public and conspicious declarations of values and assumptions.&lt;/li>
&lt;/ol>
&lt;p>Authors use R. Westrum&amp;rsquo;s typology of organizational cultures:&lt;/p>
&lt;ol>
&lt;li>Pathological (power-oriented)&lt;/li>
&lt;li>Bureaucratic (rule-oriented)&lt;/li>
&lt;li>Generative (performance-oriented)&lt;/li>
&lt;/ol>
&lt;p>The goal for all organizations is to be a generative culture. Westrum posited that the culture predicts how information flows within an organization.&lt;/p>
&lt;p>The authors&amp;rsquo; theories on changing culture reminded me of &lt;a href="https://rushabhdoshi.com/posts/2021-02-15-switch/">Switch&lt;/a>, especially some of the analogies about the Elephant and the Rider, based on Jonathan Haidt&amp;rsquo;s work.&lt;/p></description></item><item><title>Working Backwards</title><link>https://rushabhdoshi.com/posts/2021-08-04-working-backwards/</link><pubDate>Wed, 04 Aug 2021 16:27:18 -0700</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2021-08-04-working-backwards/</guid><description>&lt;h1 id="key-takeaways" class="group relative">Key Takeaways&lt;a href="#key-takeaways" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;ol>
&lt;li>Establish and spell out leadership principles (see &lt;a href="#amazons-leadership-principles">Amazon&amp;rsquo;s fourteen leadership principles&lt;/a>). Enforce these principles through &lt;em>mechanisms&lt;/em>. Three mechanisms extensively used at Amazon: annual planning process, S-Team goals process, and compensation plan.&lt;/li>
&lt;li>Create Single Threaded Leadership to drive autonomy and accountability. See &lt;a href="#single-threaded-leadership">Single Threaded Leadership&lt;/a>&lt;/li>
&lt;li>Communicate using longform narratives instead of powerpoint. Two extensively used narrative styles are the Six-Pager and the PR/FAQ. Meetings start with a silent read of the document, followed by discussion and debate. See &lt;a href="#communication">Communication&lt;/a>.&lt;/li>
&lt;li>Depict your flywheel. Understand how inputs translate into outputs, which in turn affect inputs. Focus on defining, measuring, and analyzing controllable input metrics. Weekly metrics review is the most important operational meeting. See &lt;a href="#metrics">metrics&lt;/a>&lt;/li>
&lt;/ol>
&lt;p>In addition, the book provides a good historical narrative on the creation of the Kindle, Prime, and AWS.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/working-backwards-cover.jpg" alt="Working Backwards cover image">&lt;/p>
&lt;h1 id="amazons-leadership-principles" class="group relative">Amazon&amp;rsquo;s Leadership Principles&lt;a href="#amazons-leadership-principles" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;ol>
&lt;li>&lt;strong>Customer obsession&lt;/strong>. Start with the customer and work backwards. Work vigorously to earn and keep customer trust. Keep an eye on the competition but obsess over customers.&lt;/li>
&lt;li>&lt;strong>Ownership&lt;/strong>. Think long term and don&amp;rsquo;t sacrifice long-term value for short-term results. Act on behalf of the entire company. Nothing is &amp;ldquo;not my job.&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>Invent and Simplify&lt;/strong>. Expect and require innovation and invention from teams and find ways to simplify. Look for new ideas everywhere and don&amp;rsquo;t limit by &amp;ldquo;not invented here.&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>Be Right, A Lot&lt;/strong>. Leaders are right a lot. They have strong judgement and good instincts. They seek diverse perspectives and work to disconfirm their beliefs.&lt;/li>
&lt;li>&lt;strong>Learn and Be Curious&lt;/strong>. Leaders are never done learning and seek to improve themselves. They are curious about new possibilities.&lt;/li>
&lt;li>&lt;strong>Hire and Develop the Best.&lt;/strong> Raise the performance bar with every hire. Recognize exceptional talent and be willing to move them anywhere in the organization. Leaders develop leaders and take the coaching role seriously.&lt;/li>
&lt;li>&lt;strong>Insist on High Standards&lt;/strong>. Have relentlessly high standards. Continuously raise the bar and drive the teams to deliver high-quality products, services, and processes. Ensure that defects do not get sent down the line and fixed things stay fixed.&lt;/li>
&lt;li>&lt;strong>Think Big&lt;/strong>. Create and communicate a bold direction that inspires results. Think differently and look around corners to fulfill customers.&lt;/li>
&lt;li>&lt;strong>Bias for Action&lt;/strong>. Speed matters. Take calculated risks. Reversible decisions do not need extensive study.&lt;/li>
&lt;li>&lt;strong>Frugality&lt;/strong>. Accomplish more with less. Constraints breed resourcefulness, self-sufficiency, and innovation.&lt;/li>
&lt;li>&lt;strong>Earn Trust&lt;/strong>. Listen attentively, speak candidly, and treat others respectfully. Be vocally self-critical, even when doing so is awkward or embarrasing.&lt;/li>
&lt;li>&lt;strong>Dive Deep&lt;/strong>. Operate at all levels, stay connected to the details, audit frequently, and be skeptical when metrics and anecdotes differ. No task is beneath them.&lt;/li>
&lt;li>&lt;strong>Disagree and Commit&lt;/strong>. Respectfully challenge decisions when you disagree. Have conviction and be tenacious. Do not compromise for the sake of social cohesion. Once a decision is made, commit fully.&lt;/li>
&lt;li>&lt;strong>Deliver results&lt;/strong>. Focus on the key inputs and deliver results with the right quality and in a timely fashion. Never settle.&lt;/li>
&lt;/ol>
&lt;h1 id="mechanisms" class="group relative">Mechanisms&lt;a href="#mechanisms" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>Mechanisms bring leadership principles to life. Three key mechanisms are the annual plan, S-Team goals, and compensation philosophy.&lt;/p>
&lt;p>&lt;strong>Annual plan&lt;/strong> (Operating Plan 1, OP1) is a detailed plan that includes an assessment of past performance, key initiatives for the following year, a detailed income statement, and requests for resources (headcount, marketing budget, equipment budget, and other fixed assets.)&lt;/p>
&lt;p>&lt;strong>S-Team goals&lt;/strong> (there are lots) are detailed list of input-metric focused goals. They are aggressive and leaders are expected to hit 75% of them.&lt;/p>
&lt;p>&lt;strong>Compensation&lt;/strong> is heavily biased toward the long term, on purpose. Rewarding short-term goals at the expense of long term value creation, or rewarding the achievement of localized departmental milestones at the expense of company impact, are considered anti-patterns for compensation.&lt;/p>
&lt;h1 id="single-threaded-leadership" class="group relative">Single Threaded Leadership&lt;a href="#single-threaded-leadership" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;blockquote>
&lt;p>The best way to fail at inventing something is by making it somebody&amp;rsquo;s part-time job.&lt;/p>&lt;/blockquote>
&lt;p>Started with 2-pizza teams, evolved into single threaded leadership. 2-pizza teams were a good idea &amp;ndash; small, autonomous teams, that were evaluated by a &amp;ldquo;fitness function&amp;rdquo; (weighted average of a number of metrics). However, in practice, they turned out to not be the best solution for all problems (some products needed more investment, lots of arguments over the fitness function, hard to find great 2-pizza team leaders.)&lt;/p>
&lt;p>2-pizza teams evolved into Single Threaded Leadership, where a particular person was given autonomy and ownership to build and grow chunks of the Amazon business.&lt;/p>
&lt;h1 id="communication" class="group relative">Communication&lt;a href="#communication" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>No slides. Amazon wants narrative documents. Two key docs:&lt;/p>
&lt;ol>
&lt;li>Six pager. Used to describe and review any idea, process, or business. No particular template; intended to go into detail about the idea being discussed.&lt;/li>
&lt;li>PR/FAQ. Key to &amp;ldquo;Working Backwards&amp;rdquo; Press Release shows customer centricity and brings out potential problems up front. Internal FAQ goes into detail around expected questions e.g. What is the TAM? How much will it cost?&lt;/li>
&lt;/ol>
&lt;h2 id="prfaq-structure" class="group relative">PR/FAQ structure&lt;a href="#prfaq-structure" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>PR structure&lt;/p>
&lt;ol>
&lt;li>Heading&lt;/li>
&lt;li>Subheading&lt;/li>
&lt;li>Summary paragraph&lt;/li>
&lt;li>Problem paragraph&lt;/li>
&lt;li>Solution paragraph&lt;/li>
&lt;li>Quotes and Getting Started&lt;/li>
&lt;/ol>
&lt;p>FAQ is less structured&lt;/p>
&lt;ol>
&lt;li>TAM&lt;/li>
&lt;li>Economics and P&amp;amp;L&lt;/li>
&lt;/ol>
&lt;h1 id="metrics" class="group relative">Metrics&lt;a href="#metrics" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>Metric focus is on managing inputs because the CEO or other leaders rarely have complete control over their output metric (e.g. share price).&lt;/p>
&lt;p>&lt;strong>Weekly Business Review&lt;/strong> is a weekly meeting to go over all the metrics in detail. Presented as a detailed deck, comprising mostly of charts, graphs, and data tables. Review emerging patterns. Plots of graphs against comparable previous times (week-over-week or month-over-month or year-over-year).&lt;/p>
&lt;p>During the review, the focus is on variances and not on business-as-usual. Business owners are responsible for understanding and explaining variances.&lt;/p>
&lt;h2 id="metrics-lifecycle" class="group relative">Metrics Lifecycle&lt;a href="#metrics-lifecycle" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ol>
&lt;li>Select and define the metrics to measure.&lt;/li>
&lt;li>Understand the flywheel. How do input metrics lead to output metrics and back again.&lt;/li>
&lt;li>Identify the correct, controllable input metrics. This step sounds simple but can be very tricky. A mistake here will result in the wrong outcome.&lt;/li>
&lt;li>Measure.&lt;/li>
&lt;li>Analyze: develop a comprehensive understanding of what drives the metrics. Use the 5-Whys method to understand what is going on.&lt;/li>
&lt;li>Improve. Once the previous steps are fulfilled, you can improve upon your metrics.&lt;/li>
&lt;/ol></description></item><item><title>Taming Slack</title><link>https://rushabhdoshi.com/posts/2021-08-02-taming-slack/</link><pubDate>Sun, 01 Aug 2021 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2021-08-02-taming-slack/</guid><description>&lt;p>&lt;img src="https://rushabhdoshi.com/assets/slack.jpg" alt="Slack logo">
&lt;em>Photo by &lt;a href="https://unsplash.com/@scottwebb?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText">Scott Webb&lt;/a> on &lt;a href="https://unsplash.com/s/photos/slack?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText">Unsplash&lt;/a>&lt;/em>&lt;/p>
&lt;p>&lt;a href="https://digit.co">Digit&lt;/a> is a Slack-only company. While we use email for automated alerts and GitHub emails, nearly all of our communication happens on Slack. We&amp;rsquo;re north of 100 employees, and without proper usage, Slack can get incredibly noisy and distracting.&lt;/p>
&lt;p>While one may be tempted to blame Slack, the root of the problem is human communication &amp;ndash; communication volume grows quadratically with the growth of a community. Organizational hierarchies are one solution to this problem: they impose a tree-like communication structure that, in theory, dampens the volume of communication. However, deeply hierarchical organizations have other issues, resulting in modern companies trying to be &amp;ldquo;flat.&amp;rdquo; In a flat, trusting, information-should-be-free company, there are &lt;em>lots&lt;/em> of messages floating around.&lt;/p>
&lt;p>Using Slack in such an environment gives rise to some common anti-patterns:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Missed messages&lt;/strong>. Important messages that need a response get buried in a sea of business-as-usual stuff. To ensure that everyone reads important messages, people start using &lt;code>@here&lt;/code> and &lt;code>@channel&lt;/code>&lt;/li>
&lt;li>&lt;strong>Channel disorganization&lt;/strong>. Lots of channels, lots of messages. Nobody knows the &amp;ldquo;right&amp;rdquo; channel to post or follow a particular message. So people post to the most convenient channel, often breaking a team&amp;rsquo;s flow or causing problem #1.&lt;/li>
&lt;li>&lt;strong>Interwoven threads&lt;/strong>. We commonly have more than one conversation going on at any time in one channel. Because each message is a top-level object, multiple conversations get woven together, making one stream challenging to follow.&lt;/li>
&lt;li>&lt;strong>No inbox zero&lt;/strong>. For people (like me) who like to clear their queues, Slack can be challenging. Where do you store messages that you want to get to later?&lt;/li>
&lt;/ol>
&lt;p>Not all of these problems are specific to Slack. We&amp;rsquo;ve certainly seen variants of all of these with email. Email has had a more extended timeframe for people to build tooling around it and specialize to suit their needs. Slack is &lt;em>relatively&lt;/em> new &amp;ndash; and so we have a greater need to develop conventions from scratch.&lt;/p>
&lt;p>Here are some of the things that have worked to help tame Slack, divided into team-related conventions and personal workflow.&lt;/p>
&lt;h1 id="team-practices" class="group relative">Team Practices&lt;a href="#team-practices" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;h2 id="1-have-a-channel-naming-convention" class="group relative">1. Have a channel naming convention&lt;a href="#1-have-a-channel-naming-convention" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Channels in Slack are free and can explode. Channel names should signify a channel&amp;rsquo;s purpose. Names help people understand where to post things without having to read through all the channel&amp;rsquo;s content. For example, &lt;code>#engineering-fyi&lt;/code>, &lt;code>#product-fyi&lt;/code>, &lt;code>#release-fyi&lt;/code>, and other &lt;code>#-fyi&lt;/code> channels are meant for important information about a particular topic. They are generally low volume, but when you see something pop up, it&amp;rsquo;s probably critical. &lt;code>#savings-team&lt;/code>, &lt;code>#onboarding-team&lt;/code>, and other &lt;code>#-team&lt;/code> channels, on the other hand, are for everyday team conversations. High volume, a mix of business and banter, generally not intended for people who are not on the team (but we keep them public, more on that later.) Some channels (e.g. &lt;code>#feedback&lt;/code>) have specific conventions associated with them and automated bots to help run these channels. &amp;ldquo;&lt;a href="https://slack.com/blog/productivity/assign-and-complete-how-to-run-a-triage-channel">How to run a triage channel&lt;/a>&amp;rdquo; is an excellent example of a triage channel, which we implemented using a custom slack bot.&lt;/p>
&lt;h2 id="2-encourage-threaded-replies" class="group relative">2. Encourage threaded replies&lt;a href="#2-encourage-threaded-replies" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>For high-volume channels, a conversation can become difficult to follow if messages are interspersed. Essential conversations can get lost or be left incomplete while being hard to follow for interested parties. This problem is more acute in broad channels than DMs or small groups. Using threaded replies solves this problem &amp;ndash; however, getting everyone to use threaded replies is challenging. We use a cute &lt;code>:shame:&lt;/code> emoji to gently remind people to use threaded replies &amp;ndash; it works well, and people laugh at the inevitable slip-ups.&lt;/p>
&lt;h2 id="3-ban-here-and-channel" class="group relative">3. Ban &lt;code>@here&lt;/code> and &lt;code>@channel&lt;/code>&lt;a href="#3-ban-here-and-channel" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;code>@mentions&lt;/code> can be incredibly distracting because they notify people in most circumstances. &lt;code>@channel&lt;/code> and &lt;code>@here&lt;/code> take this distraction to a new level by notifying everyone in a channel; when used in a broad channel, like &lt;code>#fyi&lt;/code> can essentially notify the entire company. There are certain rare occasions when breaking through peoples&amp;rsquo; filters is necessary: &lt;code>@channel we're shutting down the office because of covid-19&lt;/code>. In most cases, however, using these notification mechanisms is rude and should be avoided. It assumes that people don&amp;rsquo;t read their Slack messages or that whatever you&amp;rsquo;re posting is important enough that they need to look at it &lt;em>now&lt;/em>. &lt;code>@here&lt;/code> makes very little sense in a distributed, remote world &amp;ndash; but teams tend to use it as a sort of lightweight &lt;code>@channel&lt;/code>, as if notifying the people who happen to be working right now is okay, but notifying others is not. There are circumstances where these make sense: &lt;code>@here I'm locked out, can someone please open the door&lt;/code> but other than that, these should be banned.&lt;/p>
&lt;h2 id="4-discourage-group-dms" class="group relative">4. Discourage group DMs&lt;a href="#4-discourage-group-dms" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>How many times have you started a &amp;ldquo;quick message&amp;rdquo; between a few colleagues as a group DM, which has subsequently escalated into an entire meaningful conversation, which needs some more people &amp;hellip; and you&amp;rsquo;re stuck. Because Slack doesn&amp;rsquo;t allow expanding group DMs (come on, Slack folks!) There is a solution - it&amp;rsquo;s free and easy &amp;ndash; it&amp;rsquo;s called a channel. Just convert group DMs into a private channel as soon as possible. We encourage people to start public channels for brief discussions with a naming convention - &lt;code>#tmp-something-something&lt;/code> - and archive it once complete. Group DMs aren&amp;rsquo;t indexed well either and generally suck. Channels are free; use them.&lt;/p>
&lt;h2 id="5-post-in-the-right-channel-cross-post-for-visibility" class="group relative">5. Post in the right channel, cross-post for visibility&lt;a href="#5-post-in-the-right-channel-cross-post-for-visibility" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Often, we don&amp;rsquo;t know where we should post a particular message. Not knowing is okay &amp;ndash; we post in a broad channel and ask or take our best guess. Have a little emoji to indicate that you should probably ask the question in a different channel: we use &lt;code>:polite-racoon:&lt;/code>. Sometimes, a message is important enough for a few related channels. We post the message to the most appropriate channel in such cases and share it (Slack &lt;code>s&lt;/code>) to other channels.&lt;/p>
&lt;h2 id="6-setup-emoji-conventions" class="group relative">6. Setup emoji conventions&lt;a href="#6-setup-emoji-conventions" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Slack doesn&amp;rsquo;t let people know you&amp;rsquo;ve read their message or taken care of something: a vexing problem when, for example, delegating something to someone. We use the &lt;code>👀 :eyes:&lt;/code> emoji to indicate that we&amp;rsquo;ve read something, ✅ &lt;code>:white_check_mark:&lt;/code> to suggest that something has been taken care of. Some channels have even more specific emoji conventions in use, but people broadly understand these two across the company. When we have a call to action, we post a message similar to &lt;code>Please do this task and ✅ this when you've done it.&lt;/code> &amp;ndash; this helps us keep track of who&amp;rsquo;s done something, and we can follow up accordingly.&lt;/p>
&lt;h1 id="personal-tips" class="group relative">Personal Tips&lt;a href="#personal-tips" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>Team tips are great to help the whole team use Slack in the same way. To achieve productivity zen, you need to combine these with ways to manage your unread queues and reach inbox zero.&lt;/p>
&lt;h2 id="1-use-mute-liberally" class="group relative">1. Use &lt;code>/mute&lt;/code> liberally&lt;a href="#1-use-mute-liberally" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Lots of channels mean lots of messages. Everyone wants to be in the loop on everything, but the reality is, much like world news, most of it doesn&amp;rsquo;t affect you daily. To get some control over information overload (so you&amp;rsquo;re not just reading slack messages all day), you can do two things: leave irrelevant channels or mute them. I prefer to mute them to read them at my leisure, without affecting my unread count or showing up in my Unread section.&lt;/p>
&lt;h2 id="2-use-remind-or-save-to-keep-your-gtd-flow" class="group relative">2. Use &lt;code>/remind&lt;/code> or &lt;code>Save&lt;/code> to keep your GTD flow&lt;a href="#2-use-remind-or-save-to-keep-your-gtd-flow" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>There are two GTD flows that I&amp;rsquo;ve seen people use (or some mix of both): Remind and Save. Remind essentially takes a message and asks Slack to bring it back as unread in some time: similar to Gmail&amp;rsquo;s snooze feature (itself of Inbox fame.) The Slack command is &lt;code>/remind&lt;/code>.&lt;/p>
&lt;p>The alternative is to use a queue and clear it every morning and evening (or whatever cadence suits you.) Clearing queues is my preferred approach &amp;ndash; I use Save or hotkey `a&amp;rsquo; when reading my messages &amp;ndash; to keep track of things I need to get back to.&lt;/p>
&lt;h2 id="3-use-scheduled-posts-for-after-hours-posting" class="group relative">3. Use scheduled posts for after-hours posting&lt;a href="#3-use-scheduled-posts-for-after-hours-posting" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>While we operate on mostly west coast hours, we&amp;rsquo;re split all over the world. Moreover, we all have different working schedules &amp;ndash; with my family, I sign out starting around 5 pm but am incredibly productive between 9 pm - 1 am (a combination of my night owl-ness and my family sleeping peacefully.) However, sending people tons of slack messages at midnight is &amp;hellip; &lt;em>not good&lt;/em>. It can come across as a poor work flex (look at how hard I&amp;rsquo;m working), and it doesn&amp;rsquo;t work: you&amp;rsquo;re not going to get replies in the middle of the night anyway. So use scheduled posting (🙏🏽🙏🏽🙏🏽 Slack for finally shipping this) to post at more reasonable hours. Alternately, I queue up some drafts and fire them off first thing in the morning.&lt;/p>
&lt;h2 id="4-use-notify-me-for-threaded-conversations" class="group relative">4. Use &lt;code>Notify me&lt;/code> for threaded conversations&lt;a href="#4-use-notify-me-for-threaded-conversations" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Sometimes you&amp;rsquo;ll see a fascinating topic, but you&amp;rsquo;ll lose out on the subsequent conversation because your team uses threads. Instead of chiming in with a &lt;code>Following&lt;/code> or similar message, you can hit the ⠇ button on the thread and ask Slack to notify you of future updates. Now everything shows up in your threaded list and is easy to clear, like any other queue.&lt;/p>
&lt;h2 id="5-quickly-read-through-all-unreads-and-threads" class="group relative">5. Quickly read through &lt;code>All Unreads&lt;/code> and &lt;code>Threads&lt;/code>&lt;a href="#5-quickly-read-through-all-unreads-and-threads" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Both of these help me go through all incoming messages rapidly and clear my queues. When I find myself consistently thumbing through a particular channel without responding to it, I mute it.&lt;/p>
&lt;h2 id="6-organize-channels-by-topic" class="group relative">6. Organize channels by topic&lt;a href="#6-organize-channels-by-topic" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Slack launched custom sections to allow creating folders for channel organization. Folders let me manage my channels by topic, such as &amp;ldquo;team,&amp;rdquo; or &amp;ldquo;recruiting,&amp;rdquo; or &amp;ldquo;engineering.&amp;rdquo;&lt;/p>
&lt;p>I hope these tips are helpful. If there are other things you or your organization do to make Slack usage more effective, I&amp;rsquo;d love to know - please drop me an email or DM.&lt;/p>
&lt;p>Thanks to &lt;a href="https://coda.io/@david/david-kossnick">David Kossnick&lt;/a> for thoughtful suggestions and edits.&lt;/p></description></item><item><title>Are Your Lights On</title><link>https://rushabhdoshi.com/posts/2021-05-23-are-your-lights-on/</link><pubDate>Sun, 23 May 2021 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2021-05-23-are-your-lights-on/</guid><description>&lt;p>&amp;ldquo;Are Your Lights On&amp;rdquo; is a humorous exploration into the heart of Problem Solving. The book is fun, light-hearted, and profound, all at the same time.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/books/are-your-lights-on.jpg" alt="Book cover">&lt;/p>
&lt;h2 id="allegory" class="group relative">Allegory&lt;a href="#allegory" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The book&amp;rsquo;s namesake allegory goes thus:
There is a tunnel through a mountain, leading to beautiful Switzerland. As the engineer building the tunnel, you put a sign at the start that says
WARNING: TUNNEL AHEAD
PLEASE TURN YOUR HEADLIGHTS ON&lt;/p>
&lt;p>After going through the tunnel, tourists regularly stop by the roadside to take in the beautiful views and have a picnic. However, they also forget to turn on their headlights, leading to an unwelcome surprise at the end of their lovely picnic: their car no longer starts because the battery has been drained.&lt;/p>
&lt;p>As the engineer in charge of the tunnel, you must solve this problem. How should you do it?&lt;/p>
&lt;p>The book explores a variety of questions that help one explore the heart of the problem:
Whose problem is it?
What is the actual problem?
Should this problem be solved?
What is a good solution?&lt;/p>
&lt;p>In the case of our intrepid engineer, the problem is relatively straightforward, but the solution ranges from the over-complicated (put a sign that says turn your lights off, except if it&amp;rsquo;s night, in which case leave them on) to a gentle nudge. We learn that putting up a simple sign at the end of the tunnel does the trick.
ARE YOUR LIGHTS ON?&lt;/p>
&lt;h2 id="key-ideas" class="group relative">Key Ideas&lt;a href="#key-ideas" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Problem solvers rush in with solutions before taking the time to define the problem being solved. Even experienced people fall into this trap, exacerbated by social pressure and a demand for haste. When in this mode, people find many solutions and compete for acceptance of a favored solution; they accuse each other of not being open to a particular solution or an alternate point of view.&lt;/p>
&lt;p>The authors suggest a deeper exploration of the problem itself before jumping into coming up with solutions. In particular, they suggest asking some questions:&lt;/p>
&lt;h3 id="what-is-the-problem" class="group relative">What is the problem?&lt;a href="#what-is-the-problem" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>A problem is defined as &lt;code>The difference between things as desired and things as perceived.&lt;/code>&lt;/p>
&lt;p>People often pass on a solution as the problem definition; it isn&amp;rsquo;t. Especially if it&amp;rsquo;s your solution method.&lt;/p>
&lt;p>Defining the problem is very important: small word changes can substantially alter the problem definition. Play with it until it&amp;rsquo;s right.&lt;/p>
&lt;h3 id="whose-problem-is-it" class="group relative">Whose problem is it?&lt;a href="#whose-problem-is-it" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Close the gap between the person experiencing the problem and the person solving the problem.&lt;/p>
&lt;h3 id="where-does-the-problem-come-from" class="group relative">Where does the problem come from?&lt;a href="#where-does-the-problem-come-from" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Was it created by someone, e.g., an examination problem? These problems are often Puzzles, not Problems.&lt;/p>
&lt;h3 id="do-we-really-want-to-solve-the-problem" class="group relative">Do we really want to solve the problem?&lt;a href="#do-we-really-want-to-solve-the-problem" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Solutions beget other problems. Thus one problem is displaced with another problem. Our goal is to simply replace the current issue with one that is more tolerable (or one that doesn&amp;rsquo;t affect us.)&lt;/p>
&lt;p>Not every problem should be solved. People may not know what they are asking for until you give it to them (and then they realize it isn&amp;rsquo;t.)&lt;/p>
&lt;p>We never have enough time to consider whether we want it, but we have plenty of time to regret it.&lt;/p></description></item><item><title>Building Cathedrals</title><link>https://rushabhdoshi.com/posts/2021-04-27-building-cathedrals/</link><pubDate>Tue, 27 Apr 2021 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2021-04-27-building-cathedrals/</guid><description>&lt;p>&lt;img src="https://rushabhdoshi.com/assets/york-minster-cathedral.jpg" alt="York Minster Cathedral">
&lt;em>The York Minster Cathedral took 242 years to build &lt;a href="https://commons.wikimedia.org/w/index.php?curid=7305844">Photo by MatzeTrier CC BY-SA 3.0&lt;/a>&lt;/em>&lt;/p>
&lt;p>Building great products takes enormous hard work over a long time. When we&amp;rsquo;re deep in the execution tunnel, blocking and tackling the problems that come our way, we can lose sight of the greater goal. Whenever that happens, motivation sinks, and both the volume out of output and the quality of work suffer.&lt;/p>
&lt;p>We have to remind ourselves and our teams of the greater purpose constantly. What is the big problem we&amp;rsquo;re solving? Why does it matter? Where does it go over the next decade?&lt;/p>
&lt;p>One of my favorite stories:&lt;/p>
&lt;p>Two bricklayers are busy at work.&lt;/p>
&lt;p>You walk up to them and ask: &amp;ldquo;What is your job?&amp;rdquo; &amp;ldquo;I&amp;rsquo;m laying bricks,&amp;rdquo; they say.&lt;/p>
&lt;p>Ask the second: &amp;ldquo;What is your job?&amp;rdquo; and they reply: &amp;ldquo;I&amp;rsquo;m building a cathedral.&amp;rdquo;&lt;/p>
&lt;p>We are all building cathedrals. We need the occasional reminder because we have to lay down a million bricks.&lt;/p></description></item><item><title>Complex Problem Solving: The Ever Given Saga</title><link>https://rushabhdoshi.com/posts/2021-04-19-complex-problem-solving/</link><pubDate>Sun, 18 Apr 2021 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2021-04-19-complex-problem-solving/</guid><description>&lt;h2 id="the-problem" class="group relative">The Problem&lt;a href="#the-problem" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The Ever Given ran aground March 23rd, 2021, at 05:40 GMT and blocked the Suez canal.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/problem-solving/evergreen-locator.jpg" alt="">
via &lt;a href="https://www.nytimes.com/2021/03/29/world/suez-canal-ship.html">NYTimes&lt;/a>&lt;/p>
&lt;p>The ship was stuck like a giant windsail in the middle of a sandstorm with 46 mph winds.&lt;/p>
&lt;p>Ships operating in constricted waterways like the Suez are subject to the &lt;code>Bank effect&lt;/code>: the ship&amp;rsquo;s stern tends to stick closer to the bank.&lt;/p>
&lt;p>Between being pushed by the wind and due to the bank effect, the ship&amp;rsquo;s stern ran into the left bank, followed by the bow going into the right bank, completely blocking the canal. Here&amp;rsquo;s a &lt;a href="https://digg.com/video/heres-the-disastrous-path-the-ever-given-cargo-ship-took-before-getting-stuck-in-the-suez-canal">great video showing the ship&amp;rsquo;s maneuvering difficulties&lt;/a>.&lt;/p>
&lt;p>Modern ships have a bulbous bow: a protrusion at the bow (or front) of a ship just below the waterline. The bulb modifies the way the water flows around the &lt;a href="https://en.wikipedia.org/wiki/Hull_(watercraft)">hull&lt;/a>, reducing drag and thus increasing speed, range, fuel efficiency, and stability. Here&amp;rsquo;s a great &lt;a href="https://www.youtube.com/watch?v=6FrCusDG41U&amp;amp;ab_channel=CasualNavigation">video explaining what a bulbous bow is for&lt;/a>.&lt;/p>
&lt;p>What&amp;rsquo;s not evident in this widely shared photo was just how deep the bow was wedged into the ground.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/problem-solving/wedged.jpg" alt="">
Suez Authority Facebook Page, via &lt;a href="https://gcaptain.com/tug-boats-suez-canal-ever-given/">gCaptain&lt;/a>&lt;/p>
&lt;p>I won&amp;rsquo;t go into why this was a huge deal - the press focused enough on the economic implications of the Suez shutdown: delays in the global supply chain, lost revenue for the Egyptian government, millions of dollars of losses for shipping and container companies; the list goes on.&lt;/p>
&lt;h2 id="what-is-the-problem" class="group relative">What is the Problem?&lt;a href="#what-is-the-problem" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Imagine you&amp;rsquo;re in charge of sorting out this problem. What do you do?&lt;/p>
&lt;p>When presented with a problem of this nature, it&amp;rsquo;s tempting to jump in and immediately solve the readily available problem.&lt;/p>
&lt;p>The ship is wedged, so let&amp;rsquo;s get some tugboats and pull it out.&lt;/p>
&lt;p>However, for problem-solving in general, but &lt;strong>especially&lt;/strong> for high-pressure situations, we must first fully &lt;strong>understand&lt;/strong> the problem. And the problem may not be apparent at first glance.&lt;/p>
&lt;h3 id="so-what-is-the-problem" class="group relative">So what is the problem?&lt;a href="#so-what-is-the-problem" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>The Suez canal is completely blocked. The southern part of the Suez has no alternative routes (in contrast to the northern section.) Global shipping is halted and will stay stuck for days or weeks while pulling the Ever Given out.&lt;/p>
&lt;h3 id="what-else-is-a-problem" class="group relative">What else is a problem?&lt;a href="#what-else-is-a-problem" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>What happens if we stick a 100 ft sail in the middle of a giant windstorm? We may have lots of containers in the Suez, potentially blocking it off for months.
&lt;img src="https://rushabhdoshi.com/assets/problem-solving/tipping.jpg" alt="">&lt;/p>
&lt;h3 id="what-else" class="group relative">What else?&lt;a href="#what-else" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>When the tide goes out, we will have a very long, heavily loaded container ship, with its bow and stern stuck on the ground like poles. Long container ships are subject to &lt;code>hogging and sagging&lt;/code> - the ship could bend at its middle and potentially break into two.&lt;/p>
&lt;p>That sounds &lt;strong>very&lt;/strong> bad - could it happen? Yes, in fact, it has - with the MOL comfort snapping in high seas due to severe weather.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/problem-solving/mol.jpg" alt="IACS Acts on MOL Comfort Report">
via &lt;a href="https://www.maritime-executive.com">Maritime Executive&lt;/a>&lt;/p>
&lt;p>If the Ever Given were to snap and sink in the middle of the Suez, it would block the canal for years, potentially requiring building a new channel to get around the blockage.&lt;/p>
&lt;p>These are some pretty distressing and alarming facts. But then again, you&amp;rsquo;re not called into high-pressure situations when things are going swimmingly.&lt;/p>
&lt;h2 id="enter-mind-maps" class="group relative">Enter Mind Maps&lt;a href="#enter-mind-maps" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Mind_map">Mind Maps&lt;/a> are one of the best tools to work through problem understanding and solving. Mind maps allow you to organize hierarchical information visually. They allow you to see the entire picture and quickly zoom in and out of the problem.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/problem-solving/problem-mm-1.jpg" alt="">&lt;/p>
&lt;p>For each sub-problem, we can develop mutually exclusive but completely exhaustive (MECE) options to solve it.&lt;/p>
&lt;p>&lt;strong>To solve for the ship breaking&lt;/strong>, we need to prevent sagging. We can move the ballast to the sides of the ship; we could remove fuel to lighten the load (and reduce the possibility of a catastrophic oil spill in the Suez in the event of the boat cracking); we could move containers off the ship.&lt;/p>
&lt;p>&lt;strong>To prevent tipping&lt;/strong>, we need to move containers out (also incidentally helping the sagging problem). However, moving containers off a 100ft mega-ship without using land-based cranes is virtually impossible.&lt;/p>
&lt;p>&lt;strong>To unstick the vessel&lt;/strong>:&lt;/p>
&lt;ol>
&lt;li>We could use tugs. However, we don&amp;rsquo;t have enough tug capacity in the world to pull the vessel out. Some simple friction math says we need about 33kTons of force to pull out the ship. The world&amp;rsquo;s best tugboat - the &lt;a href="https://gcaptain.com/interesting-ship-week-samson/">Far Samson&lt;/a> - can do 423 tons. And there is only one Far Samson, and it&amp;rsquo;s nowhere near the Suez.&lt;/li>
&lt;li>We can excavate the bow and the stern and free them. However, excavating sand vertically underwater is not possible due to the way sand moves. There are no amphibious excavators with sufficient reach.&lt;/li>
&lt;li>We can use a dredging ship instead.&lt;/li>
&lt;li>We can wait for the high tide. As the tide lifts the boat, with sufficient dredging and some tugging, we can hopefully pull the boat out.&lt;/li>
&lt;li>We can use high-capacity cranes to lift the containers off the boat. This is very challenging given the boat&amp;rsquo;s height and the lack of existing cranes for the operation. Given the sheer number of containers, this would also be a very long operation.&lt;/li>
&lt;/ol>
&lt;p>We can see all this in one place in a solution mind map.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/problem-solving/solution-mm-1.jpg" alt="">&lt;/p>
&lt;h2 id="the-technique" class="group relative">The Technique&lt;a href="#the-technique" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>A more generalized approach looks like this:&lt;/p>
&lt;h3 id="1-understand-the-problem" class="group relative">1. Understand the problem&lt;a href="#1-understand-the-problem" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>This is the first step. The real problem may not be the obvious, evident problem staring you in the face. To get to the real problem, start by creating a problem map. Answer the prompt: &lt;code>What is the problem?&lt;/code> and dig in - with each child ask &lt;code>Why?&lt;/code> and to generate more children ask &lt;code>What else?&lt;/code>.&lt;/p>
&lt;h3 id="2-prioritize" class="group relative">2. Prioritize&lt;a href="#2-prioritize" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Once you understand all the associated problems, not just the first one you saw, figure out the order in which you should solve them. The function used to prioritize depends on the context and not germane to this section.&lt;/p>
&lt;h3 id="3-create-independent-solutions-for-each-problem" class="group relative">3. Create independent solutions for each problem&lt;a href="#3-create-independent-solutions-for-each-problem" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>For each identified problem, create a set of solutions that would effectively solve the problem. Dig into the ideas to understand the feasibility of implementation, the cost, the time, and other such attributes. An important note: we&amp;rsquo;re solving each sub-problem in isolation. A solution for one may aid or hamper another &amp;ndash; we must pay attention to these dependencies (solutions may not be mutually exclusive).&lt;/p>
&lt;h3 id="4-execute" class="group relative">4. Execute&lt;a href="#4-execute" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>You may be able to execute in serial or parallel, and you may find some &lt;a href="https://en.wikipedia.org/wiki/Jugaad">jugaad&lt;/a> way of doing multiple things at once. Knowing your prioritized problem map helps ensure the work is directed toward the highest priority first.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/problem-solving/mm.jpg" alt="">&lt;/p>
&lt;h2 id="further-reading" class="group relative">Further Reading&lt;a href="#further-reading" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ol>
&lt;li>This technique of using mind maps for problem-solving is explored extremely well in Arnaud Chevalier&amp;rsquo;s book: &lt;a href="https://www.amazon.com/Strategic-Thinking-Complex-Problem-Solving-ebook/dp/B01HS3YCM8">Strategic Thinking in Complex Problem Solving&lt;/a>
&lt;img src="https://rushabhdoshi.com/assets/problem-solving/cover-1.jpg" alt="">&lt;/li>
&lt;li>A similar technique was introduced in 1945 by George Polya, succinctly summarized in this &lt;a href="https://math.berkeley.edu/~gmelvin/polya.pdf">handy pdf&lt;/a>.&lt;/li>
&lt;li>Another great book on the subject: &lt;a href="https://geraldmweinberg.com/Site/AYLO.html">Are Your Lights On&lt;/a>
&lt;img src="https://rushabhdoshi.com/assets/problem-solving/cover-2.jpg" alt="Are Your Lights On?">&lt;/li>
&lt;/ol>
&lt;h2 id="the-ever-given-conclusion" class="group relative">The Ever Given Conclusion&lt;a href="#the-ever-given-conclusion" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The Ever Given was towed to the Great Bitter Lake, where it remains as of April 18th, 2021. The Egyptian authorities are demanding nearly a Billion Dollars in damager. Given the boat&amp;rsquo;s interesting international situation (owned by a Japanese company, operated by a Taiwanese company, registered in Panama, technically managed by a German company, crewed by Indians, stuck in Egypt.), who knows how long it will stay there.&lt;/p></description></item><item><title>Codanames</title><link>https://rushabhdoshi.com/projects/2021-02-25-codanames/</link><pubDate>Thu, 25 Feb 2021 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/projects/2021-02-25-codanames/</guid><description>&lt;p>I love &lt;a href="horsepaste.com">codenames&lt;/a> and &lt;a href="coda.io">coda&lt;/a>. Decided to implement codenames using coda:&lt;/p>
&lt;p>&lt;a href="https://coda.io/@rushabhdoshi/codanames">https://coda.io/@rushabhdoshi/codanames&lt;/a>&lt;/p></description></item><item><title>Switch</title><link>https://rushabhdoshi.com/posts/2021-02-15-switch/</link><pubDate>Mon, 15 Feb 2021 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2021-02-15-switch/</guid><description>&lt;h2 id="key-ideas" class="group relative">Key Ideas&lt;a href="#key-ideas" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Change is hard. To execute change, leaders have to act differently and motivate their teams to act differently. This book details a framework to effect change.&lt;/p>
&lt;h3 id="elephants-and-riders" class="group relative">Elephants and Riders&lt;a href="#elephants-and-riders" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Based on Jonathan Haidt&amp;rsquo;s work, the authors describe how each person has an emotional Elephant side and a rational Rider side. What motivates one does not help with the other. To effect change, you must appeal to both the Elephant and the Rider.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/books/switch/switch.jpg" alt="Infographic">&lt;/p>
&lt;h3 id="directing-the-rider" class="group relative">Directing the Rider&lt;a href="#directing-the-rider" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Find what&amp;rsquo;s working&lt;/strong>. Instead of focusing on problem analysis, find the thing that is working, and clone it. Follow the bright spots.&lt;/li>
&lt;li>&lt;strong>Script the critical moves&lt;/strong>. Find a series of small, but pivotal, steps to change, and script them. The &lt;strong>critical&lt;/strong> part is important: else you are unsustainably scripting everything.&lt;/li>
&lt;li>&lt;strong>Point to the destination&lt;/strong>. Create a Big, Hairy, Audacious Goal [[BHAG]] or a Destination Postcard. These do double duty by showing the Rider where you&amp;rsquo;re headed and show the Elephant why the journey is worthwhile.&lt;/li>
&lt;/ol>
&lt;h3 id="motivate-the-elephant" class="group relative">Motivate the Elephant&lt;a href="#motivate-the-elephant" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Find the feeling&lt;/strong> - rational logic isn&amp;rsquo;t enough; make people feel something viscerally. People think the sequence is ANALYZE-THINK-CHANGE but in reality, for most big changes, the sequence is SEE-FEEL-CHANGE.&lt;/li>
&lt;li>&lt;strong>Shrink the change&lt;/strong> - break down the change until it not scary or demoralizing. Every large change starts with a small change, make that change a small win.&lt;/li>
&lt;li>&lt;strong>Grow your people&lt;/strong> - cultivate a sense of identity and instill a growth mindset.&lt;/li>
&lt;/ol>
&lt;h3 id="shape-the-path" class="group relative">Shape the Path&lt;a href="#shape-the-path" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Tweak the environment&lt;/strong> - change the situation instead of changing the behavior.&lt;/li>
&lt;li>&lt;strong>Build habits&lt;/strong> - look for ways to encourage habits rather than banking on motivation.&lt;/li>
&lt;li>&lt;strong>Rally the herd&lt;/strong> - behavior is contagious. Help it spread.&lt;/li>
&lt;/ol>
&lt;h2 id="other-interesting-ideas" class="group relative">Other interesting ideas&lt;a href="#other-interesting-ideas" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;strong>Prefer to use positive emotion&lt;/strong> to motivate, vs. scaring people or using negative emotion such as the &lt;a href="https://sriramk.com/memos/elop-burning-platforms.pdf">Burning Platform Memo&lt;/a> (choice between a fiery death or a cold sea and shark food.)&lt;/p>
&lt;p>&lt;strong>The Haddon Matrix&lt;/strong> is a simple framework that provides a way to think systematically about accidents by highlighting three key periods of time:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Pre-event&lt;/strong> interventions include things that would prevent. wrecks from happening - installing bright lighting on highways, painting clear lane markers on the roads.&lt;/li>
&lt;li>&lt;strong>Event&lt;/strong> interventions will accept that crashes will happen and ask how we can reduce the changes of injury. Seat belts and air bags.&lt;/li>
&lt;li>&lt;strong>Post-event&lt;/strong> interventions acknowledge that both crashes will happen and people will get injured. Minimize the severity of injuries and optimize the health outcomes - speedy emergency crews, jaws of life.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>The Checklist&lt;/strong> is a great tool to accomplish two things at once: 1) tweaking the environment and 2) building habits.&lt;/p></description></item><item><title>Burnout</title><link>https://rushabhdoshi.com/posts/2021-02-14-burnout/</link><pubDate>Sun, 14 Feb 2021 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2021-02-14-burnout/</guid><description>&lt;h2 id="key-ideas" class="group relative">Key Ideas&lt;a href="#key-ideas" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The authors present a systems thinking approach to dealing with Stress.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/burnout/burnout.jpg" alt="key idea">&lt;/p>
&lt;p>&lt;em>Stressors&lt;/em> create stress which accumulates until the &lt;em>Stress Cycle&lt;/em> is completed. If left to continuously grow over time, stress results in &lt;em>Burnout&lt;/em> - defined by emotional exhaustion, depersonalization, and a decreased sense of accomplishment.&lt;/p>
&lt;p>&lt;strong>Approaches to completing the stress cycle&lt;/strong>: Physical activity of 20-60m per day (most effective), deep breathing, positive social interaction, and creative expression.&lt;/p>
&lt;p>&lt;strong>Approaches to reducing stressors&lt;/strong>: planful problem solving, positive reappraisal, redefining winning and failing, and finding meaning.&lt;/p>
&lt;hr>
&lt;h2 id="details" class="group relative">Details&lt;a href="#details" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The definition of Burnout according to Herbert Freudenberger in 1975, is a state of:&lt;/p>
&lt;ul>
&lt;li>Emotional exhaustion charachterized by fatigue.&lt;/li>
&lt;li>Depersonalization resulting in a depletion of empathy, caring, and compassion.&lt;/li>
&lt;li>Decreased sense of accomplishment leading to a deep sense of futility.&lt;/li>
&lt;/ul>
&lt;h3 id="stress-vs-stressors" class="group relative">Stress vs. Stressors&lt;a href="#stress-vs-stressors" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Stressors activate the stress response.&lt;/li>
&lt;li>Stress is the neurological and physiological shift that happens in your body when you encounter a stressor.
For example: Being chased by a hippo (stressor) generates neurochemicals that initiate a physiological response to aid survival (stress response).&lt;/li>
&lt;/ul>
&lt;p>According to the authors, we focus too much on controlling our stressors, and not enough on completing the stress cycle. The lack of completion of the stress cycle results in stress accumulation, eventually resulting in burnout.&lt;/p>
&lt;h3 id="completing-the-stress-cycle" class="group relative">Completing the Stress Cycle&lt;a href="#completing-the-stress-cycle" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Physical activity - 20 to 60 minutes per days is the most efficient strategy for completing the stress response cycle.&lt;/li>
&lt;li>Breathing - slow breaths with long exhalation. Most effective when the stress isn&amp;rsquo;t that high.&lt;/li>
&lt;li>Positive social interaction - external sign that the world is a safe place.&lt;/li>
&lt;li>Laughter&lt;/li>
&lt;li>Affection&lt;/li>
&lt;li>Crying&lt;/li>
&lt;li>Creative Expression - engaging in creative activities that lead to more energy, excitement, and enthusiasm.&lt;/li>
&lt;/ul>
&lt;h2 id="dealing-with-stressors" class="group relative">Dealing with Stressors&lt;a href="#dealing-with-stressors" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Planful problem solving&lt;/strong> - analyze the problem, make a plan based on your analysis, then execute the plan. Works for people who naturally make lists and follow calendars.&lt;/li>
&lt;li>&lt;strong>Positive reappraisal&lt;/strong> - post-hoc rationalization that things are actually worth it. Look at the positive side and realize the opportunity hidden in the stress.&lt;/li>
&lt;li>&lt;strong>Redefining winning and failing&lt;/strong> - winning can often be defined in binary terms eg. Climb Mt Everest, which is incredibly hard and subject to failure. Instead, it could be defined as a shorter goal - making it to base camp, making it to the next stage, and so on. Redefined goals should be:
&lt;ul>
&lt;li>Soon&lt;/li>
&lt;li>Certain&lt;/li>
&lt;li>Positive&lt;/li>
&lt;li>Concrete&lt;/li>
&lt;li>Specific&lt;/li>
&lt;li>Personal&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Finding Meaning&lt;/strong> or Something Larger
&lt;ul>
&lt;li>Meaning offers a positive, final value, than an individual&amp;rsquo;s life can exhibit. It isn&amp;rsquo;t always fun, and not all activities are meaningful. But meaning is invariably good for you.&lt;/li>
&lt;li>Three kinds of sources
&lt;ul>
&lt;li>Pursuit and achievement of ambitious goals that leave a legacy.&lt;/li>
&lt;li>Service to the divine or other spiritual calling.&lt;/li>
&lt;li>Loving, emotionally intimate connection with others.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>2021</title><link>https://rushabhdoshi.com/posts/2021-02-06-new-year/</link><pubDate>Sat, 06 Feb 2021 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2021-02-06-new-year/</guid><description>&lt;p>I cannot believe we are in February already. 2020 was a clusterf*** of a year &amp;ndash; COVID, forced isolation, millions sick, hundreds of thousands dead, a nerve-wracking election, and the aftermath that would not end. January felt like a continuation of December'20 to some extent. But thankfully, things are looking a little better. Vaccines are out, we have a government made of adults, and things are looking up.&lt;/p>
&lt;p>I&amp;rsquo;m starting the year with an upgrade to the website. You&amp;rsquo;ll notice a new theme and some splashes of color &amp;ndash; they&amp;rsquo;re nice, but the key upgrade is below the hood. I&amp;rsquo;ve moved off &lt;a href="https://jekyllrb.com/">Jekyll&lt;/a> to &lt;a href="https://gohugo.io/">Hugo&lt;/a>. I don&amp;rsquo;t love Ruby; I don&amp;rsquo;t love how Jekyll has tons of ugly _s everywhere; I&amp;rsquo;m not fond of managing dependencies. Built using Go, Hugo is clean and fast. Structure and templates make sense. The community has ported most of the Jekyll templates over. I&amp;rsquo;m still using &lt;a href="https://pages.github.com/">GitHub Pages&lt;/a> to host (free and straightforward) but moved the site generation over to Hugo.&lt;/p>
&lt;p>Enough about SSGs. Though the &lt;a href="https://jamstack.org/generators/">world of SSGs&lt;/a> is fascinating and worth a peek. Why have fancy database-driven websites (I&amp;rsquo;m looking at you, WordPress) when a simple statically generated site could suffice? And the interwebs are very good at pushing bits of text around &amp;ndash; no fancy database lookups, and everything works blazingly fast.&lt;/p>
&lt;p>I care about writing, and this upgrade will let me write more. My goal is to write shorter posts more often. I hope you, dear reader, enjoy them.&lt;/p>
&lt;p>Here&amp;rsquo;s to a great 2021 and a giant f-you to 2020.&lt;/p></description></item><item><title>Hooked</title><link>https://rushabhdoshi.com/posts/2020-12-25-hooked/</link><pubDate>Fri, 25 Dec 2020 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2020-12-25-hooked/</guid><description>&lt;h2 id="key-ideas" class="group relative">Key Ideas&lt;a href="#key-ideas" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Habit forming products can be created using the Hooked model: Trigger, Action, Variable Rewards, and Investment.
&lt;img src="https://rushabhdoshi.com/assets/hooked/hookedmodel.jpg" alt="Hooked Model">&lt;/p>
&lt;h2 id="details" class="group relative">Details&lt;a href="#details" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;h3 id="habits" class="group relative">Habits&lt;a href="#habits" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Habits are defined as &lt;code>automatic behaviors triggered by situational cues.&lt;/code>&lt;/p>
&lt;p>Habits give us the ability to focus our attention on other things by storing automatic responses. Our brain takes a shortcut and stops actively deliberating over what to do next. The brain then codifies behaviors that provide a solution to whatever situation it encounters.&lt;/p>
&lt;p>New habits are hard to form and easy to lose. To convert a behavior into a habit, it needs to happen frequently and deliver high utility.&lt;/p>
&lt;p>Habit forming products are both Painkillers (solve an obvious need, relieving a specific pain, have quantifiable markets) and Vitamins (appeal to users emotional, rather than functional needs.)&lt;/p>
&lt;h3 id="the-hooked-model" class="group relative">The Hooked Model&lt;a href="#the-hooked-model" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>The hooked model is a 4 step process to building habit forming products.
&lt;img src="https://rushabhdoshi.com/assets/hooked/hookedmodel.jpg" alt="Hooked Model">&lt;/p>
&lt;h3 id="1-trigger" class="group relative">1. Trigger&lt;a href="#1-trigger" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>A trigger actuates the behavior by providing the spark. There are two types of triggers:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>External triggers&lt;/strong>
&lt;ul>
&lt;li>Paid triggers: Ads&lt;/li>
&lt;li>Earned triggers: Favorable press mentions, app store feature placements, viral videos.&lt;/li>
&lt;li>Relationship triggers: One person telling another about the product, Social media shares, word of mouth.&lt;/li>
&lt;li>Owned triggers. Email newsletter, app icon, notifications.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Internal triggers&lt;/strong>
&lt;ul>
&lt;li>When a product becomes associated with an emotion, thought, pre-existing routine, these become internal triggers to use the product. For example, people take a photo with the &lt;em>intent&lt;/em> of posting it to Instagram.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h3 id="2-action" class="group relative">2. Action&lt;a href="#2-action" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>The author&amp;rsquo;s rely on BJ Fogg&amp;rsquo;s &lt;a href="https://behaviormodel.org">Fogg Behavioral Model&lt;/a> to illustrate the MAP method for when people will take an action.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/hooked/behaviormodel.jpg" alt="Fogg Behavior Model">&lt;/p>
&lt;p>Some hearistics to increase motivation:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Scarcity effect&lt;/strong>: Appearance of scarcity increases the value of a product. Eg. a limited time offer.&lt;/li>
&lt;li>&lt;strong>Framing effect&lt;/strong>: Surroundings and context creates motivation. Eg. a concert pianist playing in a subway vs Carnegie Hall gets different audience attention.&lt;/li>
&lt;li>&lt;strong>Anchoring effect&lt;/strong>: People anchor on one piece of information when making a decision. Eg. &amp;ldquo;Everything 30% off&amp;rdquo; fails to consider the markup or whether something was needed.&lt;/li>
&lt;li>&lt;strong>Endowed Progress effect&lt;/strong>: Eg. For a loyalty card, starting with a blank card, with 9 spots to reward is &lt;em>worse&lt;/em> than starting with a card with 10 spots and marking one off.&lt;/li>
&lt;/ul>
&lt;h3 id="3-variable-reward" class="group relative">3. Variable Reward&lt;a href="#3-variable-reward" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>The &lt;code>variable&lt;/code> part is important. Without that, we have a vanilla feedback loop.&lt;/p>
&lt;h4 id="types-of-rewards" class="group relative">Types of rewards&lt;a href="#types-of-rewards" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Rewards of the Tribe&lt;/strong>: make us feel accepted, attractive, important, and included.&lt;/li>
&lt;li>&lt;strong>Rewards of the Hunt&lt;/strong>: based on the need to acquire physical objects.&lt;/li>
&lt;li>&lt;strong>Rewards of the Self&lt;/strong>: intrinsic motivation to conquer obstacles, even for simply the satisfaction of doing so.&lt;/li>
&lt;/ul>
&lt;h4 id="finite-vs-infinite-variability" class="group relative">Finite vs Infinite Variability&lt;a href="#finite-vs-infinite-variability" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Finite variability&lt;/strong> is the same script, different characters, different show. This is commonly found in Hollywood (eg. Special Victims Unit, the best show ever created). The same model is exploited by Zynga and other FTP games. Companies making products with finite variability often operate under the studio model.&lt;/li>
&lt;li>&lt;strong>Infinite variability&lt;/strong>. Multiplayer games, UGC sites like Facebook, YouTube, Pinterest. The variability never follows the same script.&lt;/li>
&lt;li>&lt;strong>Inherent variability&lt;/strong>. When the act of using your product itself is variable, there is no need to add variability on top.
&lt;ul>
&lt;li>Eg. Google searches and Uber rides.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="4-investment" class="group relative">4. Investment&lt;a href="#4-investment" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Getting users to do a bit of work increases the odds that they will make another pass through the entire cycle. Strategies include:&lt;/p>
&lt;p>&lt;strong>Escalation of commitment&lt;/strong>: the more users invest time and effort into a product or service, the more they value it. Heuristics to understand why this happens:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Ikea Effect&lt;/strong> - irrationally valueing our own efforts. Ikea furniture looks great because we made it ourselves.&lt;/li>
&lt;li>&lt;strong>Consistency with past behavior&lt;/strong> - foot in the door effect. Once we&amp;rsquo;ve done something small, doing the next thing is easy.&lt;/li>
&lt;li>&lt;strong>Avoiding cognitive dissonance&lt;/strong> - we value consistency with past behaviors, thoughts, and attitudes.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Storing value&lt;/strong>: getting users to store value in your product increases the chances they will use it again and reduces their propensity to churn. Ways to create stored value:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Content&lt;/strong> Eg. Spotify listening history.&lt;/li>
&lt;li>&lt;strong>Data&lt;/strong> Eg. Entering all financial information into Mint&lt;/li>
&lt;li>&lt;strong>Followers&lt;/strong> Eg. Twitter follower graph.&lt;/li>
&lt;li>&lt;strong>Reputation&lt;/strong> Eg. Online marketplaces like Yelp, AirBnB, Upwork&lt;/li>
&lt;li>&lt;strong>Skill&lt;/strong> Eg. Photoshop or Figma or any prosumer tool that users have learned to use.&lt;/li>
&lt;/ul></description></item><item><title>How to Take Smart Notes</title><link>https://rushabhdoshi.com/posts/2020-11-29-smart-notes/</link><pubDate>Sun, 29 Nov 2020 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2020-11-29-smart-notes/</guid><description>&lt;h2 id="key-ideas" class="group relative">Key Ideas&lt;a href="#key-ideas" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Generating insights is key to accelerate research and learning. To generate insights, Ahrens recommends using the Zettelkasten method to create a &lt;code>Second Brain&lt;/code> that helps see relationships between concepts, discover open holes, and validate or invalidate understanding.&lt;/p>
&lt;p>Read by taking notes and noting concepts in your own words. This process helps deepen our understanding.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/books/smartnotes/smartnotes.jpg" alt="Book Cover">&lt;/p>
&lt;hr>
&lt;h2 id="details" class="group relative">Details&lt;a href="#details" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>How do you plan for insight, which, by definition, cannot be anticipated?&lt;/p>&lt;/blockquote>
&lt;p>Ahrens&amp;rsquo;s book, while directed at students and researchers, is applicable to everyone that cares about learning new things.&lt;/p>
&lt;p>To generate more insights, Ahrens recommends changing the learning workflow. Reading alone is insufficient and having read more does not mean more ideas.&lt;/p>
&lt;h2 id="zettelkasten-system-to-store-and-connect-ideas" class="group relative">Zettelkasten system to store and connect ideas&lt;a href="#zettelkasten-system-to-store-and-connect-ideas" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The Zettelkasten system relies on a series of interconnected notes. The original system was built using pen and paper by Niklas Luhmann. He relied on writing notes that were organized by topic, putting physical pieces of paper next to each other in a &lt;code>slip-box&lt;/code>. Each piece of paper also had linkages to other notes. He relied upon these linkages to generate insight and connect one thing to another.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/books/smartnotes/zettelkasten.jpg" alt="Zettelkasten">&lt;/p>
&lt;p>Replicating the system today is easier, thanks to technology.&lt;/p>
&lt;h3 id="fleeting-notes" class="group relative">Fleeting Notes&lt;a href="#fleeting-notes" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>The first step is to capture all your ideas - whether they&amp;rsquo;re coming from things you read, or during a shower, or on a walk, or when you&amp;rsquo;re browsing the internet. Use whatever means you&amp;rsquo;d like to capture fleeting notes - pen and paper, voice memos, apps on your devices.&lt;/p>
&lt;p>When reading books and articles, I find it particularly easy to highlight things &amp;ndash; Kindle makes it very easy to highlight things, as well as revisit all highlighted content. Importantly, the act of highlighting is insufficient. Treat highlights as another fleeting note.&lt;/p>
&lt;p>I also use &lt;a href="notion.so">Notion&lt;/a> to maintain a web reading queue. Alternatives include browser bookmarks, &lt;a href="getpocket.com">Pocket&lt;/a> and &lt;a href="instapaper.com">Instapaper&lt;/a>.&lt;/p>
&lt;h3 id="permanent-notes" class="group relative">Permanent Notes&lt;a href="#permanent-notes" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>All forms of fleeting notes can be converted to permanent notes, though not all should. There are plenty of fleeting notes that weren&amp;rsquo;t great ideas or didn&amp;rsquo;t generate any particular value, and can be discarded.&lt;/p>
&lt;p>Permanent notes require more thought to put together and are short summaries of fleeting notes. I use &lt;a href="roamresearch.com">Roam Research&lt;/a>, though &lt;a href="obsidian.md">Obsidian&lt;/a> is a very reasonable alternative.&lt;/p>
&lt;h3 id="links" class="group relative">Links&lt;a href="#links" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Linking permanent notes together is an extremely important step. Tools like Roam Research allow you to &lt;em>very easily&lt;/em> link permanent notes together. Moreover, they automatically generate backlinks and maintain your link graph.&lt;/p>
&lt;p>You can use a tag scheme to link notes together, however, be cautious. An &lt;em>Archivist&lt;/em> tags notes to figure out where to store them. A &lt;em>Researcher&lt;/em> tags notes to figure out how to retrieve them. As yourself the question: &lt;code>In what circumstances will I want to stumble upon this note, even if I forget about it?&lt;/code>&lt;/p>
&lt;h2 id="gtd-vs-insightful-writing" class="group relative">GTD vs. Insightful Writing&lt;a href="#gtd-vs-insightful-writing" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>David Allen&amp;rsquo;s Getting Things Done system is an excellent way to be productive. The central insight in GTD is to collect everything in one place and process it in a standard way. This system forces clear prioritization and continuously evaluates how tasks fit into the bigger picture.&lt;/p>
&lt;p>GTD is different from Insightful Writing (Ahrens&amp;rsquo;s method). They are hard to combine &amp;ndash; for GTD to work, you must know where you&amp;rsquo;re trying to go (clear objective) and the path can be decomposed into smaller steps that guarantee progress. Research, writing, and insight generation are not linear and we have to constantly jump back and forth between tasks.&lt;/p>
&lt;h2 id="learn-by-writing" class="group relative">Learn by Writing&lt;a href="#learn-by-writing" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>If you want to learn something for the long run, you have to write it down.&lt;/p>&lt;/blockquote>
&lt;p>Write with a slip-box. Develop topics, questions, and research projects from the bottom up within the system. Turn the permanent notes into a rough draft. You should be able to see the holes in the argument and do more research.&lt;/p>
&lt;h2 id="read-by-writing" class="group relative">Read by Writing&lt;a href="#read-by-writing" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>Take Notes&lt;/p>
&lt;blockquote>
&lt;p>I would advise you to read with a pen in your hand and enter in a little book short hints of what you feel that is common or that may be useful; for this will be the best method of imprinting such portcullis in your memory. – Benjamin Franklin&lt;/p>&lt;/blockquote>
&lt;/li>
&lt;li>
&lt;p>Be careful about &lt;a href="https://en.wikipedia.org/wiki/List_of_cognitive_biases">Confirmation Bias&lt;/a>. We are often seeking supporting evidence instead of reading with an open mind to truly understand. Darwin&amp;rsquo;s technique for avoiding confirmation bias was to force himself to write down and elaborate upon the argument that were the most critical of his theories.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Get the gist. Summarize and pull out only the most important bits.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="anti-brainstorming" class="group relative">Anti-Brainstorming&lt;a href="#anti-brainstorming" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Brainstorming is an old technique, introduced to the world in 1958. It tests for memorized knowledge, without much indication of insight. Someone can come up with a lot of ideas during brainstorming sessions but give no indication about their quality. Brain prioritizes ideas that are &lt;em>easily&lt;/em> available, not the best or the most relevant. The brain also remembers things that have happened more &lt;em>recently&lt;/em>. Things that are abstract or vague get pushed down the list. Additionally we love our own ideas and get wedded to them pretty quickly. Prefer the bottom-up, deliberate approach to generating ideas and insights to a &amp;ldquo;brainstorm&amp;rdquo;.&lt;/p></description></item><item><title>Hacking Growth</title><link>https://rushabhdoshi.com/posts/2020-11-23-hacking-growth/</link><pubDate>Mon, 23 Nov 2020 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2020-11-23-hacking-growth/</guid><description>&lt;h2 id="key-insights" class="group relative">Key Insights&lt;a href="#key-insights" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The Pirate Stack, or where a Growth team works (with lots of concrete ideas about what to do in each phase.)&lt;/p>
&lt;ul>
&lt;li>Acquisition&lt;/li>
&lt;li>Activation&lt;/li>
&lt;li>Retention&lt;/li>
&lt;li>Revenue&lt;/li>
&lt;/ul>
&lt;p>Avoid Growth stalls&lt;/p>
&lt;ul>
&lt;li>Don&amp;rsquo;t get complacent due to overconfidence in market positioning.&lt;/li>
&lt;li>Don&amp;rsquo;t lose focus on core products or services.&lt;/li>
&lt;li>Innovate.&lt;/li>
&lt;/ul>
&lt;p>Grow or Die&lt;/p>
&lt;ul>
&lt;li>Double down on ideas that are working.&lt;/li>
&lt;li>Run a disciplined team and process.&lt;/li>
&lt;li>Experiment, experiment, experiment.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/books/hacking-growth/hackinggrowth.jpg" alt="Book cover">&lt;/p>
&lt;hr>
&lt;h2 id="details" class="group relative">Details&lt;a href="#details" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;h2 id="how-growth-teams-are-commonly-structured" class="group relative">How Growth teams are commonly structured&lt;a href="#how-growth-teams-are-commonly-structured" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Growth teams are a multidisciplinary team with a focus on speed and experimentation. They usually comprise of:&lt;/p>
&lt;ul>
&lt;li>Product Managers with deep understanding of strategy and business goals.&lt;/li>
&lt;li>Data Analysts focusing on Experimental design and analysis. They generate insights into customer behavior and segmentation.&lt;/li>
&lt;li>Marketing&lt;/li>
&lt;li>Leadership. Growth teams should be led by the equivalent of a Battalion commander:boots on the ground, managing the day to day, and actively participating in the idea generation and experimentation process. they should have basic fluency with data analysis, product management, designing and running experiments.&lt;/li>
&lt;/ul>
&lt;p>There are two flavors of Growth team leadership and org structure:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Product Led Growth Team&lt;/strong>. They report into product leadership. Advantage is that they are more tightly integrated with the rest of product.
&lt;img src="https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FRushabh%2FS_LCYnmULw.png?alt=media&amp;amp;token=acf71238-ce31-4376-afaf-fc99cada8659" alt="">&lt;/li>
&lt;li>&lt;strong>Independent Led Growth Team&lt;/strong>. They report into the CEO. Advantage is that they have more autonomy to work across the company.
&lt;img src="https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FRushabh%2Fm58Ef1BxLi.png?alt=media&amp;amp;token=c42554bd-b1cc-4cb8-8f01-9253a810418d" alt="">&lt;/li>
&lt;/ol>
&lt;h2 id="growth-hacking-process" class="group relative">Growth Hacking Process&lt;a href="#growth-hacking-process" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ol>
&lt;li>Analyze data and gather insights.&lt;/li>
&lt;li>Prioritize experiments.&lt;/li>
&lt;li>Run the experiments.&lt;/li>
&lt;li>Generate ideas.&lt;/li>
&lt;li>Back to step 1.&lt;/li>
&lt;/ol>
&lt;h2 id="grow-a-successful-product" class="group relative">Grow a successful product&lt;a href="#grow-a-successful-product" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Make sure that a product has Product-Market Fit (PMF) before growth. Determining PMF using a survey:&lt;/p>
&lt;ul>
&lt;li>How disappointed would you be if this product no longer existed tomorrow?
&lt;ul>
&lt;li>a) Very disappointed&lt;/li>
&lt;li>b) Somewhat disappointed&lt;/li>
&lt;li>c) Not disappointed (it really isn’t that useful)&lt;/li>
&lt;li>d) N/A—I no longer use it&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>What would you likely use as an alternative to [name of product] if it were no longer available?
&lt;ul>
&lt;li>I probably wouldn’t use an alternative&lt;/li>
&lt;li>I would use:&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>What is the primary benefit that you have received from [name of product]?&lt;/li>
&lt;li>Have you recommended [name of product] to anyone?
&lt;ul>
&lt;li>No&lt;/li>
&lt;li>Yes (Please explain how you described it)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>What type of person do you think would benefit most from [name of product]?&lt;/li>
&lt;li>How can we improve [name of product] to better meet your needs?&lt;/li>
&lt;li>Would it be okay if we followed up by email to request a clarification to one or more of your responses?&lt;/li>
&lt;/ul>
&lt;h2 id="getting-to-must-have" class="group relative">Getting to Must-Have&lt;a href="#getting-to-must-have" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Talk to users (or risk building features that nobody wants.) Listen and observe. Be careful to not sell.&lt;/p>
&lt;p>Analyze your data:&lt;/p>
&lt;ol>
&lt;li>Create a data lake.&lt;/li>
&lt;li>Set up event tracking&lt;/li>
&lt;li>Look at feature correlations for&lt;/li>
&lt;/ol>
&lt;h2 id="fundamental-growth-equation" class="group relative">Fundamental Growth Equation&lt;a href="#fundamental-growth-equation" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>A growth equation is a simple formula that represents all of the key factors that will combine to drive your growth. It is different for every product or business. Common drivers:&lt;/p>
&lt;ul>
&lt;li>New user acquisition&lt;/li>
&lt;li>Higher activation&lt;/li>
&lt;li>Better retention&lt;/li>
&lt;/ul>
&lt;h2 id="north-star-metric" class="group relative">North Star Metric&lt;a href="#north-star-metric" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>A number that we can obsess over. It must be simple eg. for Uber Rides, the metric was &lt;code>Rides Completed&lt;/code>. For Facebook sharing, our number was &lt;code>Original Posts&lt;/code>. This metric isn&amp;rsquo;t set in stone and can change over time. Don&amp;rsquo;t obsess about getting it perfect.&lt;/p>
&lt;blockquote>
&lt;p>A good plan violently executed now is better than a perfect plan tomorrow. &amp;ndash; General George Patton&lt;/p>&lt;/blockquote>
&lt;h2 id="growth-experiments" class="group relative">Growth Experiments&lt;a href="#growth-experiments" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Growth teams have a high experiment cadence (20-30 / week at scale). There are two phases, corresponding to two meetings:&lt;/p>
&lt;ol>
&lt;li>Idea generation. Everyone is welcome to add ideas; focus area owners &lt;em>must&lt;/em> add ideas. Ideas should be crisp and clearly articulate what we expect to move.&lt;/li>
&lt;li>Weekly prioritization. Prioritize the list of ideas using some scoring system. Examples of scoring systems:
&lt;ul>
&lt;li>ICE
&lt;ul>
&lt;li>Impact&lt;/li>
&lt;li>Confidence&lt;/li>
&lt;li>Ease&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>TIR
&lt;ul>
&lt;li>Time&lt;/li>
&lt;li>Impact&lt;/li>
&lt;li>Resources&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>PIE
&lt;ul>
&lt;li>Potential&lt;/li>
&lt;li>Importance&lt;/li>
&lt;li>Ease&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Experiment review. Look at all existing experiment for success or failure. Use a 99% confidence level instead of 95%.&lt;/li>
&lt;/ol>
&lt;h2 id="acquisition" class="group relative">[[Acquisition]]&lt;a href="#acquisition" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Start by crafting a compelling message. The message is not just about your brand but improves the product as well.&lt;/p>
&lt;p>Pick a channel. Be selective and put resources on fewer channels rather than spreading bets around. See the book for examples of channel categories, and Brian Balfour&amp;rsquo;s strategies around picking the right channel.&lt;/p>
&lt;h2 id="activation" class="group relative">Activation&lt;a href="#activation" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Get new users to the aha moment faster:&lt;/p>
&lt;ol>
&lt;li>Map the route to the aha moment.&lt;/li>
&lt;li>Create a funnel report of conversions and dropoffs.&lt;/li>
&lt;li>Eradicate friction.&lt;/li>
&lt;/ol>
&lt;p>Optimize the New User Experience (NUX).
The first time someone experiences your product is a unique, one-time encounter. The NUX should be treated as a product by itself. Craft a special experiencee.&lt;/p>
&lt;h2 id="retention" class="group relative">Retention&lt;a href="#retention" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Retention is fundamentally about providing customers with a product or service of high quality that continuously addresses their needs, or delights them, and which they come to regard as must have.&lt;/p>
&lt;p>Phases of retention:&lt;/p>
&lt;ul>
&lt;li>Initial. This is an extension of activation work. What gets users from merely activated to commited?&lt;/li>
&lt;li>Medium. The Hooked model by Nir Eyal provides a model to turn products into habits. Here&amp;rsquo;s my &lt;a href="https://rushabhdoshi.com/posts/2020-12-25-hooked/">summary of Hooked&lt;/a>.&lt;/li>
&lt;li>Long term. Optimize existing features. Introduce a steady stream of new features. Resurrect zombie customers.&lt;/li>
&lt;/ul>
&lt;h2 id="revenue" class="group relative">Revenue&lt;a href="#revenue" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Authors give a survey based method for pricing SaaS products.&lt;/p>
&lt;p>Pricing Relativity: people&amp;rsquo;s perceptions of prices are influenced by the prices of other options they are offered.&lt;/p>
&lt;p>Pricing requires a study of Consumer Psyechology. References:&lt;/p>
&lt;ul>
&lt;li>Predictably Irrational by Dan Arielly&lt;/li>
&lt;li>The Art of Choosing by economist Sheena Iyengar.&lt;/li>
&lt;li>Robert Cialdini&amp;rsquo;s principles from Influence.&lt;/li>
&lt;/ul>
&lt;h2 id="building-a-virtuous-growth-cycle" class="group relative">Building a Virtuous Growth Cycle&lt;a href="#building-a-virtuous-growth-cycle" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Avoid Growth stalls&lt;/p>
&lt;ul>
&lt;li>Complacency due to overconfidence in market positioning.&lt;/li>
&lt;li>Lose focus on core products or services.&lt;/li>
&lt;li>Failure to innovate.&lt;/li>
&lt;/ul>
&lt;p>Grow or die&lt;/p>
&lt;ul>
&lt;li>Double down on ideas that are working.&lt;/li>
&lt;li>Dig deeper for data gold.&lt;/li>
&lt;li>Dive into new channels as they are built.&lt;/li>
&lt;li>Open up the ideation process.&lt;/li>
&lt;/ul></description></item><item><title>The Humble Note-Taker</title><link>https://rushabhdoshi.com/posts/2020-09-03-the-humble-note-taker/</link><pubDate>Thu, 03 Sep 2020 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2020-09-03-the-humble-note-taker/</guid><description>&lt;p>&lt;img src="https://rushabhdoshi.com/assets/note-taker/notebook.png" alt="Book">
Welcome to your first team meeting as the new PM. You&amp;rsquo;re busy trying to learn what the team does and who everyone is. The team is discussing an important decision they need to make. What should you do?&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Do nothing&lt;/strong>. You don&amp;rsquo;t have all the context, how could you contribute?&lt;/li>
&lt;li>&lt;strong>Jump in with your ideas&lt;/strong>. You&amp;rsquo;re a person of action and this is why they hired you.&lt;/li>
&lt;li>&lt;strong>Offer to take notes&lt;/strong>. Ask a clarifying question. Post the notes after the meeting.&lt;/li>
&lt;/ol>
&lt;p>Doing nothing, while gentle, is ineffective. You don&amp;rsquo;t make progress in building trust with your team or extend the understanding of the subject matter.&lt;/p>
&lt;p>Jumping in with your ideas is plain obnoxious. You have no context. In your rush to &amp;ldquo;add value&amp;rdquo; you&amp;rsquo;re showing everyone that you know barely anything.&lt;/p>
&lt;p>Taking notes, asking the occasional clarifying question, perhaps suggesting a minor reframing, and posting the notes publicly — these are activities that simultaneously add value and improve your own understanding and knowledge.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/note-taker/history.png" alt="History">
&lt;strong>Note-taking is historic record-keeping&lt;/strong>. Nobody will remember what they discussed or agreed upon, a few days after the meeting. What everyone will look at are the notes. If you have any doubts about this, try and think of your precise position on a meeting you were in, one week ago.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/note-taker/books.png" alt="Book">
&lt;strong>Note-taking is an incredibly powerful way to learn.&lt;/strong> People learn through writing. By taking notes, you force yourself to understand things and ask questions. In some cases, you find references to read through, deepening your knowledge. In other cases, the questions you have are the same questions everyone else has. Either way, your learning accelerates rapidly through taking notes.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/note-taker/gavel.png" alt="Gavel">
&lt;strong>Note-taking progresses rapidly to decision-making&lt;/strong>. You start by taking notes for your team. You post them publicly. Everyone is so grateful that you took on a menial and tedious task. Slowly, you develop the most in-depth knowledge of everything the team is doing. People start asking you for your opinion. At some point, they delegate the decision over to you, because you have the most knowledge and most up-to-date view.&lt;/p>
&lt;p>&lt;em>Thanks to Shishir Mehrotra, for the original idea, years ago. Thanks to Jules Walter and DeVaris Brown for proof-reading and feedback.&lt;/em>&lt;/p></description></item><item><title>10 Tips For Using OKRs Effectively</title><link>https://rushabhdoshi.com/posts/2020-06-18-10-tips-for-making-okrs-effective/</link><pubDate>Thu, 18 Jun 2020 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2020-06-18-10-tips-for-making-okrs-effective/</guid><description>&lt;p>&lt;img src="https://rushabhdoshi.com/assets/okrs/gears.jpg" alt="splash">&lt;/p>
&lt;p>&lt;em>We are in planning season at Digit. Like a number of other technology companies, we use OKRs. I was puzzled by the wide range of OKR effectiveness at different companies. My study of the nuances of different approaches led to the conclusions outlined in this note. OKRs are incredibly useful but it takes a long time for OKR usage to become effective. Shortcut your company&amp;rsquo;s learning process by understanding and implementing the following ten ideas. If you find them helpful, drop me a &lt;a href="https://twitter.com/radoshi">note&lt;/a>.&lt;/em>&lt;/p>
&lt;h1 id="what-are-okrs" class="group relative">What are OKRs?&lt;a href="#what-are-okrs" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>OKRs stands for Objectives and Key Results. They capture two things:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Objective&lt;/strong>: The goal a company wants to achieve (&amp;ldquo;What&amp;rdquo;)&lt;/li>
&lt;li>&lt;strong>Key Results&lt;/strong>: The path to achieving that goal (&amp;ldquo;How&amp;rdquo;)&lt;/li>
&lt;/ol>
&lt;p>OKRs are an invaluable management tool for organizations of all sizes. Used properly, they allow an organization to unlock four superpowers:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Focus&lt;/strong> and commit to priorities.&lt;/li>
&lt;li>&lt;strong>Align&lt;/strong> and connect for teamwork.&lt;/li>
&lt;li>&lt;strong>Accountability&lt;/strong> through tracking.&lt;/li>
&lt;li>&lt;strong>Stretch&lt;/strong> to achieve the impossible.&lt;/li>
&lt;/ol>
&lt;p>[&lt;a href="https://www.amazon.com/Measure-What-Matters-Google-Foundation/dp/0525536221/ref=sr_1_3?dchild=1&amp;amp;keywords=measure+what+matters&amp;amp;qid=1591233028&amp;amp;sr=8-3">Measure What Matters&lt;/a>, John Doerr]&lt;/p>
&lt;p>&lt;strong>OKRs are a tool&lt;/strong>. The act of using OKRs does not guarantee Google-like performance, innovation, or market dominance. OKRs are not a strategy, nor do they make up for lack of strategy. OKRs force a company or organization to think rigorously, to hold themselves accountable, to stretch, and to learn and grow. Persistent usage over time guarantees increased focus, alignment, and execution. Here are 10 ideas to use them more effectively 👇🏽&lt;/p>
&lt;h1 id="10-tips-for-using-okrs-effectively" class="group relative">10 Tips for using OKRs effectively&lt;a href="#10-tips-for-using-okrs-effectively" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;h2 id="1-objectives-must-be-big-and-motivating" class="group relative">1. Objectives must be Big and Motivating&lt;a href="#1-objectives-must-be-big-and-motivating" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>A great, challenging goal is inspiring. It brings teams together. It ignites that thing in us that led to human spaceflight and exploration of unknown frontiers. Inspirational objectives are critical at the company level, since company OKRs cascade down to teams and individuals. Everyone should feel proud to accomplish their objectives and together achieve a higher goal.&lt;/p>
&lt;pre>&lt;code>Objective: Win the Super Bowl
KR1: Passing attack amasses 300+ yards per game.
KR2: Defense allows fewer than 17 points per game.
KR3: Special-teams unit ranks in top 3 in punts return coverage.
&lt;/code>&lt;/pre>
&lt;p>[&lt;a href="https://www.whatmatters.com/get-examples/">whatmatters.org/get-examples&lt;/a>]&lt;/p>
&lt;h2 id="2-krs-must-be-measurable" class="group relative">2. KRs must be measurable&lt;a href="#2-krs-must-be-measurable" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>There are three important components of a key result:&lt;/p>
&lt;ol>
&lt;li>The metric by which you will measure progress.&lt;/li>
&lt;li>Where you are starting and what the goal is.&lt;/li>
&lt;li>When you&amp;rsquo;ll be done. The time is assumed to be end of the execution period (quarter or half) if not mentioned explicitly.&lt;/li>
&lt;/ol>
&lt;p>For example, let&amp;rsquo;s say you want to reduce your AWS costs by improving server efficiency.&lt;/p>
&lt;pre>&lt;code>Objective: Reduce AWS costs.
KR1: Increase server utilization.
&lt;/code>&lt;/pre>
&lt;p>How will we know whether we have achieved our OKR or not? When should we stop working on this or work harder? The OKR could be rephrased to make it clearer:&lt;/p>
&lt;pre>&lt;code>Objective: Reduce AWS costs from $100 to $80.
KR1: Increase server utilization from 65% to 80%
by the end of the quarter.
&lt;/code>&lt;/pre>
&lt;h2 id="3-use-binary-krs-sparingly" class="group relative">3. Use binary KRs sparingly&lt;a href="#3-use-binary-krs-sparingly" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>A binary KR is one that is either done or not done. For example:&lt;/p>
&lt;pre>&lt;code>Objective: Reduce AWS costs from $100 to $80.
KR1: Turn on auto-scaling for all services
by the end of the quarter.
&lt;/code>&lt;/pre>
&lt;p>Binary KRs are measurable — they were either accomplished or not — but usually need to be combined with quality counter-metrics to be effective. More on metrics and counter-metrics below.&lt;/p>
&lt;p>Another example of binary KRs are &amp;ldquo;Ship KRs&amp;rdquo;. They are often used when rolling out new features. Without baseline data, there is no way to measure or predict how a feature will perform. The team can put in work to predict outcomes, but sometimes, it is easier to ship something and see the impact. Ship KRs have their place, use them with caution.&lt;/p>
&lt;h2 id="4-all-key-results-must-have-dashboards" class="group relative">4. All Key Results must have dashboards&lt;a href="#4-all-key-results-must-have-dashboards" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The natural consequence of measurability is the scoreboard. Every measurable KR should have an associated dashboard. These need not be fancy — an excel sheet is sufficient to get started.&lt;/p>
&lt;p>Some results are only measured fully in retrospect or take a while to get an accurate read. Retention is an example of such a measure — we don&amp;rsquo;t know upfront which user will churn. In such cases, teams should use alternate approaches, such as:&lt;/p>
&lt;ol>
&lt;li>Create a proxy &amp;ldquo;operational&amp;rdquo; metric that correlates well with the goal metric. 1-day retention can be used for 30-day retention if we find that the bulk of churned users churn within a day.&lt;/li>
&lt;li>Use a forecasted or predicted number as the operational metric. Monitor the predicted metric to keep the error within bounds.&lt;/li>
&lt;/ol>
&lt;h2 id="5-key-results-must-be-exhaustive" class="group relative">5. Key Results must be exhaustive&lt;a href="#5-key-results-must-be-exhaustive" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Another common trap that leads to a feeling of inadequacy at the end of the quarter is missing an objective despite accomplishing its KRs. Imagine we take on a feature activation goal that ladders to some critical company objective.&lt;/p>
&lt;pre>&lt;code>Objective: Increase usage of feature X from 100 DAU to 200 DAU by the end of the quarter.
KR1: Improve activation funnel efficiency from 85% to 90% by August 1.
KR2: Improve feature X retention from 90% to 95% by September 1.
&lt;/code>&lt;/pre>
&lt;p>We get to the end of the quarter, both KRs are green, and feature usage hasn&amp;rsquo;t gone up at all.&lt;/p>
&lt;p>What if the lack of feature X had more to do with how you marketed it? If the problem is at the top of the funnel, increasing funnel efficiency is unlikely to achieve the goal.&lt;/p>
&lt;p>Missed KRs are abundantly evident in hindsight, but much harder to think of ahead of time. One approach is to ensure that the goal (or the first KR) captures the intended outcome (100 DAU to 200 DAU) and let the team add KRs along the way if enough progress is not being made.&lt;/p>
&lt;h2 id="6-pair-metrics-with-counter-metrics" class="group relative">6. Pair Metrics with Counter-Metrics&lt;a href="#6-pair-metrics-with-counter-metrics" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>There is natural pressure and temptation to achieve progress at all costs. There have been innumerable examples in the corporate world, with Enron and Wells Fargo being the most recent, where the drive to achieve a particular outcome, such as &amp;ldquo;Open more accounts,&amp;rdquo; compromised the company&amp;rsquo;s core values.&lt;/p>
&lt;p>To guard against such adverse outcomes, you can pair metrics with counter-metrics. For example, Wells Fargo could have paired &amp;ldquo;number of active accounts&amp;rdquo; with defensive metrics such as &amp;ldquo;each account must be active,&amp;rdquo; &amp;ldquo;each account must have a certain balance,&amp;rdquo; &amp;ldquo;no more than X accounts per person in a week.&amp;rdquo;&lt;/p>
&lt;p>In product-feature land, there is a natural pairing of growth-based KRs and quality-based KRs.&lt;/p>
&lt;pre>&lt;code>KR1: Feature X will have 100 users by the end of the quarter.
KR2: 7-day retention for Feature X will be 90%.
KR3: P0 and P1 bugs will be closed within a day.
&lt;/code>&lt;/pre>
&lt;h2 id="7-distinguish-between-committed-and-aspirational-okrs" class="group relative">7. Distinguish between Committed and Aspirational OKRs&lt;a href="#7-distinguish-between-committed-and-aspirational-okrs" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>OKRs are scored on a scale of 0.0 to 1.0. What&amp;rsquo;s a &amp;ldquo;good&amp;rdquo; score? Many tech organizations believe the answer is 0.7, based directly on Google&amp;rsquo;s scoring approach [&lt;a href="https://www.whatmatters.com/faqs/how-to-grade-okrs/">whatmatters.org — how to grade OKRs&lt;/a>]&lt;/p>
&lt;p>However, the Google scoring system applies to &lt;strong>Aspirational OKRs&lt;/strong> — typically Big, Hairy, Audacious Goals that you don&amp;rsquo;t know how to hit. You know it&amp;rsquo;s going to be hard, and you&amp;rsquo;re likely to fall short. But if you don&amp;rsquo;t reach for the moon, you&amp;rsquo;re never going to get there. The purpose of aspirational OKRs is to stretch you, to motivate you to solve more significant problems and to think differently.&lt;/p>
&lt;p>In contrast, some OKRs are expected to be delivered in full. Doerr calls these &lt;strong>Committed OKRs&lt;/strong>. For the business to succeed, for cross-functional teams to depend on each other, these goals must be achieved in full. You are pushing for complete success, not setting aspirational visions. The expected score for these OKRs is 1.0, with low variance.&lt;/p>
&lt;p>Distinguishing between committed and aspirational OKRs is essential. If a team biases too much toward commitment, they may not stretch enough. If you go all aspirational, you may not hit any goal. Leadership must make deliberate choices about how their company should think about their OKR bias.&lt;/p>
&lt;p>My current personal leaning is to bias toward committed OKRs for nearly everything, with one or two aspirational OKRs for things that are truly game-changing.&lt;/p>
&lt;h2 id="8-cascade-okrs-up-down-and-laterally" class="group relative">8. Cascade OKRs up, down, and laterally&lt;a href="#8-cascade-okrs-up-down-and-laterally" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>High functioning organizations speak the language of OKRs. When you depend on another team to hit your goal, you should expect to see that dependency in the other team&amp;rsquo;s OKRs. If you don&amp;rsquo;t, your likelihood of failure has increased significantly.&lt;/p>
&lt;p>Similarly, company Key Results often become Objectives for organizations within the company. Organization Key Results become Objectives for individual teams.&lt;/p>
&lt;p>OKRs can also cascade upward. For example, a team could discover that they have no way of hitting their goals, given their level of staffing. They refuse to take on the OKR, which in turn changes the OKRs above them, and so on.&lt;/p>
&lt;p>This cascade of OKRs through the organization is a critical step of aligning the entire company. While it may sound chaotic in theory, the company or organization should quiesce in a week or two.&lt;/p>
&lt;h2 id="9-personal-okrs-are-powerful-use-them-to-accelerate-your-career" class="group relative">9. Personal OKRs are powerful. Use them to accelerate your career&lt;a href="#9-personal-okrs-are-powerful-use-them-to-accelerate-your-career" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Company and Team OKRs drive organizational alignment and focus. You can create your personal OKRs too. While some will inevitably be congruent with your team&amp;rsquo;s OKRs, there could be others that are about making progress in your career or growing as an individual. Personal OKRs clarify your priorities with your manager and your peers. They hold you accountable for accomplishing what you set out to do.&lt;/p>
&lt;p>I think of Personal OKRs as writing my self-review, six months ahead of time. I have been creating personal OKRs, putting them into a document, and sharing them with my manager for about six years. They have helped me be clear with my manager about what constitutes success and failure, what is paramount in their minds, and keeps me accountable for making progress. I strongly recommend doing Personal OKRs and taking charge of your career.&lt;/p>
&lt;p>When writing personal OKRs, you must &lt;strong>focus on outcomes, not activities&lt;/strong>. This trap is avoided at the team and company level by making all KRs measurable. However, when looking at personal OKRs, we start using language like &amp;ldquo;Participate in interviewing&amp;rdquo; or &amp;ldquo;Be a part of X team.&amp;rdquo; Consider rephrasing into outcomes instead, such as &amp;ldquo;Hire 3 engineers by the end of quarter&amp;rdquo; or &amp;ldquo;Conduct an average of 1 interview per week.&amp;rdquo;&lt;/p>
&lt;h2 id="10-prefer-a-small-number-of-tightly-focused-okrs-to-a-long-list" class="group relative">10. Prefer a small number of tightly focused OKRs to a long list&lt;a href="#10-prefer-a-small-number-of-tightly-focused-okrs-to-a-long-list" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>OKRs should add focus. A large number of OKRs, whether individual or team, imply a lack of focus. When push comes to shove, which OKR is going to drop? Don&amp;rsquo;t bother adding OKR priorities — that is simply a bandaid over the root cause: you have too many OKRs.&lt;/p>
&lt;p>OKRs should also represent &lt;em>commitment&lt;/em>. Picking one OKR means that we cannot do something else. In your OKR discussions, you could include a list of things you chose &lt;em>not&lt;/em> to do to illustrate an effort to add focus.&lt;/p>
&lt;h2 id="bonus-effective-okr-usage-takes-years" class="group relative">Bonus: Effective OKR usage takes years&lt;a href="#bonus-effective-okr-usage-takes-years" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>If you&amp;rsquo;re getting started with OKRs, know that your initial implementation will suck. You may have too many, or they may not be measurable, chaos may reign as OKRs cascade across the organization. Know that there is no pinnacle of OKR usage — Google struggles with them as much as a series-A startup. Their struggles are different, and they&amp;rsquo;ve had more than two decades to get it right. But keep at it and make &lt;em>your&lt;/em> version of OKRs better over time. Be patient.&lt;/p>
&lt;h1 id="reference" class="group relative">Reference&lt;a href="#reference" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>This note is a combination of practical experience from a decade of practicing OKRs and Goals at Google and Facebook, and reading through three books:&lt;/p>
&lt;ol>
&lt;li>&lt;a href="https://www.amazon.com/Practice-Management-Peter-F-Drucker-ebook/dp/B003F1WM8E/ref=sr_1_1?dchild=1&amp;amp;keywords=the+practice+of+management&amp;amp;qid=1591220859&amp;amp;sr=8-1">The Practice Of Management&lt;/a> — Drucker&lt;/li>
&lt;li>&lt;a href="https://www.amazon.com/High-Output-Management-Andrew-Grove-ebook/dp/B015VACHOK/ref=sr_1_1?dchild=1&amp;amp;keywords=high+output+management&amp;amp;qid=1591220841&amp;amp;sr=8-1">High Output Management&lt;/a> — Grove&lt;/li>
&lt;li>&lt;a href="https://www.amazon.com/Measure-What-Matters-Google-Foundation/dp/0525536221/ref=sr_1_2?dchild=1&amp;amp;keywords=measure+what+matters&amp;amp;qid=1591220715&amp;amp;sr=8-2">Measure What Matters&lt;/a> — Doerr&lt;/li>
&lt;/ol>
&lt;h1 id="thanks" class="group relative">Thanks&lt;a href="#thanks" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>Many thanks to &lt;a href="https://www.linkedin.com/in/leoshklovskii/">Leo Shklovskii&lt;/a>, &lt;a href="https://www.linkedin.com/in/lilyruo/">Lily Zhang&lt;/a>, &lt;a href="https://twitter.com/julesdwalt">Jules Walter&lt;/a>, &lt;a href="https://www.linkedin.com/in/devarispbrown/">DeVaris Brown&lt;/a>, and &lt;a href="https://twitter.com/ebloch">Ethan Bloch&lt;/a> for reviewing early drafts of this work and providing invaluable feedback.&lt;/p></description></item><item><title>Joining Digit</title><link>https://rushabhdoshi.com/posts/2020-04-07-joining-digit/</link><pubDate>Tue, 07 Apr 2020 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2020-04-07-joining-digit/</guid><description>&lt;p>&lt;img src="https://rushabhdoshi.com/assets/digit/banner.png" alt="Hello Digit">&lt;/p>
&lt;p>&lt;strong>Non-COVID news: I&amp;rsquo;ve joined &lt;a href="https://digit.co/">Digit&lt;/a> as Chief Product Officer&lt;/strong>.&lt;/p>
&lt;p>We are living through unprecedented times. Humanity is collectively battling an enemy that we cannot see, one that doesn&amp;rsquo;t recognize national boundaries, and kills without remorse. The economic impact is horrendous. Nearly 6 million people have filed unemployment claims in the US in the last week alone [&lt;a href="https://www.dol.gov/sites/dolgov/files/OPA/newsreleases/ui-claims/20200551.pdf">source&lt;/a>] — a number never before seen in our country.&lt;/p>
&lt;p>When people lose their livelihoods, they need cash to survive. Emergency funds are built for hard times, such as the ones we are experiencing right now. However, saving money, when you&amp;rsquo;re living paycheck to paycheck, is incredibly hard. Human psychology works against you. We are wired to think in the present and to value immediate rewards. We need tremendous will power to look at every paycheck, and put some money away for a rainy day.&lt;/p>
&lt;p>Digit started as an app to help people save. You connect your checking account to Digit, it analyzes your cash flow, and it intelligently moves your money to a Rainy Day Fund. You don&amp;rsquo;t think about saving money, but you&amp;rsquo;re saving. It is magical. Nobody wants to lose their job, but if it happens, at least you have some money saved up.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/digit/twitter-1.png" alt="Digit helps people">&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/digit/twitter-2.png" alt="Digit helps people">&lt;/p>
&lt;p>Digit&amp;rsquo;s mission is to make financial health effortless for everyone. Our app supports saving for any goal, not just a Rainy Day. We help you automatically pay off your student loans. We help you automatically pay credit cards in advance to reduce your debt. The list of features is long and growing. We want people to feel less anxious about money, knowing that Digit is there to help them become and remain financially healthy. If the worst happens, and you lose your job because of a global pandemic, &lt;a href="https://digit.co/together">Digit is there to help&lt;/a>.&lt;/p>
&lt;p>Joining a company is a big decision. Being genuinely in love with the mission is a requirement, but it is not sufficient. Work is a large part of life. I believe in working with great people — who have done amazing things, are smart and driven, and above all, are exceptional human beings.&lt;/p>
&lt;p>I have known Ethan Bloch, Digit&amp;rsquo;s founder and CEO, since 2017. I have always admired Ethan&amp;rsquo;s leadership — he stays true to his values and the mission, and does not hesitate to make hard calls. He has been a friend and someone I seek out for advice and counsel. Over time, he has built an exceptional leadership team with Michael Murray, &lt;a href="https://www.linkedin.com/pulse/why-im-joining-digit-vishwas-prabhakara/?trackingId=OqO6JNBRIssbc9Kj3aNYsQ%3D%3D">Vishwas Prabhakara&lt;/a>, &lt;a href="https://medium.com/@carolyn.satenberg/why-i-joined-digit-b3ba3c3e70e3">Carolyn Satenberg&lt;/a>, &lt;a href="https://medium.com/@kar.hariharan/why-i-joined-digit-e8a193268944">Karthik Hariharan&lt;/a>, and Samar Shah. I&amp;rsquo;m thrilled to join this crew and call them colleagues and friends, along with &lt;a href="https://www.linkedin.com/posts/ryannier_now-for-some-non-covid-news-live-and-straight-activity-6653361886450585600-qhPi/">Ryan Nier&lt;/a>, our head of Legal and Compliance.&lt;/p>
&lt;p>Digit is a fantastic company with great people who are dedicated to the company&amp;rsquo;s mission. We&amp;rsquo;re growing, and we&amp;rsquo;re hiring, virus be damned. We are looking for product designers and product engineers who love building products that help people. If you&amp;rsquo;re excited about our mission to make financial health effortless for everyone, &lt;a href="https://digit.co/careers">come join us&lt;/a>!&lt;/p>
&lt;ul>
&lt;li>Product Designer: &lt;a href="https://boards.greenhouse.io/digit/jobs/2004653">https://boards.greenhouse.io/digit/jobs/2004653&lt;/a>&lt;/li>
&lt;li>Software Engineer, Product: &lt;a href="https://boards.greenhouse.io/digit/jobs/922676">https://boards.greenhouse.io/digit/jobs/922676&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Welcome To Remote Work</title><link>https://rushabhdoshi.com/posts/2020-03-02-welcome-to-remote-work/</link><pubDate>Mon, 02 Mar 2020 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2020-03-02-welcome-to-remote-work/</guid><description>&lt;p>&lt;img src="https://rushabhdoshi.com/assets/remote-work/coronavirus.jpg" alt="COVID-19">&lt;/p>
&lt;h1 id="the-trigger" class="group relative">The Trigger&lt;a href="#the-trigger" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>As of March 2nd, 2020, the coronavirus outbreak has officially hit the tech sector. The virus, SARS-CoV-19, causes the disease, COVID-19. There are several different strains of the virus at this point, as it mutates at an average of about two mutations per month, resulting in several different strains in different places. [&lt;a href="https://bedford.io/blog/ncov-cryptic-transmission/">source&lt;/a>]. There is a rash of cases in the Seattle area, with a smaller number reported in a host of other places, including California and the Bay Area.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/remote-work/COVID-19-ex-china-growth.png" alt="COVID-19 ex-China growth">&lt;/p>
&lt;p>COVID-19 Global Cases, ex-China. &lt;a href="https://www.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6">Data by Johns Hopkins CSSE&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://twitter.com/eladgil">Elad Gil&lt;/a> published an &lt;a href="https://docs.google.com/document/d/1hYPrTMKfcEFux2rETlK07TAmW1wAW3003a00YRDn9qw/edit">excellent post&lt;/a> about the impact of the virus on tech companies, including detailed but readable background information on the virus and it&amp;rsquo;s spread. Some useful Twitter accounts to follow are in the resources section below. Most important things to remember (summarized from Elad&amp;rsquo;s post):&lt;/p>
&lt;ol>
&lt;li>&lt;strong>We will likely see a widespread outbreak of COVID-19&lt;/strong>. However, most cases will be mild, and most people will recover.&lt;/li>
&lt;li>&lt;strong>Symptoms manifest between 3-14 days from exposure&lt;/strong>, including fever, cough, and shortness of breath. [&lt;a href="https://www.mayoclinic.org/diseases-conditions/coronavirus/symptoms-causes/syc-20479963">Mayo clinic&lt;/a>]&lt;/li>
&lt;li>&lt;strong>Case Fatality Rate (CFR: deaths / people infected) is estimated at 2-3% but could be much lower&lt;/strong>, with better healthcare. People over 60 have a higher risk, as do patients with existing cardiovascular disease, diabetes, chronic respiratory disease, hypertension, and cancer. [&lt;a href="https://www.mayoclinic.org/diseases-conditions/coronavirus/symptoms-causes/syc-20479963">source&lt;/a>] There have been no reported fatalities in infants and children. [&lt;a href="https://jamanetwork.com/journals/jama/fullarticle/2761659">source&lt;/a>]&lt;/li>
&lt;li>&lt;strong>R0 value estimate is between 2 and 3&lt;/strong>. Every infected person will likely infect 2-3 more. In contrast, flu R0 is about 1.5. [&lt;a href="https://www.ncbi.nlm.nih.gov/pubmed/32007643">source&lt;/a>]&lt;/li>
&lt;/ol>
&lt;p>[Edit March 2021] In hindsight, using the below mnemonic was insensitive. When it was written, it tied the site of the biggest early infection to what people should do. In retrospect, after the term &amp;ldquo;China&amp;rdquo; was co-opted as a vehicle for racial hatred, it is wrong.&lt;/p>
&lt;p>&lt;del>Quarantine and focused personal hygiene appear to be our best defenses against the virus at this point. Use the WUHAN mnemonic as a reminder:&lt;/del>&lt;/p>
&lt;blockquote>
&lt;p>&lt;del>W - Wash hands with soap frequently. [&lt;a href="https://www.youtube.com/watch?v=3PmVJQUCm4E">YouTube&lt;/a>]&lt;/del>&lt;/p>
&lt;p>&lt;del>U - Use a mask if you are sick and infected.&lt;/del>&lt;/p>
&lt;p>&lt;del>H - Have your temperature taken daily if you have been exposed.&lt;/del>&lt;/p>
&lt;p>&lt;del>A - Avoid large crowds and gatherings.&lt;/del>&lt;/p>
&lt;p>&lt;del>N - Never touch your face with your hands.&lt;/del>&lt;/p>&lt;/blockquote>
&lt;h1 id="the-response" class="group relative">The Response&lt;a href="#the-response" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>Tech companies are starting to take action to protect their employees. I expect this trend to continue and accelerate over the next week. The responses generally follow the same principles:&lt;/p>
&lt;ol>
&lt;li>Minimize or cancel all work-related travel.&lt;/li>
&lt;li>Cancel large conferences and gatherings.&lt;/li>
&lt;li>Stay home if you exhibit any symptoms or believe you have been exposed to COVID-19.&lt;/li>
&lt;li>Working from home is encouraged for everyone and &lt;em>mandatory&lt;/em> for critical employees.&lt;/li>
&lt;li>Interviews are over video instead of in-person.&lt;/li>
&lt;/ol>
&lt;p>Sources: &lt;a href="https://stripe.com/newsroom/news/covid-19">Stripe&amp;rsquo;s public post&lt;/a>, &lt;a href="https://blog.twitter.com/en_us/topics/company/2020/keeping-our-employees-and-partners-safe-during-coronavirus.html">Twitter&amp;rsquo;s post,&lt;/a> &lt;a href="https://docs.google.com/spreadsheets/d/1awyG207-dR8HfpZR2T4GrPqixdT5Rht-Ex04pZ1KLNk/edit#gid=0">Coronavirus company response tracker&lt;/a>&lt;/p>
&lt;h1 id="the-shift-to-remote" class="group relative">The Shift To Remote&lt;a href="#the-shift-to-remote" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>COVID-19 represents a watershed moment for how we work. Tech companies have been trying to figure out how to move more of their workforce to remote, to take advantage of talent pools outside of major hubs like San Francisco, New York, and Seattle. Most companies that start in one location advance step-by-step, moving toward a hub model, and some like Stripe, &lt;a href="https://stripe.com/blog/remote-hub">move to full remote&lt;/a> in addition to having a central hub.&lt;/p>
&lt;p>After the outbreak of the virus, no tech company has a real choice. Every company will become a remote-work company out of necessity. Leaders need to face the reality of not having everyone in the office — they should be proactive and not get caught flat-footed. Here are a few things to consider:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Async Remote vs. Sync Remote&lt;/strong>.
If your current culture is set up to work in one office, within one timezone, you should maintain the concept of &amp;ldquo;working hours&amp;rdquo; where everyone is present on Slack or Teams. Jumping to fully async remote, where everyone works any hours they like, might be too disruptive for your company&amp;rsquo;s flow.&lt;/li>
&lt;li>&lt;strong>Check your tools&lt;/strong>.
Do you have enough zoom licenses? How are you going to do 100 people conferences remotely? Do you have a way to do collaborative whiteboarding? Are you capable of visually providing design feedback?&lt;/li>
&lt;li>&lt;strong>Dry run&lt;/strong>.
If your company isn&amp;rsquo;t going full remote right away, you can still mandate staying home for a few days at a time, to work out the kinks. Do you have a process to deal with emergencies and outages? Do you have phone numbers in an easily accessible directory?&lt;/li>
&lt;li>&lt;strong>Preserve culture&lt;/strong>.
Every company has its customs and traditions, from Monday donuts to Friday beers. People celebrate achievements together, have ways of communicating and collaborating. Art — ranging from murals to laptop stickers — gives us a constant reminder of belonging and shared values. How will you preserve this when you don&amp;rsquo;t have a common place to meet? For example, Fil Fortes uses a &lt;a href="https://fortes.com/2019/working-from-home-green-screen/">green screen to change up the background&lt;/a> and keep things fresh.&lt;/li>
&lt;/ol>
&lt;p>Good books on remote work include Jason Fried and David Heinemeier Hansson&amp;rsquo;s &lt;a href="https://www.amazon.com/Remote-Office-Required-Jason-Fried/dp/0804137501/ref=sr_1_1?crid=2DYH7RYRQBID&amp;amp;keywords=remote+jason+fried&amp;amp;qid=1583217726&amp;amp;sprefix=remote+jason+fried%2Caps%2C196&amp;amp;sr=8-1">Remote: Office Not Required&lt;/a>. The book not only makes a strong case for remote work (not required at the moment), but has several good tips, learned through experience.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/remote-work/remote-book-cover.png" alt="Remote Book Cover">&lt;/p>
&lt;h1 id="self-and-family-care" class="group relative">Self and Family Care&lt;a href="#self-and-family-care" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>There is a lot of information about COVID-19, and it&amp;rsquo;s evolving fast. The consensus at this time, for yourself and your family, seems to be the following:&lt;/p>
&lt;ol>
&lt;li>Be prepared for a self-quarantine of 14 days or more. Stock up on food. &lt;a href="https://theprepared.com/wuhan-coronavirus/">ThePrepared&lt;/a> has an excellent guide to getting food. Note that a lot of vendors are running out due to the increased demand. There is a distinction between food that will last for a decade (of which there seems to be short supply) and food that will last for a year (which is available in most grocery stores and Costco). The sooner you buy, the better.&lt;/li>
&lt;li>Be prepared for medicine shortages. Supply chains will get affected, and there could be runs on common drugs. Get a 90-day supply of your medication.&lt;/li>
&lt;li>Wash hands regularly. &lt;a href="https://www.youtube.com/watch?v=3PmVJQUCm4E">Regular hand washing&lt;/a> (say ABC twice) is one of the best defenses against the virus spreading. The primary entry points are eyes, mouth, and nose, but we touch them with our hands roughly &lt;a href="https://www.ncbi.nlm.nih.gov/pubmed/25637115">23 times per hour&lt;/a>. Hand sanitizers are only useful if they are 60% alcohol, and you rub your hands for 20 seconds or more. They&amp;rsquo;re also out of stock (in the Bay Area.)&lt;/li>
&lt;li>Avoid large gatherings. Regularly wiping down commonly used surfaces, like door handles, will help prevent the spread of the disease in schools and other shared places.&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>I hope this has been helpful, and everyone stays healthy and safe.&lt;/p>&lt;/blockquote>
&lt;h1 id="resources" class="group relative">Resources&lt;a href="#resources" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;ul>
&lt;li>Elad&amp;rsquo;s advice for startups: &lt;a href="https://docs.google.com/document/d/1hYPrTMKfcEFux2rETlK07TAmW1wAW3003a00YRDn9qw/edit">https://docs.google.com/document/d/1hYPrTMKfcEFux2rETlK07TAmW1wAW3003a00YRDn9qw/edit&lt;/a>&lt;/li>
&lt;li>GitHub data repo updated regularly from Johns Hopkins: &lt;a href="https://github.com/CSSEGISandData/COVID-19">https://github.com/CSSEGISandData/COVID-19&lt;/a>&lt;/li>
&lt;li>WHO-China Joint Mission on COVID-19: &lt;a href="https://www.who.int/docs/default-source/coronaviruse/who-china-joint-mission-on-covid-19-final-report.pdf">https://www.who.int/docs/default-source/coronaviruse/who-china-joint-mission-on-covid-19-final-report.pdf&lt;/a>&lt;/li>
&lt;li>ThePrepared guide on preparing: &lt;a href="https://theprepared.com/wuhan-coronavirus/">https://theprepared.com/wuhan-coronavirus/&lt;/a>&lt;/li>
&lt;/ul>
&lt;h1 id="company-plans" class="group relative">Company plans&lt;a href="#company-plans" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;ul>
&lt;li>Public list of all plans: &lt;a href="https://docs.google.com/spreadsheets/d/1awyG207-dR8HfpZR2T4GrPqixdT5Rht-Ex04pZ1KLNk/edit#gid=0">https://docs.google.com/spreadsheets/d/1awyG207-dR8HfpZR2T4GrPqixdT5Rht-Ex04pZ1KLNk/edit#gid=0&lt;/a>&lt;/li>
&lt;li>Stripe: &lt;a href="https://stripe.com/newsroom/news/covid-19">https://stripe.com/newsroom/news/covid-19&lt;/a>&lt;/li>
&lt;li>Twitter: &lt;a href="https://blog.twitter.com/en_us/topics/company/2020/keeping-our-employees-and-partners-safe-during-coronavirus.html">https://blog.twitter.com/en_us/topics/company/2020/keeping-our-employees-and-partners-safe-during-coronavirus.html&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Twitters to follow&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://twitter.com/balajis">Balaji Srinivasan&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/eladgil">Elad Gil&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/trvrb">Trevor Bedford&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/firefoxx66">Dr. Emma Hodcroft&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>4 Interesting Reads - Feb '20</title><link>https://rushabhdoshi.com/posts/2020-02-22-4-interesting-reads/</link><pubDate>Mon, 24 Feb 2020 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2020-02-22-4-interesting-reads/</guid><description>&lt;p>&lt;img src="https://rushabhdoshi.com/assets/4-interesting-reads/repper-background.jpg" alt="background">
&amp;ndash; &lt;em>Generated using &lt;a href="https://repper.app">repper.app&lt;/a>&lt;/em>&lt;/p>
&lt;p>I received positive feedback and encouragement for my previous &lt;a href="https://rushabhdoshi.com/2020/01/27/4-interesting-reads.html">4 Interesting Reads&lt;/a> post. Here is the next one, in the same vein. Feedback is always welcome, please reach out.&lt;/p>
&lt;h2 id="making-uncommon-knowledge-common-by-kevin-kwok" class="group relative">Making Uncommon Knowledge Common by Kevin Kwok&lt;a href="#making-uncommon-knowledge-common-by-kevin-kwok" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="https://kwokchain.com/2019/04/09/making-uncommon-knowledge-common/">https://kwokchain.com/2019/04/09/making-uncommon-knowledge-common/&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Rich_Barton">Rich Barton&lt;/a> has founded three companies valued at over a billion dollars: Expedia, Glassdoor, and Zillow. In the linked article, Kwok explains Barton&amp;rsquo;s central strategy: take &lt;em>public&lt;/em> knowledge that is hard to obtain for historical or structural reasons, make it easily accessible, and as a result, own customer demand. When looking for flights or hotels, you start with Expedia. When you&amp;rsquo;re looking to sell your house, your journey begins at Zillow with its Zestimate. This is data that has been converted to content that people want. All this &amp;ldquo;content&amp;rdquo; substantially lowers customer acquisition costs (CAC), the bane of a startup&amp;rsquo;s unit economics. The takeaway for product people: cheaply create high quality, personalized content, and use it to drive down CAC, and provide value.&lt;/p>
&lt;h2 id="the-limits-of-high-speed-rail-by-ivan-rivera" class="group relative">The Limits Of High Speed Rail by Ivan Rivera&lt;a href="#the-limits-of-high-speed-rail-by-ivan-rivera" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="https://mappingignorance.org/2020/01/22/the-limits-of-high-speed-rail/">https://mappingignorance.org/2020/01/22/the-limits-of-high-speed-rail/&lt;/a>&lt;/p>
&lt;p>I am fascinated and genuinely interested in the engineering problems faced in building things that are world record holders - the fastest car or train, the tallest building, the largest dam. For this reason, I could not put down Adrian Newey&amp;rsquo;s autobiography &lt;a href="https://www.amazon.com/dp/B073TS2ZWN/">How To Build A Car&lt;/a>, about his journey in the world of Formula 1 racing, and the nonstop engineering ingenuity to build some of the world&amp;rsquo;s fastest cars. In a similar vein, Rivera&amp;rsquo;s article goes into detail about the engineering required to break the world record for the fastest train — SNCF&amp;rsquo;s TGV V150 (named because 150m/s == 540km/h, the target speed) clocked 574.8 km/h on April 30, 2007. He goes into a lot of fascinating detail around wheel-rail contact points, why diesel-powered trains can&amp;rsquo;t really go beyond 240 km/h, the role of aerodynamics, and the evolution of the pantograph-catenary contact (for electrical power transmission). I firmly believe that we advance the state of all human inventions and knowledge when we push the limits of what we can achieve, and for this reason, studying record-breaking inventions is worthwhile.&lt;/p>
&lt;h2 id="the-new-business-of-ai-by-martin-casado-and-matt-bornstein" class="group relative">The New Business Of AI by Martin Casado and Matt Bornstein&lt;a href="#the-new-business-of-ai-by-martin-casado-and-matt-bornstein" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="https://a16z.com/2020/02/16/the-new-business-of-ai-and-how-its-different-from-traditional-software/">https://a16z.com/2020/02/16/the-new-business-of-ai-and-how-its-different-from-traditional-software/&lt;/a>&lt;/p>
&lt;p>The stellar people at Andreesen-Horowitz write incredibly insightful commentaries on entire industries: find the thing you&amp;rsquo;re interested in (SaaS? Marketplaces? Crypto?) and follow the relevant a16z partners. Casado and Bornstein&amp;rsquo;s post on the fundamentals of AI startups is packed with insights and hard to compress further. They posit that AI startups have &lt;strong>lower gross margins&lt;/strong> (50-60%) compared to traditional SaaS businesses (60-80%) because of two reasons. 1) High cloud costs due to training, retraining, and inference over large data sets. 2) Human-in-the-loop costs, both for high-quality data (cleaning, labeling) and for checking the AI&amp;rsquo;s results. AI startups have a &lt;strong>harder time scaling&lt;/strong> because edge cases are much harder to deal with - there is a very long tail of edge cases due to the sheer volume of high dimensional space. Finally, they have &lt;strong>weaker defensive moats&lt;/strong> because a lot of model development is being done in academia, or is open-sourced, and data scale effects are weaker than people think. I believe we are still in AI frontier land: new discoveries, new tools, new rules. Hence, understanding the business of AI is as vital as grokking the technology, and makes this article worth the time.&lt;/p>
&lt;h2 id="group-chat-group-stress-by-team-basecamp" class="group relative">Group Chat: Group Stress by Team Basecamp&lt;a href="#group-chat-group-stress-by-team-basecamp" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="https://basecamp.com/guides/group-chat-problems">https://basecamp.com/guides/group-chat-problems&lt;/a>&lt;/p>
&lt;p>One of the most significant challenges of today&amp;rsquo;s Slack based tech work environment is that there is no time to &lt;em>think.&lt;/em> I don&amp;rsquo;t believe Slack is the root cause; it is somewhere in between an enabler and an accelerant. But, there are too many channels to follow, lots of FOMO about stuff that does not matter, shallow thinking, and fast responses, no preservation of context, and forced ephemerality. The linked article (obviously biased, Basecamp is a competing product), lists out all these problems in greater detail. The central point, which I wholeheartedly agree with, is that &amp;ldquo;chat attacks attention, and severely hinders deep work.&amp;rdquo; If you&amp;rsquo;re in a Slack based environment and have figured out a way to do deep work without constant interruption, kindly write a post about it and help out the world (and let me know!)&lt;/p>
&lt;h2 id="bonus-the-man-in-the-arena-by-theodore-roosevelt" class="group relative">Bonus: The Man In The Arena by Theodore Roosevelt&lt;a href="#bonus-the-man-in-the-arena-by-theodore-roosevelt" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Doris Kearn Goodwin&amp;rsquo;s book &lt;a href="https://www.amazon.com/gp/product/B079RLPFG7/ref=dbs_a_def_rwt_hsch_vapi_tkin_p1_i0">Leadership&lt;/a> is a fantastic read about how 4 of America&amp;rsquo;s great leaders (Johnson is controversial) suffered and dealt with significant personal hardship, and how it shaped their presidency and their leadership. Theodore Roosevelt is my favorite leader because of his bias toward action, his values and morality centered around always doing the right thing, his boldness, and his courage. I come back to this quote often, whenever I&amp;rsquo;m feeling low about my work, or overly criticized, or when an idea that I thought was going to change the world turns out to be a dud, or when I am scared of taking a leap. I hope it helps you as much as it has helped me.&lt;/p>
&lt;blockquote>
&lt;p>It is not the critic who counts; not the man who points out how the strong man stumbles, or where the doer of deeds could have done them better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming; but who does actually strive to do the deeds; who knows great enthusiasms, the great devotions; who spends himself in a worthy cause; who at the best knows in the end the triumph of high achievement, and who at the worst, if he fails, at least fails while daring greatly, so that his place shall never be with those cold and timid souls who neither know victory nor defeat.&lt;/p>
&lt;p>— Theodore Roosevelt, &lt;a href="https://en.wikisource.org/wiki/Citizenship_in_a_Republic">Citizenship in a Republic&lt;/a>&lt;/p>&lt;/blockquote></description></item><item><title>3 Frameworks For Making Complex Decisions</title><link>https://rushabhdoshi.com/posts/2020-02-14-3-frameworks-for-making-complex-decisions/</link><pubDate>Fri, 14 Feb 2020 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2020-02-14-3-frameworks-for-making-complex-decisions/</guid><description>&lt;p>&lt;img src="https://rushabhdoshi.com/assets/complex-decisions/highway-interchange.jpg" alt="Complex highway interchange">&lt;/p>
&lt;p>Life is full of complex decisions: capital purchases, such as a car or a house, planning a vacation, choosing a new job, picking a product strategy, prioritizing roadmaps, hiring someone. Complex decisions have several shared traits: the list of options is often extensive, evaluation criteria are ill-defined, the outcomes are hard to predict, input data is unavailable or incomplete. Humans understand large systems by building &lt;a href="https://www.amazon.com/Great-Mental-Models-Thinking-Concepts-ebook/dp/B07P79P8ST">mental models&lt;/a>, which are more straightforward than the reality they represent. Mental models are a great thing: they allow us to make progress without getting bogged down in every little detail. But they also have their flaws. Most notably, human cognitive biases, our failures to think and communicate clearly, lead us to sub-optimal decisions.&lt;/p>
&lt;p>Psychologists and behavioral economists have spent a considerable amount of time and mental energy dedicated to understanding the human decision-making process. By systematically understanding our &lt;a href="https://en.wikipedia.org/wiki/List_of_cognitive_biases">cognitive biases&lt;/a> and flaws, smart people have come up with frameworks to counteract their ill effects. Using these frameworks can lead to decisions with better eventual outcomes., how we fail, and how to make decisions that lead to better results. Amos Tversky, Daniel Kahneman, Richard Thaler, Dan Ariely, and Chip Heath have done seminal research in this field — and distilled their ideas into highly readable books. &lt;a href="https://www.amazon.com/dp/B00555X8OA/ref=dp-kindle-redirect?_encoding=UTF8&amp;amp;btkr=1">Thinking Fast&lt;/a> &lt;a href="https://www.amazon.com/dp/B00555X8OA/">and&lt;/a> &lt;a href="https://www.amazon.com/dp/B00555X8OA/ref=dp-kindle-redirect?_encoding=UTF8&amp;amp;btkr=1">Slow&lt;/a>, &lt;a href="https://www.amazon.com/Nudge-Improving-Decisions-Health-Happiness-ebook/dp/B00A5DCALY/">Nudge&lt;/a>, &lt;a href="https://www.amazon.com/Predictably-Irrational-Revised-Expanded-Decisions-ebook/dp/B002C949KE/">Predictably Irrational&lt;/a>, and &lt;a href="https://heathbrothers.com/books/decisive/">Decisive&lt;/a> are amongst my favorites. I strongly encourage you to read these to gain a deeper understanding of the field.&lt;/p>
&lt;p>In this post, I present three practical frameworks to improve decision- making in different contexts. Frameworks are hard to understand in the abstract. Just reading theory leads to a shallow understanding of how to apply them in practice. To make things more concrete, I use two practical problems that I have solved using some combination of these three frameworks.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>How to buy a car&lt;/strong>: Large capital purchases, such as buying a car or a house, can make for challenging decisions. Some input data for our car-buying determination: I have a growing family with small kids. I have a short commute to work. I care about style and comfort. I don&amp;rsquo;t intend to race my car on a track. I care about the environment and would like something efficient. I have a nominal budget of $50k in mind. A cursory examination of the car market should quickly reveal a broad spectrum of options. For the sake of this post, let&amp;rsquo;s narrow that down to 1) a minivan (Honda Odyssey), 2) a hybrid sedan (Prius), and 3) a pure electric (Tesla Model 3).&lt;/li>
&lt;li>&lt;strong>How to pick the next feature&lt;/strong>: We make many complicated decisions at work. Product Managers and organizational leaders often need to decide what part of their product they should focus on given their goals. This strategic choice is perhaps the most impactful, on par with &lt;a href="https://rushabhdoshi.com/2020/01/13/on-execution.html">perfect execution&lt;/a>. Input data: our app is in the market. It is growing slowly. Churn is higher than we&amp;rsquo;d like. Research shows that the current set of customers &lt;em>like&lt;/em> the app, but don&amp;rsquo;t &lt;em>love&lt;/em> it. Should we focus on acquiring new users, increasing lifetime value, or churning fewer users?&lt;/li>
&lt;/ol>
&lt;h1 id="how-not-to-decide" class="group relative">How Not To Decide&lt;a href="#how-not-to-decide" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;h2 id="1-gut-feeling" class="group relative">1. Gut Feeling&lt;a href="#1-gut-feeling" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Listening to your gut is probably the most common approach to decision making. It&amp;rsquo;s the way we make most decisions - if we did an exhaustive process to decide what to eat for lunch, we&amp;rsquo;d never get anything done or be able to make any progress. Instinct is your subconscious brain pattern matching inputs with what it has seen in the past and making a quick, shortcut decision. Our brains are fantastic at taking in vast amounts of data and making gestalt decisions; don&amp;rsquo;t fight your instincts.&lt;/p>
&lt;p>However, when it comes to highly complex decisions, the very brain that helps us make rapid decisions and move forward with life, deludes us into making bad decisions. Our fast decision-making process is often known as the &amp;ldquo;reptilian brain&amp;rdquo; or &amp;ldquo;System 1 thinking&amp;rdquo;. It is the reason we survived on the savannah: when we thought we saw a lion, our brain didn&amp;rsquo;t take its time working through whether it was a bird, or a blade of grass, or a zebra. It told us to climb the tree first. Our deep-thinking, thoughtful cousins were pruned out of the family tree by the lion. These instant reactions, fight-or-flight instincts, all the shortcuts our brains use, can show up as cognitive biases in decision-making.&lt;/p>
&lt;p>Let&amp;rsquo;s use the car buying example. Imagine we walked into the local Toyota dealership. It&amp;rsquo;s a boiling hot day in the middle of summer. Salespeople are extremely busy, overworked, and slightly rude. They give us the keys to a car that&amp;rsquo;s been baking in the sun. We test drive it, hate it, and pass summary judgment: it&amp;rsquo;s a pile of rubbish. The car is way too hot, takes forever to cool down, drives like a sloth. Additionally, we&amp;rsquo;re unhappy about not being treated like royalty and don&amp;rsquo;t want to buy from that dealer anyway — hard pass.&lt;/p>
&lt;p>We have attributed the rudeness of a particular salesperson to not just the entire dealership, but &lt;em>all&lt;/em> the dealers of this specific car manufacturer. This mistake is called a &lt;em>fundamental attribution error&lt;/em>. We have attributed the car&amp;rsquo;s inability to cool down instantly to a manufacturing flaw. We have ignored the &lt;em>base rate&lt;/em>: all vehicles sitting in the sun on that day were hot and would take time to cool down. As a result of these biases, we may have discarded a perfectly reasonable option thanks to our instant decision making brain.&lt;/p>
&lt;h2 id="2-the-giant-spreadsheet" class="group relative">2. The Giant Spreadsheet&lt;a href="#2-the-giant-spreadsheet" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>I love spreadsheets. They allow me to organize my life (and I love organization) and view things at various levels of detail. It is very tempting to distill every decision to some formula and take the flawed human out of the loop. The formula can be straightforward: weighted sums seem to do the trick. Every decision now becomes so &lt;em>precise&lt;/em>, so mathematically elegant. Don&amp;rsquo;t like the outcome? You must have gotten the inputs or weights wrong.&lt;/p>
&lt;p>Let&amp;rsquo;s visit our product feature prioritization decision. We could build features that target acquisition, LTV, or churn. Each row has a cost and an impact estimate. Any Product Manager worth their salt will come up with a table of priorities, each of these features as rows, and drop columns to show potential impact. Some complex mathematical jiu-jitsu comes next, and the potential impact column has numbers and color coding from red to green. We must pick the greenest feature because our matrix just told us so!&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/complex-decisions/giant-spreadsheet.png" alt="Giant spreadsheet">&lt;/p>
&lt;p>This approach is problematic because it reduces humans to automatons and throws out all intuition. Moreover, it overly simplifies the model by diminishing highly complex information into a number. In the made-up example above, working on notifications seems to win over everything else, using the scheme I&amp;rsquo;ve put in. But that the model itself is biased - cost and impact estimates might be completely bogus, our gut might tell us that focusing on acquiring new users is more important, or that the cost of doing notifications is probably higher.&lt;/p>
&lt;p>Intuition is essential — our brains are pattern-matching against past experiences and predicting the future. Numerical models create a false sense of precision and delude us into trusting the models. Our minds are excellent at translating vast amounts of information into decisions, and we should trust them while finding ways to correct their shortcomings.&lt;/p>
&lt;h1 id="decision-frameworks" class="group relative">Decision Frameworks&lt;a href="#decision-frameworks" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>The next section outlines the three decision frameworks that I have used in some shape or form. None of these frameworks are mine - I have merely adapted them for my purposes and found them to be applicable and relevant.&lt;/p>
&lt;h2 id="framework-1-reducing-dimensionality" class="group relative">Framework 1: Reducing Dimensionality&lt;a href="#framework-1-reducing-dimensionality" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;em>The credit for this idea goes to my friend and colleague &lt;a href="https://www.linkedin.com/in/josh-williams-5a2a343/">Josh Williams&lt;/a>. The principles are easy to understand and apply on the fly, require little formal work, and help break through a decision making logjam.&lt;/em>&lt;/p>
&lt;p>Complex decisions are often challenging because they contain an overwhelming number of dimensions. Decomposing the problem results in a large number of smaller choices along each dimension. However, dimensions are not orthogonal — changes in one affect another. Trying to optimize all dimensions at the same time quickly gets overwhelming.&lt;/p>
&lt;p>Take the car-buying example: we need to make individual decisions about passenger capacity, gas mileage, styling, manufacturer, safety features, cargo hauling, maintenance, buy vs. lease, and so on. In the example above, we need a car that can carry five humans, is efficient, stylish, safe, easy to maintain, and costs less than 50k. A Porsche 911 is stylish and safe, but doesn&amp;rsquo;t cost less than 50k or carry five humans. A minivan fits most of the requirements but is on the lowest end of the style spectrum. A Prius is in the &amp;ldquo;meh&amp;rdquo; range on most things but does excellent on efficiency. The perfect car simply doesn&amp;rsquo;t exist. What do we do?&lt;/p>
&lt;p>A good approach in such circumstances is to &lt;strong>reduce dimensionality&lt;/strong>. If you magically cared only about your budget and passenger capacity, the answer would become much more apparent. We can reduce dimensionality in 3 ways:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Aggressively ignore dimensions&lt;/strong> that you don&amp;rsquo;t care about. In the car example, we could stop caring about maintenance. Maintenance plans are straight forward. Almost every major manufacturer has a good policy. Let&amp;rsquo;s get rid of that completely.&lt;/li>
&lt;li>&lt;strong>Create &amp;ldquo;threshold&amp;rdquo; dimensions&lt;/strong> that you care about up to a certain point, but not beyond. For example, safety matters to my family, with our small children. But beyond a specific safety rating, any car is sufficiently safe, and we don&amp;rsquo;t need to optimize any further.&lt;/li>
&lt;li>&lt;strong>Establish trade budgets.&lt;/strong> This is not dimension reduction per se, but helpful in understanding the relationships between different things. For example, if we care more about efficiency than style, and getting a high gas mileage is worth twice as much as having a sexier car. This approach gives us a rough calculator to prioritize the dimensions we genuinely care about.&lt;/li>
&lt;/ol>
&lt;p>The beauty of this framework is that you can quickly sort through the dimensions that matter and devalue or completely discard the ones that don&amp;rsquo;t. Moreover, when we end up with a few real choices at the end of the process, we are assured that all of them satisfy our constraints and would make us happy. Beyond this point, all decisions are good decisions.&lt;/p>
&lt;h2 id="framework-2-mediating-assessments-protocol-map" class="group relative">Framework 2: Mediating Assessments Protocol (MAP)&lt;a href="#framework-2-mediating-assessments-protocol-map" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;em>This approach is from &lt;a href="https://sloanreview.mit.edu/article/a-structured-approach-to-strategic-decisions/">an excellent article&lt;/a> by Daniel Kahneman, Dan Lovallo, and Olivier Sibony. If this summary piques your interest, I encourage you to read the article in full. It is clear, easily understandable, and practical. If you&amp;rsquo;re at a tech company, such as Google or Facebook, and are using a structured interviewing process, you&amp;rsquo;re already using MAP without knowing about it.&lt;/em>&lt;/p>
&lt;p>Remember the &amp;ldquo;giant spreadsheet&amp;rdquo; approach to making decisions? The problem with that approach was that it threw out all human intuition. What if we kept an element of intuition in the mix, but had a way to neutralize a variety of cognitive biases? This is the central idea behind the MAP framework proposed by Kahneman and team.&lt;/p>
&lt;p>Let&amp;rsquo;s revisit the feature prioritization problem. We need to make a decision on which feature to build next. There is a trap here — we can easily mislead ourselves into believing that we are following a structured process by sitting through presentations about each option, evaluated in its entirety, with pros and cons, followed by a decision making or voting meeting. This method is subject to precisely the same biases - confirmation bias for things you like, and recency bias for the last option presented. It is essentially the equivalent of a holistic gut call.&lt;/p>
&lt;p>Here is the MAP alternative:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Agree upfront on what the goals are&lt;/strong>. To continue with our example, let&amp;rsquo;s say the objectives are 1) increase the number of daily users, 2) improve the performance of the app, and 3) reduce our operational costs.&lt;/li>
&lt;li>&lt;strong>One presentation per goal&lt;/strong>. This method allows us to compare all proposals, on a particular dimension, instead of looking at all the aspects of &lt;em>one&lt;/em> proposal. If we have a scoring rubric, we can score proposals per goal at this stage. These assessments are called &lt;em>mediating assessments.&lt;/em>&lt;/li>
&lt;li>&lt;strong>A final evaluation of all proposals&lt;/strong>, while looking at the mediating assessments. Note: we are not merely taking a weighted average of the intermediate scores. Instead, we are using our judgment at this juncture while keeping all the data in front of our eyes.&lt;/li>
&lt;/ol>
&lt;p>The changes seem subtle, but the impact can be profound. The best proof of this approach is in the use of a structured interviewing process to evaluate candidates. If you have interviewed at modern tech companies, like Facebook, Google, or most modern startups, you have experienced this. Instead of having each interviewer simply provide an overall score, the interview process involves a series of mediating assessments.&lt;/p>
&lt;p>In structured interviewing processes, each person interviews and makes a judgment about one area of competency - coding, system design, communication, people management, etc. Interviewers score candidates per dimension. The hiring committee looks at all the intermediate scores and then determines an overall rating. This approach is different from each interviewer judging the candidate in all of the different areas and giving one overall score. Structured interviewing is the norm in almost all tech companies. &lt;a href="https://msu.edu/~morgeson/levashina_hartwell_morgeson_campion_2014.pdf">Studies on personnel selection&lt;/a> have conclusively shown that using such approaches to interviewing leads to more accurate long term outcomes.&lt;/p>
&lt;h2 id="framework-3-wrap" class="group relative">Framework 3: WRAP&lt;a href="#framework-3-wrap" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;em>This framework is a summary of the WRAP process outlined in the Heath Brothers&amp;rsquo; fabulous book &lt;a href="https://www.amazon.com/Decisive-Make-Better-Choices-Life-ebook/dp/B009JU6UPG/">Decisive&lt;/a>. I strongly encourage you to read the book, as well as use the &lt;a href="https://heathbrothers.com/member-content/six-simple-questions-yield-better-decisions/">summary&lt;/a> &lt;a href="https://heathbrothers.com/member-content/1-page-summary-of-the-wrap-model/">resources&lt;/a> on &lt;a href="https://heathbrothers.com/books/decisive/">their website&lt;/a> (free registration required.)&lt;/em>&lt;/p>
&lt;p>The WRAP framework focuses on avoiding or overcoming cognitive biases that creep into all human thinking. It is easy to understand and practical to apply. Each maxim can be used independently toward decision making; apply a few or all.&lt;/p>
&lt;h3 id="1-widen-the-frame" class="group relative">1. W&lt;strong>iden the frame&lt;/strong>&lt;a href="#1-widen-the-frame" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Let&amp;rsquo;s go back to the car-buying example. We are trying to choose between a minivan or a Prius. This problem statement implies a particular frame: we have to decide between A and B.&lt;/p>
&lt;p>However, the car is a means to an end - commuting to work, transporting children to school, picking up groceries, or traveling for leisure. In our choice, did we consider solving the more significant problem using some other means? Do we need a car at all? Could we use an electric bike to commute? Or Instacart for all groceries? How would that change our set of options?&lt;/p>
&lt;p>A narrow frame is a common decision-making trap. It focuses our thinking on available options, instead of opening our minds to all possibilities, some of which may solve the problem in unique or non-traditional ways.&lt;/p>
&lt;p>&lt;strong>A classic sign of this trap is the &amp;ldquo;whether or not&amp;rdquo; question&lt;/strong>. When you hear your friend ask you &amp;ldquo;whether or not they should quit their job&amp;rdquo; or &amp;ldquo;whether or not they should build a feature&amp;rdquo; or &amp;ldquo;whether or not they should buy an iPad,&amp;rdquo; you should smell a trap. One way out of this trap is removing the option you are leaning toward and making that a non-option. What if you absolutely could not quit your job or buy the iPad? What would you do then?&lt;/p>
&lt;h3 id="2-reality-test-your-assumptions" class="group relative">2. Reality Test Your Assumptions&lt;a href="#2-reality-test-your-assumptions" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>When we survey the set of available options, we build models in our head of how those options are going to work out. These models get tested when they meet reality, and usually don&amp;rsquo;t survive. We try to improve our models by finding evidence that supports or disproves the model. However, because of confirmation bias, we are much more likely to seek validating proof, rather than the contrary, or disconfirming evidence.&lt;/p>
&lt;p>One way to get around this pernicious problem is to look for opposing or disconfirming evidence. Imagine we are in love with a particular feature. Instead of looking for reasons to support our instinct, look for the holes in our reasoning. Why could this feature fail or underperform?&lt;/p>
&lt;p>How do other similar features perform? This line of questioning helps us determine the base rate. If most similar features underperform (low base rate), it is unlikely that this particular one is going to be the breakout.&lt;/p>
&lt;p>Looking for disconfirming evidence can be difficult, especially when we&amp;rsquo;re already heavily biased toward pursuing a particular path. One trick is to do a joint &amp;ldquo;premortem&amp;rdquo; exercise. Get together in a room, and imagine that you&amp;rsquo;re six months into the future. The feature has been built and launched and isn&amp;rsquo;t doing well. What went wrong?&lt;/p>
&lt;p>Another approach to reality testing assumptions is to dip a toe in without diving in all the way. In the car buying example, we could rent a minivan for a week, followed by renting another car for a week, to test out what it would feel like living with that car. The cost of a mistake (perhaps you hate the way the minivan drives or turns out that the sedan is entirely too small for your family) is tiny compared to buying the car and discovering you made a mistake.&lt;/p>
&lt;h3 id="3-attain-distance" class="group relative">3. Attain Distance&lt;a href="#3-attain-distance" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>One of the most striking passages in Andy Grove&amp;rsquo;s book &amp;ldquo;Only The Paranoid Survive&amp;rdquo; is about Intel&amp;rsquo;s decision to pivot from making computer memory to making microprocessors. Intel started as a memory company - and they were the world leader in manufacturing memory chips in the late 70s through the early 80s. The microprocessor business was niche, dwarfed by the massive memory business. However, the memory business was seeing enormous pressure from Japanese manufacturers and steadily losing margin. Pivoting the company from their roots, to go all-in on microprocessors was an incredibly difficult decision. Grove described how they finally did it:&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/complex-decisions/andy-grove-quote.png" alt="Andy Grove quote">&lt;/p>
&lt;p>— via &lt;a href="https://books.google.com/books?id=HjMYMLMy98oC&amp;amp;lpg=PA89&amp;amp;vq=If%20we%20got%20kicked%20out&amp;amp;pg=PA89#v=onepage&amp;amp;q&amp;amp;f=false">Google Book Search&lt;/a>&lt;/p>
&lt;p>For complicated psychological reasons, we seem to make clearer decisions when we are deciding for others instead of ourselves. One of the most effective techniques for attaining distance is to ask:&lt;/p>
&lt;p>&lt;em>&amp;ldquo;What would you tell your best friend to do in the same situation?&amp;rdquo;
— Personal Context&lt;/em>&lt;/p>
&lt;p>&lt;em>&amp;ldquo;If you were let go and we hired someone else, what would they do in the same situation?&amp;rdquo;
— Professional Context&lt;/em>&lt;/p>
&lt;h3 id="4-prepare-to-be-wrong" class="group relative">4. Prepare To Be Wrong&lt;a href="#4-prepare-to-be-wrong" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>We typically overestimate the impact of any particular decision. In reality, most decisions are reversible, or at least have escape hatches that are less catastrophic than we initially believe them to be. Jeff Bezos summarizes the concept of reversibility:&lt;/p>
&lt;blockquote>
&lt;p>Some decisions are consequential and irreversible or nearly irreversible – one-way doors – and these decisions must be made methodically, carefully, slowly, with great deliberation and consultation. If you walk through and don&amp;rsquo;t like what you see on the other side, you can&amp;rsquo;t get back to where you were before. We can call these Type 1 decisions. But most decisions aren&amp;rsquo;t like that – they are changeable, reversible – they&amp;rsquo;re two-way doors. If you&amp;rsquo;ve made a suboptimal Type 2 decision, you don&amp;rsquo;t have to live with the consequences for that long. You can reopen the door and go back through. Type 2 decisions can and should be made quickly by high judgment individuals or small groups.&lt;/p>&lt;/blockquote>
&lt;p>— Jeff Bezos, &lt;a href="https://www.sec.gov/Archives/edgar/data/1018724/000119312516530910/d168744dex991.htm">Amazon Annual Shareholder Letter&lt;/a>&lt;/p>
&lt;p>What if we made a wrong car-buying decision? We own a car that we don&amp;rsquo;t like, which we need to sell subsequently, and buy another car. There is a quantifiable dollar cost and some hassle in selling and buying cars and filing paperwork. But that&amp;rsquo;s it. With that understanding, we no longer fear making a decision, knowing that the cost of reversing that decision is not life-altering.&lt;/p>
&lt;h2 id="in-conclusion" class="group relative">In Conclusion&lt;a href="#in-conclusion" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Life is full of decisions. In the majority of cases, our instinct is a great decision-maker. However, when faced with highly complex decisions, the evolutionary processes that helped us survive the lions on the savannah can mislead us into making poor, often irrational choices. Using frameworks to make such complex decisions allows us to counter some of those cognitive biases and make good long term choices.&lt;/p></description></item><item><title>4 Interesting Reads - Jan '20</title><link>https://rushabhdoshi.com/posts/2020-01-27-4-interesting-reads/</link><pubDate>Mon, 27 Jan 2020 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2020-01-27-4-interesting-reads/</guid><description>&lt;p>A different post this week. Instead of the usual dose of problems and frameworks, here are four articles I came across in the past few weeks, along with summaries of why they&amp;rsquo;re worth reading.&lt;/p>
&lt;h2 id="how-will-you-measure-your-life-by-clayton-christensen" class="group relative">How Will You Measure Your Life by Clayton Christensen&lt;a href="#how-will-you-measure-your-life-by-clayton-christensen" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="https://hbr.org/2010/07/how-will-you-measure-your-life">https://hbr.org/2010/07/how-will-you-measure-your-life&lt;/a>&lt;/p>
&lt;p>Prof. Christensen passed away last week. He was a giant in the business world, with his theory of how low-end disruption can topple the biggest, most well-funded companies, explained in The Innovator&amp;rsquo;s Dilemma. He also gave us the Jobs To Be Done framework, in his more recent book, Competing Against Luck.&lt;/p>
&lt;p>The above article is a break from business and explains his ideas on how to measure life. It is a beautiful and sobering read.&lt;/p>
&lt;ol>
&lt;li>Have a purpose and follow a strategy to achieve that purpose&lt;/li>
&lt;li>Allocate time wisely, knowing that intimate and loving relationships with family and friends are the most potent and enduring sources of happiness.&lt;/li>
&lt;li>Create a culture, at work, and home, of doing things that are hard and learning what works.&lt;/li>
&lt;li>Never compromise your principles. &amp;ldquo;It&amp;rsquo;s easier to hold to your principles 100% of the time than it is to hold to them 98% of the time.&amp;rdquo;&lt;/li>
&lt;li>Remembering to stay humble, even if you&amp;rsquo;re the smartest person in the room.&lt;/li>
&lt;/ol>
&lt;h2 id="functional-vs-unit-organizations-by-steven-sinofsky" class="group relative">Functional vs. Unit Organizations by Steven Sinofsky&lt;a href="#functional-vs-unit-organizations-by-steven-sinofsky" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="https://medium.learningbyshipping.com/functional-versus-unit-organizations-6b82bfbaa57">https://medium.learningbyshipping.com/functional-versus-unit-organizations-6b82bfbaa57&lt;/a>&lt;/p>
&lt;p>Sinofsky&amp;rsquo;s post is an essential read for any leader planning an organization&amp;rsquo;s structure. This long post includes the history of Sinofsky&amp;rsquo;s organization of Office, followed by Windows. He goes into a lot of detail on the pros and cons of functional and unit organizations. Functional organizations are organized by discipline (eg. engineering, product, design, research), with functional leaders all reporting to the CEO. Unit organizations are led by general managers, with smaller functional teams reporting to them. Lots of unit organizations constitute the company. Neither are correct per se, and the pendulum swings between the two. Sinofsky also points out his three golden rules:&lt;/p>
&lt;ol>
&lt;li>Don&amp;rsquo;t ship the org chart (or accept that you will always ship the org chart, and design the org to match what you&amp;rsquo;d like to ship)&lt;/li>
&lt;li>Know the problem the re-org is solving.&lt;/li>
&lt;li>Ship schedule is &lt;em>everything&lt;/em>. (bonus: ship dates are &lt;em>dates.&lt;/em> &amp;ldquo;January&amp;rdquo; or &amp;ldquo;Q3&amp;rdquo; are not ship dates. January 15th is.)&lt;/li>
&lt;/ol>
&lt;h2 id="pioneers-settlers-and-town-planners-by-simon-wardley" class="group relative">Pioneers, Settlers, and Town Planners by Simon Wardley&lt;a href="#pioneers-settlers-and-town-planners-by-simon-wardley" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="https://blog.gardeviance.org/2015/03/on-pioneers-settlers-town-planners-and.html">https://blog.gardeviance.org/2015/03/on-pioneers-settlers-town-planners-and.html&lt;/a>&lt;/p>
&lt;p>Wardley argues that different phases of innovation need different types of people and thinking.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Pioneers&lt;/strong>. They can explore never-before discovered concepts, the uncharted land. They show you wonder, but they fail a lot. Half the time, the thing doesn&amp;rsquo;t work correctly. You wouldn&amp;rsquo;t trust what they build. They create &amp;lsquo;crazy&amp;rsquo; ideas.&lt;/li>
&lt;li>&lt;strong>Settlers&lt;/strong>. They can turn the half baked thing into something useful for a broader audience. They build trust. They build understanding. They make the possible future happen. They turn the prototype into a product, make it manufacturable, listen to customers, and turn it profitable.&lt;/li>
&lt;li>&lt;strong>Town Planners.&lt;/strong> They can take something and industrialize it taking advantage of economies of scale. You trust what they build. They find ways to make things faster, better, smaller, more efficient, more economical, and good enough.&lt;/li>
&lt;/ol>
&lt;p>The article was an interesting way to think about the different mindsets, people, and teams, that work well on products in various phases of development.&lt;/p>
&lt;h2 id="how-to-hire-smarter-than-the-market-by-erik-bernhardsson" class="group relative">How To Hire Smarter Than The Market by Erik Bernhardsson&lt;a href="#how-to-hire-smarter-than-the-market-by-erik-bernhardsson" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="https://erikbern.com/2020/01/13/how-to-hire-smarter-than-the-market-a-toy-model.html">https://erikbern.com/2020/01/13/how-to-hire-smarter-than-the-market-a-toy-model.html&lt;/a>&lt;/p>
&lt;p>With the help of a toy statistical model, the author argues that there is an arbitrage opportunity in hiring engineers. When companies collectively place a hefty premium on some trait (e.g., graduate of a top tier engineering school), they ignore a large pool of candidates that another company can go after. He lists several such traditionally undervalued traits: candidates who didn&amp;rsquo;t get a CS degree, or who have gaps on their resume, or who are not confident in interviews, who don&amp;rsquo;t have experience with your exact tech stack, the list goes on.&lt;/p>
&lt;p>This article made me think, rather than being immediately actionable. I don&amp;rsquo;t know how to efficiently screen and interview candidates without the help of some traditional markers. I do agree with the hypothesis that we are collectively ignoring a lot of great talented people out there.&lt;/p>
&lt;h2 id="selfish-note" class="group relative">Selfish Note&lt;a href="#selfish-note" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>If you liked this sort of post, or if you hated it, I&amp;rsquo;d love to hear from you. I spend a lot of time reading articles and books about leadership, engineering, product management, and technology. I would love to share more summaries and pointers if they are of interest. Thank you for being a reader.&lt;/p></description></item><item><title>On Execution</title><link>https://rushabhdoshi.com/posts/2020-01-13-on-execution/</link><pubDate>Mon, 13 Jan 2020 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2020-01-13-on-execution/</guid><description>&lt;p>&lt;em>Thanks to Ben Liebald, Lily Zhang, and Maher Saba for ideas and feedback.&lt;/em>&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Our customers love our product and are hungry for more. We have a solid strategy. But we seem to be moving very slowly. Our team is great, but we can&amp;rsquo;t seem to execute.&amp;rdquo;&lt;/p>&lt;/blockquote>
&lt;p>If this struck a chord, I have good news. First, you&amp;rsquo;re not alone. Most leaders I talk to ask for &amp;ldquo;execution&amp;rdquo; help. Second, execution &lt;em>can&lt;/em> be improved through hard work and persistent, directed effort. However, execution is a discipline, and there are no silver bullets, despite what the internet will tell you. Improvement will take time and effort, but if you&amp;rsquo;re committed, read on.&lt;/p>
&lt;h1 id="building-a-race-car" class="group relative">Building A Race Car&lt;a href="#building-a-race-car" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/racecar.jpg" alt="racecar">
— Photo by &lt;a href="https://unsplash.com/@baudy?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText">Tim Carey&lt;/a> on Unsplash&lt;/p>
&lt;p>Racing cars is a fascinating sport: it requires skilled drivers, but the world&amp;rsquo;s best driver cannot win with a poorly designed car. Take Formula One racing as an example. Formula One, also called F1, is a series of races around the world, with the world&amp;rsquo;s best drivers in custom-built cars. F1 cars are built for extremely high cornering speeds: hitting peak forces of 6.5g, while maxing out speeds of 350km/h (215 mph). F1 is highly regulated - accidents can be hazardous, sometimes claiming lives, such as the tragic death of &lt;a href="https://www.youtube.com/watch?v=FUADzkUSDq0">Ayrton Senna&lt;/a> at the Imola Grand Prix in Italy in 1994. The regulatory authority, F1A, changes rules often, sometimes minor changes, but the occasional major change that requires a substantial redesign of the car. Car design and development is such an essential part of F1 that there are actually two prizes: the Driver&amp;rsquo;s prize and the Constructor&amp;rsquo;s prize. Building F1 cars is as much an artistic endeavor, as it is a feat of ultimate engineering. It requires concerted hard work, year over year, improving cars, fixing existing problems, adjusting to rules changes, adapting to different drivers, stretching for varying road and weather conditions.&lt;/p>
&lt;p>I think of high performing teams as a custom-built race car. The car comes together as a whole — engine design matters, but there is more to it. Similarly, any process a team employs matters, but there is much more to execution than process. The internet discussions on execution often point to a change in process, from waterfall to scrum, or having daily standup meetings, or weekly retrospectives. These things matter, but like the car&amp;rsquo;s engine, do not capture the complete picture. I believe that you exact processes must be tuned for the team; there are broad rules of what everyone must do (all cars have 4 wheels, are under a certain weight, and have an engine), but within the general framework, there are a lot of choices to be made.&lt;/p>
&lt;p>This post is divided into three broad sections:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Defining execution&lt;/strong> and making the case to treat it as a discipline, rather than a process.&lt;/li>
&lt;li>&lt;strong>The Five pillars&lt;/strong> of execution.&lt;/li>
&lt;li>&lt;strong>A toolbox&lt;/strong> of things that have worked: practical ideas for you to copy-paste and edit.&lt;/li>
&lt;/ol>
&lt;h1 id="what-is-execution" class="group relative">What Is Execution?&lt;a href="#what-is-execution" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>The words &amp;ldquo;strategy&amp;rdquo; and &amp;ldquo;execution&amp;rdquo; are insufficiently understood by product development teams. My post, &amp;ldquo;&lt;a href="https://rushabhdoshi.com/2019/10/12/strategy-and-tactics.html">Strategy and Tactics&lt;/a>,&amp;rdquo; attempts to explain the difference. Here&amp;rsquo;s the short version:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Vision&lt;/strong> is what the future looks like if you&amp;rsquo;re successful.&lt;/li>
&lt;li>&lt;strong>Strategies&lt;/strong> are possible paths that allow you to attain your vision. A strategic choice or decision is the act of choosing which particular way to follow.&lt;/li>
&lt;li>&lt;strong>Execution&lt;/strong> is walking that path.&lt;/li>
&lt;/ul>
&lt;p>Success depends on all three; which one matters more is highly dependent on the nature of the work, the company, the team, and a variety of other factors.&lt;/p>
&lt;p>At a company level, the vision is typically to change the world in some meaningful way by making some problems go away. Google seeks to understand the world&amp;rsquo;s information and make it available. Facebook aims to connect the world.&lt;/p>
&lt;p>Strategy is how you get there. Exceptional strategic thinking is hard to come by because it involves so many leaps of faith. Strategies are forward-looking and often hard to test on any meaningfully short timescale. Amazon&amp;rsquo;s strategy is three-pronged: decrease prices, increase product selection and increase customer convenience. Amazon could have chosen a variety of other approaches — build bricks and mortar stores, or purely match buyers to sellers, or designing and selling only their own products, or making a white-label e-commerce site. Notably, each of these strategies has a company built around it: Barnes and Noble, eBay, Everlane, and Shopify.&lt;/p>
&lt;p>Execution is about the nitty-gritty. Designing experiences. Shipping hardware or code. Nimbly iterating to get through or around new roadblocks. Similar to other disciplines, excellent execution takes sustained effort over a long time. It is not a Thing to be achieved and checked off. The principles of &lt;a href="https://rushabhdoshi.com/2019/12/17/deliberate-practice.html">Deliberate Practice&lt;/a> apply here at the team level. Having a clear goal, focus and hard work, feedback, accountability, and deadlines — these are the pillars of a high achieving team.&lt;/p>
&lt;h1 id="pillars-of-execution-ospad" class="group relative">Pillars of Execution (OSPAD)&lt;a href="#pillars-of-execution-ospad" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;ol>
&lt;li>&lt;strong>O&lt;/strong>ne Clear Goal&lt;/li>
&lt;li>&lt;strong>S&lt;/strong>ustained Focus&lt;/li>
&lt;li>&lt;strong>P&lt;/strong>rogress Indicators&lt;/li>
&lt;li>&lt;strong>A&lt;/strong>ccountability&lt;/li>
&lt;li>&lt;strong>D&lt;/strong>eadlines&lt;/li>
&lt;/ol>
&lt;h2 id="1-one-clear-goal-" class="group relative">1. One Clear Goal 🏁&lt;a href="#1-one-clear-goal-" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>To execute well, teams must know what they are executing toward. It all begins with a clear and concrete goal, one that everyone can understand and rally behind.&lt;/p>
&lt;p>One of the biggest challenges that organizations face is not the &lt;em>lack&lt;/em> of goals, but having too many. When you have multiple goals, priorities get muddled. Given a choice, teams will follow the path of least resistance and focus on goals that are &lt;em>achievable&lt;/em> over goals that are &lt;em>important&lt;/em>. It is paramount, for a leader, at any level, to identify and set a small number of concrete goals for their organization, ideally one.&lt;/p>
&lt;p>The second challenge is communication. Ask 5 people at different levels in the organization what their goals are. If you hear different goals depending on who you ask, or worse, &amp;ldquo;I&amp;rsquo;m not sure what our goals are,&amp;rdquo; you have a problem. After picking a goal, you must communicate it as clearly and as often as you can. The test comes at goal evaluation time, at the end of the quarter. If the team hits a secondary, unimportant goal, but misses the primary one, and they believe they did well and deserve commendation, then you have failed at clear goal-setting and communication.&lt;/p>
&lt;p>A note on measurability: we in tech are obsessed with measurement. &amp;ldquo;What we cannot measure, we cannot improve.&amp;rdquo; Sometimes things are just not measurable, or worse, the only thing you can measure is a misleading proxy of the actual thing. Don&amp;rsquo;t let the lack of easy measures stop you from setting goals. For example, &lt;em>shipping&lt;/em> is a perfectly good goal — especially when a team is building a new product with no priors.&lt;/p>
&lt;p>Your job as a leader is to do the following:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Pick a clear goal&lt;/strong>. This is the goal that you consider critical to the success of the team or organization. It is the goal that everyone should rally behind. If you have a dozen goals, prioritized into big and small goals, whittle the list down to one or two. This exercise is challenging, but worthwhile.&lt;/li>
&lt;li>&lt;strong>Talk about your goal as often as possible&lt;/strong>. If your priorities are clear to you, and perhaps your executive team, but not to every engineer, PM, designer, and analyst - you haven&amp;rsquo;t talked about them loudly or often enough.&lt;/li>
&lt;/ol>
&lt;h2 id="2-sustained-focus-" class="group relative">2. Sustained Focus 🧘🏽‍♀️&lt;a href="#2-sustained-focus-" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>YouTube in 2011 was primarily known as the site for cat videos that people forwarded and shared on Facebook. There was a blossoming creator ecosystem, but creators were incentivized to make small, bite-sized content. The reason was simple: YouTube algorithms valued &lt;em>views&lt;/em> as the primary metric and overwhelmingly recommended short videos. &lt;a href="https://youtube-creators.googleblog.com/2012/08/youtube-now-why-we-focus-on-watch-time.html">Sometime in 2012&lt;/a>, leadership made the decision to switch to &lt;em>watch-time&lt;/em> as the primary metric. The central idea was that as long as people were watching content on YouTube, we didn&amp;rsquo;t care whether it was short or long, just that they were entertained (or informed) by the things that they watched. The analytics team came up with a chart that showed a growth curve to 1 billion hours of watch-time. We all thought that a billion hours was impossible, but the chart served as strong motivation to hit a clear goal. When did YouTube hit the billion-hour goal? &lt;a href="https://youtube.googleblog.com/2017/02/you-know-whats-cool-billion-hours.html">2017&lt;/a>.&lt;/p>
&lt;p>Large bets take time to build. We, in Silicon Valley, are obsessed with instant feedback, numbers moving up and to the right instantly, trying to get to product-market fit as quickly as possible. If it doesn&amp;rsquo;t work in 3 months, it must be a terrible idea and should be abandoned because of opportunity cost.&lt;/p>
&lt;p>I believe many organizations are afflicted with organizational attention deficit disorder. We do lots of annual and quarterly roadmap planning, and the minute we see something shiny, internally or externally, we collectively go &amp;ldquo;Squirrel!&amp;rdquo; and chase after it.&lt;/p>
&lt;p>Execution requires focus. Goals are the setup. Focused effort is the follow-through. As a leader, you should keep your team focused on the goals, for months to years, based on your conviction about your strategy.&lt;/p>
&lt;h2 id="3-progress-indicators-" class="group relative">3. Progress Indicators 📈&lt;a href="#3-progress-indicators-" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>A game without a scoreboard does not inspire players to do their best. The mere presence of a score is not enough, the score must be visibly present, so everyone sees it, every day.&lt;/p>
&lt;p>Picking a good progress indicator is an art. These are &lt;em>operational&lt;/em> metrics, not &lt;em>business&lt;/em> metrics. As a result, the number you select to keep tabs on progress can be different from the overall goal chosen in section one. Rules of thumb for operational metrics:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Indicators should be fast&lt;/strong>. The point of a visible indicator is to motivate the team. A rapidly moving number helps build momentum.&lt;/li>
&lt;li>&lt;strong>Use leading indicators instead of lagging ones&lt;/strong>. When I was trying to lose weight (a perpetual goal), I made the mistake of using my weight as the indicator. It is a lagging indicator, and will move down after strenuous effort along other fronts, is subject to a lot of intra-week variation, and is mostly demotivating. Better markers like activity-minutes, or calorie counts, or standing or walking time possess the dual properties of being on the leading edge and moving quickly.&lt;/li>
&lt;li>&lt;strong>Use indicators connected to the eventual goal&lt;/strong>. Measuring the wrong thing is akin to going really fast around the wrong race track. Things will feel good, but nobody will make progress.&lt;/li>
&lt;/ol>
&lt;p>Examples of good indicators:&lt;/p>
&lt;ol>
&lt;li>Kanban boards. I love these for projects where the primary goal is to &lt;em>ship&lt;/em> something. They publicly and visibly capture the set of things that are in flight, and who is responsible for what. They get updated in real-time. Kanban boards are supported by most task management software; putting up a large TV with a display of your team&amp;rsquo;s kanban board is a great way to check off the Visible Indicators pillar.&lt;/li>
&lt;li>Real-time dashboards. When working on projects to improve performance, improve efficiency, reduce bugs, I like dashboards that reflect the current state of the world (latency measurements, bug counts, etc.) I get inspired by seeing steady progress toward the horizontal goal line.&lt;/li>
&lt;li>To-do list. Low tech solutions are on occasion, even better than the high tech ones. A whiteboard chart showing deals closed and progress toward the ARR goal can be more inspiring than a fancy screen with a soulless number.&lt;/li>
&lt;/ol>
&lt;h2 id="4-accountability-" class="group relative">4. Accountability 💪🏽&lt;a href="#4-accountability-" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>In 2018, the Facebook app was slow, and bugs were out of control. Most of Facebook&amp;rsquo;s mobile users are on Android; device and OS fragmentation make Android development particularly painful and error-prone. We knew we weren&amp;rsquo;t doing a good job serving our users but were stuck in the constant pull between new feature work and stability. Leadership eventually decided that enough was enough, and something had to be done. We had clear goals: fixing bugs and faster startup. The progress indicators were natural (bug count and startup latency). Leadership all the way through Mark was committed. Things still didn&amp;rsquo;t move.&lt;/p>
&lt;p>The solution was a weekly meeting with all the engineering leaders and the head of the Facebook app. When some team wasn&amp;rsquo;t doing well (I was a frequent offender), people would ask questions about why and what they could do to help. The social pressure, my word as a leader, made me feel very accountable to deliver on my commitments.&lt;/p>
&lt;p>As humans working cooperatively toward a higher goal, our word stands for something. I try my best to deliver on public promises. Holding a mirror up to my face when I fail is enough of a stick to keep me motivated.&lt;/p>
&lt;p>The word &amp;ldquo;accountability&amp;rdquo; has frequent connotations of negative performance management, or of letting people go. I believe this is far too extreme; accountability is simply about a feeling of responsibility. Every parent knows they can&amp;rsquo;t control their young children but have a sense of responsibility for their actions.&lt;/p>
&lt;p>I have two simple techniques for driving accountability:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Write detailed weekly status updates&lt;/strong>, publicly visible to the whole company. The leader must write these updates themself, rather than delegating them to an assistant. The process of writing forces the leader to &lt;em>read&lt;/em> the constituent material and stay on top of execution issues in their team. Much more on this in the Execution Toolbox section below.&lt;/li>
&lt;li>&lt;strong>Weekly check-ins for the most critical projects&lt;/strong>. There is nothing that beats face to face (or video) interaction for driving accountability. These meetings are large and can get expensive really fast, so preparation and a concerted effort toward efficiency pays dividends quickly. Balance is essential — a status update meeting for every project in the organization is an egregious waste of time and unnecessary.&lt;/li>
&lt;/ol>
&lt;h2 id="5-deadlines-" class="group relative">5. Deadlines ⏱&lt;a href="#5-deadlines-" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Confession: I am a serial procrastinator. Why do something today that I could push off until tomorrow? The harder something is, the more likely I am to procrastinate. I know I am not alone. And teams procrastinate just as much as individual humans do.&lt;/p>
&lt;p>Deadlines are an effective deterrent for a few reasons:&lt;/p>
&lt;ol>
&lt;li>They create pressure to get things done. Creative work is not steady; it happens in bursts. Fixed periods provide a way to channel that bursty energy in a coordinated way.&lt;/li>
&lt;li>Deadlines serve as a focusing function. When people have a deadline to get something done, other priorities get downgraded.&lt;/li>
&lt;li>They provide opportunities to change directions. We all make incorrect decisions at times, bite off more than we can chew, or underestimate the complexity of a project. Changing decisions midway kills productivity and focus. However, changing direction at a particular deadline is a reasonable way of re-evaluating decisions and correcting course.&lt;/li>
&lt;/ol>
&lt;p>Deadlines go hand in hand with the curse of estimation. No sufficiently complex software project I have been on has been estimated correctly at the start. Are estimates even worth the work? I don&amp;rsquo;t believe in long term estimates — these are mostly garbage and serve to create artificial pressure by committing teams to death marches that are months long. Short term estimates - in the order of 2-6 weeks - are reasonably accurate and should be done. Call it a sprint, call it a milestone, call it whatever you want. Software engineering teams should be able to predict, with a small margin of error, what they can accomplish in 2-6 weeks and then reliably deliver on this estimate.&lt;/p>
&lt;h1 id="execution-toolbox" class="group relative">Execution Toolbox&lt;a href="#execution-toolbox" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>The toolbox is a set of things that have worked. I&amp;rsquo;ve included three ideas from leaders that I have worked with and respect greatly.&lt;/p>
&lt;ol>
&lt;li>Weekly updates: perfect communication.&lt;/li>
&lt;li>Daily office hour blocks: faster decision making.&lt;/li>
&lt;li>Who-What-When: world&amp;rsquo;s most straightforward project tracking.&lt;/li>
&lt;li>Recognition: positive reinforcement.&lt;/li>
&lt;li>Retrospectives: feedback about &lt;em>how&lt;/em> we work.&lt;/li>
&lt;/ol>
&lt;h2 id="1-weekly-updates" class="group relative">1. Weekly Updates&lt;a href="#1-weekly-updates" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Teams and leaders often write weekly updates, but without care and effort, these can feel like a lot of make-work. Weekly updates are one of the most powerful tools a leader has. They can keep tabs everything, as well as tell the company what&amp;rsquo;s on their mind.&lt;/p>
&lt;p>Tricks to writing regular weekly updates:&lt;/p>
&lt;ol>
&lt;li>Build a process that works for your team. In my case, PMs wrote an update for every major work-stream, with a deadline of Friday evening. I spent 2-3 hours over the weekend, understanding and pulling updates together. I would tune it on Monday and send it out Monday evening.&lt;/li>
&lt;li>Avoid unanchored metrics — &amp;ldquo;Participation moved up by 0.5% last week because of 3D photos.&amp;rdquo; Is this good or bad? What is the baseline? What is the goal? Vague numbers engender more questions. Instead, try: &amp;ldquo;We rolled out 3D photos to 100%. As expected, participation rate increased to 3% (incremental 0.5%), bringing us close to our goal of 3.2%. We expect some follow on increases, as the rollouts continue.&amp;rdquo; Longer, but provides way more context and understanding than the former.&lt;/li>
&lt;li>Remember the audience: exec leadership and the rest of the company. Stick to what is essential. It is okay for a week to be quiet and not much to report. If there are many weeks of quiet, leaders should check-in.&lt;/li>
&lt;/ol>
&lt;p>Getting to meaningful weekly updates took months. My most effective technique was rewriting individual PM updates as feedback. It helped everyone on the team write in one voice and significantly reduced the burden on me when writing the full update.&lt;/p>
&lt;h2 id="2-daily-office-hour-blocks" class="group relative">2. Daily Office Hour Blocks&lt;a href="#2-daily-office-hour-blocks" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Most teams schedule leadership or exec reviews at a regular cadence of weeks. These reviews fall into two broad categories: decision making and information dissemination. When a team is deep in execution mode, slow decision making can break a team&amp;rsquo;s flow. Rebuilding that flow could take days.&lt;/p>
&lt;p>In mid-2017, my team at Facebook was charged with building an AR-enabled camera feature for the Facebook family of apps. Our teams were running as hard as they could, but would get stuck when decisions needed to be made. Groups disagreed with one another and, on occasion, disagreed with themselves. At times, they just needed advice or someone to say, &amp;ldquo;go ahead.&amp;rdquo;&lt;/p>
&lt;p>We would typically have reviews once a week. Due to packed schedules, any given team could get review time perhaps once a month. This was too long to wait on a decision, especially in the middle of an intense sprint.&lt;/p>
&lt;p>Our solution was to devise a 2 hours block of office hours, &lt;em>every day&lt;/em>, broken into 30-minute slots. The entire leadership team committed to being present. We decreased the level of homework needed to get into office hours — pre-reads were still ideal, but a two-paragraph email was a sufficient pre-read, instead of a ten slide deck.&lt;/p>
&lt;p>The net result of this was that teams rarely sat on decisions for more than 48 hours. They could come in, talk about their problem, get help, advice, or a decision. Everyone on the leadership team would be aware and aligned. Teams would still have to communicate the decision out to the broader organization. However, thanks to liberal audience management, key team members were instantly in sync.&lt;/p>
&lt;p>I found this incredibly useful but extremely taxing on time. There is some risk that you train teams to come to you for every small decision that they should be making or to break every minor disagreement that they had. This did happen, and we did ask teams to go back and sort it out on their own. However, in most cases, the issues were legitimate, and teams were able to move significantly faster.&lt;/p>
&lt;h2 id="3-who-what-when" class="group relative">3. Who-What-When&lt;a href="#3-who-what-when" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;em>Thanks to &lt;a href="https://www.linkedin.com/in/maher-saba-5363705/">Maher Saba&lt;/a>, Facebook Engineering VP, and leader extraordinaire.&lt;/em>&lt;/p>
&lt;p>Modern startups are drowning in project management tools. Asana, Jira, Monday, Notion, Coda, Google Sheets. These tools are flexible and sophisticated because they try to model an inherently messy, complex system. They can also be overkill — imposing concepts of owners or timelines or points or whatever ideas were built into the system.&lt;/p>
&lt;p>Saba&amp;rsquo;s technique was to have the most straightforward tool possible: a doc tracking 3 things:&lt;/p>
&lt;ol>
&lt;li>Who is accountable/responsible?&lt;/li>
&lt;li>What is the item being delivered or shipped?&lt;/li>
&lt;li>When will it be shipped by?&lt;/li>
&lt;/ol>
&lt;p>Below the table, there is a log to keep track of everything that is happening every week. This sounds ridiculously simple compared to all the powerful tools out there. Because it is. But it works well to run projects of small to medium size and complexity.&lt;/p>
&lt;p>The goal of the process is to have an ongoing, credible plan where the dependencies and workload are well understood and balanced.&lt;/p>
&lt;p>Here is a &lt;a href="https://coda.io/d/Who-What-When_dSm8B-nDIn7">sample coda doc&lt;/a> to duplicate if you&amp;rsquo;d like to implement this system.&lt;/p>
&lt;h2 id="4-recognition" class="group relative">4. Recognition&lt;a href="#4-recognition" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;em>Thanks to &lt;a href="https://www.linkedin.com/in/liebald/">Ben Liebald&lt;/a>, Head of Engineering at &lt;a href="https://branch.co/">Branch.co&lt;/a>&lt;/em>&lt;/p>
&lt;p>Execution grinds can take a toll on team health and morale. Good leaders find ways to keep spirits up. Celebrating wins along the way, or even milestones with significant progress, can do wonders. Here are some ideas to create opportunities for people (not just the leader) to recognize good work:&lt;/p>
&lt;ol>
&lt;li>Friday Demos and Beer. At the end of the day on Friday, the team would gather, and anyone could present things they had been working on. The bar for demos was low — this was a safe space for showing off work in progress, not a polished presentation for the CEO.&lt;/li>
&lt;li>Recognition rituals. One of my teams at Facebook would award a giant stuffed pusheen cat to the person who went above and beyond their job to help the team. This person would then pass the award on to the next person at the team&amp;rsquo;s weekly meeting. It was a great way to recognize work that would otherwise go unacknowledged publicly.&lt;/li>
&lt;li>Gratitude emails. I love receiving emails that say something like, &amp;ldquo;I appreciate your hard work on feature X. I know this was challenging, and we were under a lot of pressure. You really stepped up and delivered. I&amp;rsquo;m so glad to have you on the team.&amp;rdquo; Sending these emails is effortless for the sender, but carries a lot of meaning for the recipient.&lt;/li>
&lt;/ol>
&lt;h2 id="5-retrospectives" class="group relative">5. Retrospectives&lt;a href="#5-retrospectives" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;em>Thanks to &lt;a href="https://www.linkedin.com/in/lilyruo/">Lily Zhang&lt;/a>, Director of Engineering at Instacart.&lt;/em>&lt;/p>
&lt;p>Teams, like people, need time to reflect on what they have done, and where they could have done better. It is hard to find time for this reflection during regular business since everyone is chugging away at their task and moving as quickly as possible.&lt;/p>
&lt;p>To improve, we need feedback loops. Immediate product feedback loops are rare, or the signals are often weak. Leaders can ease people into a habit of seeking feedback and improving, by providing a safe space to collectively reflect, give each other feedback, and figure out how to work better. There are two natural points for retrospectives:&lt;/p>
&lt;ol>
&lt;li>Incident level. When there is a significant outage (&amp;ldquo;SEVs&amp;rdquo; in Facebook parlance), the first order of business is to deal with the outage. Facebook has this down to a science: the tooling and coordination needed for crisis management has been tuned to the point of near perfection. Once the team is past the crisis, there is a meeting called the &amp;ldquo;SEV Review,&amp;rdquo; where the person causing the SEV presents an analysis of what happened, why, what could have been done to prevent it, and the next steps to minimize chances of a similar future incident. Senior engineering leaders are in attendance — giving feedback by pattern matching against other SEVs. This is &lt;em>not&lt;/em> a blame meeting; it is strictly a learning meeting where everyone in the company learns as a result.&lt;/li>
&lt;li>Project level. One benefit of having deadlines (pillar #5) is that the end of a particular milestone presents an opportunity for reflection and improvement. I am a fan of using sticky notes to individually write what is working and what isn&amp;rsquo;t, before opening up the discussion to the entire room. We are human and biased, writing before presenting helps reduce availability bias.&lt;/li>
&lt;/ol>
&lt;h1 id="executionishard" class="group relative">#executionishard&lt;a href="#executionishard" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>This post is not meant to be read once, understood, and put on the side. I hope you scanned it once, and return to it, when you have specific problems that these techniques can help with.&lt;/p>
&lt;p>Remember, execution is &lt;em>really hard&lt;/em>. It takes a long time to build execution muscle. If you&amp;rsquo;re a leader: be patient and keep improving with your teams. If you&amp;rsquo;re an individual contributor, and you see some key pillar missing, ask your leadership to fill in the gap.&lt;/p>
&lt;p>Onward!&lt;/p></description></item><item><title>Buddha's Office</title><link>https://rushabhdoshi.com/posts/2019-12-28-buddhas-office/</link><pubDate>Sat, 28 Dec 2019 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2019-12-28-buddhas-office/</guid><description>&lt;p>&lt;em>&lt;a href="https://www.amazon.com/Buddhas-Office-Ancient-Waking-Working-ebook/dp/B07QFPYDT6">Buddha&amp;rsquo;s Office&lt;/a> is the latest book by my friend, Dan Zigmond, who is a buddhist monk with a day job. I&amp;rsquo;ve worked with him at two companies (a rare pleasure): he&amp;rsquo;s a computer scientist turned data scientist turned leader. I have always admired his calm demeanor, his gentle but insightful arguments, and wondered how he manages to stay calm through intense situations. In this book, he gives a lot of practical advice on applying Buddhist principles toward that essential part of life: work.&lt;/em>&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/buddhas-office.png" alt="Buddha&amp;rsquo;s Office cover">&lt;/p>
&lt;h2 id="awakening" class="group relative">Awakening&lt;a href="#awakening" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Buddhist philosophy centers around the concept of leading an Awakened life - one where we are fully in the moment, accepting and appreciating life in all it&amp;rsquo;s aspects, without allowing ourselves to get sucked in by pain and unpleasantness.&lt;/p>
&lt;blockquote>
&lt;p>Life is &lt;strong>dukkha&lt;/strong>, which is often translated as &amp;ldquo;pain&amp;rdquo; but could be better interpreted as &amp;ldquo;struggle.&amp;rdquo;&lt;/p>&lt;/blockquote>
&lt;p>We can run away from pain and suffering by avoiding it and chasing fun instead. It never lasts. And as soon as we know it&amp;rsquo;s not going to last, it stops being as much fun.&lt;/p>
&lt;p>We can go the other extreme, and surround ourselves with suffering, inflicting it to the maximum possible extent. This doesn&amp;rsquo;t work either - all it accomplishes is making ourselves more miserable.&lt;/p>
&lt;blockquote>
&lt;p>There is a middle path, built around &lt;strong>acceptance&lt;/strong>.&lt;/p>
&lt;p>Instead of running away from or toward pain, you accept it. By accepting that life involves pain, but pain doesn&amp;rsquo;t fully define life, you rob it of its power.&lt;/p>
&lt;p>In other words, it is all about &lt;strong>balance&lt;/strong>.&lt;/p>&lt;/blockquote>
&lt;p>In the workplace, we all run into obstacles and setbacks. We don&amp;rsquo;t seek them out, but we can&amp;rsquo;t avoid them. Perhaps we didn&amp;rsquo;t get that job we really wanted, or the promotion we thought we deserved, or someone else got selected to work on the project we were really excited about, or our boss or colleague or customer treated us poorly, or we&amp;rsquo;re up against an impossible deadline, or just had a shitty day. These things happen.&lt;/p>
&lt;blockquote>
&lt;p>The key to awakening is not to avoid problems or to ignore them. It is to accept that they happen and move on.&lt;/p>&lt;/blockquote>
&lt;h2 id="practices" class="group relative">Practices&lt;a href="#practices" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The rest of the book is about practical advice to apply the above theory to work.&lt;/p>
&lt;h3 id="1-mindfulness" class="group relative">1. Mindfulness&lt;a href="#1-mindfulness" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Buddha preached the Eightfold Path to Awakening:&lt;/p>
&lt;ol>
&lt;li>Right views&lt;/li>
&lt;li>Right intention&lt;/li>
&lt;li>Right speech&lt;/li>
&lt;li>Right action&lt;/li>
&lt;li>Right livelihood&lt;/li>
&lt;li>Right effort&lt;/li>
&lt;li>Right mindfulness&lt;/li>
&lt;li>Right concentration.&lt;/li>
&lt;/ol>
&lt;p>Mindfulness is the one that underpins the entire Eightfold Path.&lt;/p>
&lt;blockquote>
&lt;p>Mindfulness is the state of being attentive to and aware of what is taking place in the present.&lt;/p>
&lt;p>Meditation is the way we practice mindfulness.&lt;/p>&lt;/blockquote>
&lt;h2 id="2-beginners-mind" class="group relative">2. Beginner&amp;rsquo;s Mind&lt;a href="#2-beginners-mind" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>A beginner&amp;rsquo;s mind is an empty and ready mind: it is open to everything and full of possibilities.&lt;/p>&lt;/blockquote>
&lt;p>Becoming an expert is appealing, especially at work. We like to feel competent and capable, we don&amp;rsquo;t like making mistakes. However, an expert mind can be narrow, less open to other ideas and possibilities, leading to carelessness and inattention.&lt;/p>
&lt;p>We have all experienced a Beginner&amp;rsquo;s Mind at some point: starting a new job, embarking on a new project. That feeling of incompetence, the certainty of making mistakes. We can use this energy, this &lt;em>acceptance&lt;/em> of not knowing, toward becoming great.&lt;/p>
&lt;p>Tricks to cultivate a Beginner&amp;rsquo;s Mind at work:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Take a break&lt;/strong>. Perhaps the most effective way to snap out of monotony.&lt;/li>
&lt;li>&lt;strong>Change the task&lt;/strong>. We all have a number of things to do. Rotate between tasks to keep things fresh.&lt;/li>
&lt;li>&lt;strong>Change the setting&lt;/strong>. Desk work getting hard? Move to the library. Need to do some thinking? Go on a walk.&lt;/li>
&lt;li>&lt;strong>Work with new people&lt;/strong>. Are you an expert? Team up with someone that is just starting out. Are you the novice? Work with a master.&lt;/li>
&lt;li>&lt;strong>Get a hobby&lt;/strong>. Learning something new &lt;em>outside&lt;/em> the workplace will give you a fresh perspective and self-awareness that you can bring to your day job.&lt;/li>
&lt;/ol>
&lt;p>Finally, resting and taking a break is really important: both during the day, but more importantly after work.&lt;/p>
&lt;h2 id="3-exercise" class="group relative">3. Exercise&lt;a href="#3-exercise" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>Do regular exercise. Physical activity improves literally everything.&lt;/p>&lt;/blockquote>
&lt;h2 id="4-sleep" class="group relative">4. Sleep&lt;a href="#4-sleep" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Buddha worried a lot more about his disciples sleeping &lt;em>too much.&lt;/em> In today&amp;rsquo;s world, the problem is too little sleep. Tips to improve your sleep:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Meditation&lt;/strong>. This helps everything.&lt;/li>
&lt;li>&lt;strong>No phones or electronic devices at night&lt;/strong>. This includes e-readers, such as the kindle.&lt;/li>
&lt;li>&lt;strong>Darkness&lt;/strong>. Use a mask if your surroundings don&amp;rsquo;t allow complete darkness.&lt;/li>
&lt;li>&lt;strong>Naps&lt;/strong>. If you can&amp;rsquo;t get enough sleep at night, take short naps during the day.&lt;/li>
&lt;/ol>
&lt;h2 id="5-diet" class="group relative">5. Diet&lt;a href="#5-diet" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ol>
&lt;li>Eat mindfully. Don&amp;rsquo;t eat at your desk.&lt;/li>
&lt;li>Avoid alcohol. Alcohol and work absolutely do not mix.&lt;/li>
&lt;/ol>
&lt;h2 id="6-speech" class="group relative">6. Speech&lt;a href="#6-speech" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Right Speech is an integral part of the Eightfold Path. Buddha suggested asking the following questions before speaking:&lt;/p>
&lt;ol>
&lt;li>Is it true?&lt;/li>
&lt;li>Is it helpful?&lt;/li>
&lt;li>Is now the right time?&lt;/li>
&lt;li>Is it kind?&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>&amp;ldquo;One should speak confident, measured words, clear in meaning, delighting the mind, pleasing to the ear, soft and slow, and stemming from compassion.&amp;rdquo;&lt;/p>
&lt;p>— Kate Crosby and Andrew Skilton, &lt;em>The Bodhicaryavatra&lt;/em>&lt;/p>&lt;/blockquote>
&lt;p>This is a good test for &lt;em>any&lt;/em> speech. When delivering or receiving criticism, Dan suggests a few more things to keep in mind.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Timeliness&lt;/strong> is key, whether we&amp;rsquo;re sharing praise or dispraise.&lt;/li>
&lt;li>&lt;strong>Show care for the &lt;em>person&lt;/em>&lt;/strong>, save criticism for the &lt;em>work&lt;/em>.&lt;/li>
&lt;li>&lt;strong>Build trust&lt;/strong> by caring about your colleagues every day.&lt;/li>
&lt;li>&lt;strong>Accept criticism as a reflection of your work, not your self&lt;/strong>, even if the criticizing coworker is not skilled at making that distinction.&lt;/li>
&lt;/ol>
&lt;h2 id="7-discussions-decisions-and-meetings" class="group relative">7. Discussions, Decisions, and Meetings&lt;a href="#7-discussions-decisions-and-meetings" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Rules of argumentation and disagreement:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Don&amp;rsquo;t be a bully&lt;/strong>. If someone is questioning you about something, it is never the right response to &amp;ldquo;crush him, ridicule him, and seize upon a slight error.&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>Focus on ideas, not people&lt;/strong>. It doesn&amp;rsquo;t matter &lt;em>who&amp;rsquo;s&lt;/em> right — it matters &lt;em>what&amp;rsquo;s&lt;/em> right. There is no value in scoring rhetorical points, or exploiting some unintended misstatement.&lt;/li>
&lt;li>&lt;strong>Summarize the opposing point of view&lt;/strong>. This is a good exercise to make sure you understand your opponent&amp;rsquo;s perspective and argument. Sometimes it even results in one changing their mind!&lt;/li>
&lt;/ol>
&lt;p>Meetings are how a lot of modern work gets done. Meetings are one of two types:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Decision making meetings&lt;/strong>. Clear goal (make a decision), small audience, required participation, active and lively meeting.&lt;/li>
&lt;li>&lt;strong>Information sharing meetings&lt;/strong>. Wider audience, more passive meeting. These meetings are still necessary, in the age of email and Slack, because reading fails to convey emotion and nuance.&lt;/li>
&lt;/ol>
&lt;p>Tips for effective meetings:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>No interruptions&lt;/strong>. Interruptions are contagious, but waiting your turn to speak, and indicating that you&amp;rsquo;d like to - is contagious as well!&lt;/li>
&lt;li>&lt;strong>Everyone gets to speak&lt;/strong> (in decision making meetings). No one monopolizes the conversation. If the meeting was correctly constructed, everyone was invited for a reason. There should be no pure spectators.&lt;/li>
&lt;li>&lt;strong>Follow the rules&lt;/strong> of disagreement 👆🏽&lt;/li>
&lt;li>&lt;strong>Make a decision&lt;/strong>. Don&amp;rsquo;t let the perfect be the enemy of the good enough.&lt;/li>
&lt;/ol>
&lt;h2 id="8-burnout" class="group relative">8. Burnout&lt;a href="#8-burnout" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>Do. Or do not. There is no try.
— Master Yoda, Definitely Not a Buddhist.&lt;/p>&lt;/blockquote>
&lt;p>Unlike Yoda, Buddhists believe in trying. Buddha worried about laziness, and knew that anything worth doing takes effort, and that includes everything from career advancement to spiritual awakening.&lt;/p>
&lt;p>A constant striving can lead to burnout. Techniques to avoid burnout:&lt;/p>
&lt;ol>
&lt;li>Spend at least twenty percent of your time on the aspect of your work you love.&lt;/li>
&lt;li>Morning ritual: make a list of things you are going to accomplish that day. Writing it down helps stay motivated and remember everything you set out to do.&lt;/li>
&lt;li>Evening ritual: reflect back on your day. How did you spend your time? What did you accomplish? Did you get to the parts of your job you love?&lt;/li>
&lt;/ol>
&lt;p>Other techniques mentioned above — eating well, sleeping, meditation, exercise — all contribute to reducing the chances of burnout.&lt;/p>
&lt;h2 id="9-breathe" class="group relative">9. Breathe&lt;a href="#9-breathe" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>Everyone has bad days.&lt;/p>&lt;/blockquote>
&lt;p>Everyone has days when all the real problems feel like more than you can handle. Things to do when work gets overwhelming:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Trust your colleagues&lt;/strong>. You don&amp;rsquo;t have to do everything. Imagine that you got sick or had an accident. Is the company going to grind to a halt? Unlikely.&lt;/li>
&lt;li>&lt;strong>Don&amp;rsquo;t fight for work&lt;/strong>. If someone wants to do a particular task, let them. Don&amp;rsquo;t get territorial. Accept help when it&amp;rsquo;s offered. There are very few tasks that you &lt;em>must&lt;/em> do yourself.&lt;/li>
&lt;li>&lt;strong>Admit your limitations&lt;/strong>. Don&amp;rsquo;t exude confidence all the way to the deadline and then fail. Let people know and be vulnerable. Tell your boss, let them help you.&lt;/li>
&lt;li>&lt;strong>Breathe&lt;/strong>. Breathing isn&amp;rsquo;t limited to mindfulness meditation. You can use breathing throughout the day as a means of overcoming stress and despair.&lt;/li>
&lt;/ol>
&lt;h2 id="10-work-life-balance" class="group relative">10. Work-Life Balance&lt;a href="#10-work-life-balance" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>Buddha avoided the question of &amp;ldquo;work-life balance&amp;rdquo; by entirely renouncing both work and home life.&lt;/p>&lt;/blockquote>
&lt;p>Work is a part of life. Life has many parts that need to be balanced. In addition to our careers and personal lives, there&amp;rsquo;s sleep, wakefulness, activity and rest, friends and family, social connection and solitude. Balancing the time we spend in and out of work is only one of many tradeoffs and not necessarily the hardest or the most important. Make conscious choices in seeking out this balance. The likelihood of finding the perfect balance is low, but the chances of stumbling upon it by pure chance are zero.&lt;/p>
&lt;p>Keep in mind that asking this very question is a privilege. For much of human history, and for a large part of the world, working is a matter of subsistence and survival. If you&amp;rsquo;re able to exercise control over when and how much you&amp;rsquo;re working, you&amp;rsquo;re already one of the lucky ones.&lt;/p>
&lt;h2 id="11-you-are-not-your-job" class="group relative">11. You Are Not Your Job&lt;a href="#11-you-are-not-your-job" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;em>This chapter made the whole book worthwhile for me. It spoke to me in a way that nothing else on this subject has before.&lt;/em>&lt;/p>
&lt;blockquote>
&lt;p>You don&amp;rsquo;t exist.&lt;/p>&lt;/blockquote>
&lt;p>Imagine your car. It exists. It&amp;rsquo;s got wheels and an engine and seats and a steering wheel and everything. It is your Car.&lt;/p>
&lt;p>Now let&amp;rsquo;s say we replace a wheel. Is it still your Car? Yes.&lt;/p>
&lt;p>What if we replace all 4 wheels and the seats? Maybe.&lt;/p>
&lt;p>What if we slowly replaced every single part in the car? Is it still your Car? Or just some other car that happens to occupy the same physical space? Maybe not.&lt;/p>
&lt;p>If it&amp;rsquo;s not your car anymore, when did it stop being your car? If you can&amp;rsquo;t point to a specific moment when it stopped being your car, then it could not have been your car to begin with! The concept of &amp;ldquo;your car&amp;rdquo; is just that - a concept, an idea.&lt;/p>
&lt;p>We have the same dilemma with people as we did with the car. &lt;em>You&lt;/em> are constantly changing. And if so much about you has changed, in what sense are you the same &lt;em>you&lt;/em>? And if you&amp;rsquo;re not the same you anymore, maybe you were never quite &lt;em>you&lt;/em> to begin with.&lt;/p>
&lt;blockquote>
&lt;p>If there is no unchanging thing that defines our true self, maybe there is no self at all.&lt;/p>&lt;/blockquote>
&lt;p>Perhaps you don&amp;rsquo;t accept the above. Maybe there is some essential constant that defines you. However, this essential constant cannot have anything to do with your job: you could lose your job, you could quit, your boss could go crazy, your company could implode. Stuff happens.&lt;/p>
&lt;p>If whatever constitutes &lt;em>you&lt;/em> can survive years and years of physical and mental change, it cannot possibly depend on who issues your paycheck.&lt;/p>
&lt;blockquote>
&lt;p>You are not your job. Whatever you are — you&amp;rsquo;re definitely not that.&lt;/p>&lt;/blockquote>
&lt;p>When we define ourselves by our jobs, we invite all manner of suffering. We set ourselves up for countless disappointments when things go wrong at work. We start holding on too tightly to our jobs, living in fear of ever letting them go.&lt;/p>
&lt;blockquote>
&lt;p>This delusion that we &lt;em>are&lt;/em> what we &lt;em>do&lt;/em> is an especially dangerous one.&lt;/p>&lt;/blockquote>
&lt;p>You are not your job. Your colleagues are not their jobs either.&lt;/p>
&lt;h2 id="12-flow" class="group relative">12. Flow&lt;a href="#12-flow" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Buddha placed great value on concentration, and much of his teaching on meditation describes how to get into the deeper and deeper states of concentration that he called &amp;ldquo;absorptions.&amp;rdquo; In popular psychology, this total absorption is usually called &amp;ldquo;flow&amp;rdquo;. It is exhilarating and productive, but very fragile.&lt;/p>
&lt;blockquote>
&lt;p>Flow is that &amp;ldquo;subjective state that people report when they are completely involved in something to the point of forgetting time, fatigue, and everything else but the activity itself.&amp;rdquo;&lt;/p>&lt;/blockquote>
&lt;p>Distraction is the enemy of flow. How do we reduce distractions? Meditation and quieting electronics help. If working from home, have a specific work place, and some rituals to prevent slippage into other life distractions.&lt;/p>
&lt;h2 id="13-buddhism" class="group relative">13. Buddhism&lt;a href="#13-buddhism" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>Buddhism is not a faith that asks you to be exclusive or to give up any other beliefs. Buddhism doesn&amp;rsquo;t really ask you to believe &lt;em>anything.&lt;/em>&lt;/p>
&lt;p>Buddhism is more about &lt;em>doing&lt;/em> things, &lt;em>practicing&lt;/em> things, having &lt;em>experiences&lt;/em> rather than beliefs, and then paying &lt;em>attention&lt;/em> to those experiences and results.&lt;/p>&lt;/blockquote></description></item><item><title>Coaching (Feedback 3)</title><link>https://rushabhdoshi.com/posts/2019-12-23-coaching/</link><pubDate>Mon, 23 Dec 2019 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2019-12-23-coaching/</guid><description>&lt;p>&lt;em>The final note in the series brings theory and practice together into two ideas: first, in order to improve at anything, you need fast feedback loops. Second, coaches are a great way to create these feedback loops in complex environments. I believe coaching is an essential part of management and part of a manager’s job. I also suggest two approaches to getting coaching when your manager is unable to coach.&lt;/em>&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/coaching/tennis.jpg" alt="tennis serve">
&amp;ndash; Photo by &lt;a href="https://unsplash.com/photos/WqI-PbYugn4">Moises Alex, Unsplash&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://twitter.com/Atul_Gawande?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor">Atul Gawande&lt;/a> is a master surgeon. Specializing in endocrine surgery, he has performed thousands of operations over a long career. For years, Gawande had been steadily improving - his rates of complications were dropping steadily, and he consistently beat the averages, when compared to national data. Then he hit a wall. It seemed like he had hit peak performance, and the only place he could go from there was down.&lt;/p>
&lt;p>On an out of town trip, Gawande was trying to play a game of tennis, for fun. He had been an aspiring tennis player growing up but had long since given up that dream. He couldn&amp;rsquo;t find a game, and the ball machine was reserved for members. He paid the local pro to play with him for some time. After running Gawande around, the pro couldn&amp;rsquo;t help get into coaching mode. He pointed out that Gawande could get more power into his serve by paying attention to his feet. Gawande gave it a go and within a short period, the pro had Gawande serving at least 10 mph faster than before: a new personal record.&lt;/p>
&lt;p>Everyone knows that athletes have coaches. So do musicians. Why not doctors?&lt;/p>
&lt;p>Gawande decided to try an experiment and got another expert doctor to coach him. The coach sat in Gawande&amp;rsquo;s surgery, took extensive notes, and gave him lots of feedback about things that he could improve. Bear in mind: this is one of the world&amp;rsquo;s foremost surgeons, an expert in their field, at their performance peak, getting feedback and improving!&lt;/p>
&lt;p>&amp;ndash; excerpts from &lt;a href="https://www.newyorker.com/magazine/2011/10/03/personal-best">Personal Best, Atul Gawande, New Yorker&lt;/a>&lt;/p>
&lt;h2 id="building-fast-feedback-loops" class="group relative">Building Fast Feedback Loops&lt;a href="#building-fast-feedback-loops" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>By this point, I have hopefully convinced you of the importance of feedback. Implementing feedback loops, however, is not easy.&lt;/p>
&lt;p>Sometimes, tasks have in-built fast feedback loops. Remember Ericsson&amp;rsquo;s experiment in Deliberate Practice? If the student was able to accomplish the job, it got harder. Else it got easier.&lt;/p>
&lt;p>We see this characteristic in many software problems, as well. Imagine an engineer working on making their service faster. The performance of the service either improves or doesn&amp;rsquo;t (or worse, regresses): an in-built fast feedback loop.&lt;/p>
&lt;p>Some feedback loops can be very long. One can learn management by building a team, leading them into disaster, learning, starting again, creating the next team, etc. The feedback loop exists, but just takes years to run its course, and includes a large number of confounding factors.&lt;/p>
&lt;p>To get good at anything, we need fast feedback loops - ideally realtime, but failing that, as close to realtime as possible.&lt;/p>
&lt;h2 id="feedback-loops-for-complex-domains" class="group relative">Feedback Loops For Complex Domains&lt;a href="#feedback-loops-for-complex-domains" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Coaches for athletics, music, and even medicine, are effective because they are taking in a vast amount of complex information, pattern matching against what they know to be optimal, and efficiently communicating the result.&lt;/p>
&lt;p>This process currently requires a human. I imagine that over the next decade, we will build better AI-powered coaches (using computer vision to analyze your tennis serve), and the human coaches will move on to increasingly complex domains.&lt;/p>
&lt;p>People management in any organization is a very complex domain. Everyone working in a modern company is seeking to improve. To improve, they need fast feedback.&lt;/p>
&lt;h2 id="managers-as-coaches" class="group relative">Managers as Coaches&lt;a href="#managers-as-coaches" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Managers are uniquely positioned to provide fast and accurate feedback. They observe most of what their team is doing and the team&amp;rsquo;s struggles. They may have done the same things before, or they may have done similar things and can pattern match, or they may just have a wider lens. Regardless of the reason, they can provide helpful feedback and dramatically improve their reports&amp;rsquo; performance.&lt;/p>
&lt;p>I believe that &lt;strong>coaching is a crucial part of a manager&amp;rsquo;s job&lt;/strong>. If you&amp;rsquo;re a manager and aren&amp;rsquo;t providing great coaching to your team, you&amp;rsquo;re failing at an essential part of your job.&lt;/p>
&lt;p>Coaching is not the only thing that managers do - they have to build teams, deliver outcomes, and in general, lead. Managers are human - and neglecting the important in favor of the urgent is a very human fault. To be great coaches, managers must put in time and effort toward this goal.&lt;/p>
&lt;h2 id="other-coaches" class="group relative">Other Coaches&lt;a href="#other-coaches" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Sometimes your manager cannot provide you all the coaching you need. They may not be great coaches or are working on their coaching skills. They may not have the time - this is a frequent occurrence in executive situations. They may not believe in its value or have the inclination. In any case, if your manager cannot provide you adequate coaching, here are some other ideas to explore.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Peer coaching&lt;/strong>. Your peers have skills that you may be lacking and vice-versa. Put enough people in a group together, and there can be a mutual sharing of skills that helps the whole group improve. Running coaching circles takes time and effort: there has to be a set of people dedicated to running them, bringing people together, setting the agenda, and helping moderate the discussion. When done well, coaching circles can be effective and help form close bonds among colleagues as a side effect.&lt;/li>
&lt;li>&lt;strong>Hire a coach&lt;/strong>. Many large tech companies, such as Facebook and Google, offer employees at a certain level, the ability to get external coaches. Executive coaches are expensive, and the company will likely partner with another organization or agency to pair coaches with people. One can also directly hire a life coach. Many companies will help you find the right one. However, I have no experience with any of these companies or their services, and cannot recommend one platform over another.&lt;/li>
&lt;/ol>
&lt;p>Important note when hiring a coach: a great coach can improve your game; a bad coach can destroy it. Be careful from who you seek counsel. Check referrals, talk to them, and do your homework.&lt;/p>
&lt;h2 id="recap" class="group relative">Recap&lt;a href="#recap" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>This is the third of three notes on Feedback. This note made the case for building rapid feedback loops, getting a coach, and why managers should treat coaching as a critical part of their job.&lt;/p>
&lt;ol>
&lt;li>&lt;a href="https://rushabhdoshi.com/2019/12/14/delivering-constructive-feedback.html">Delivering Constructive Feedback&lt;/a> 2. Be timely. The effectiveness of feedback decays rapidly over time. 3. Be firm and kind. Don’t beat around the bush, don’t sugar coat, and don’t be an asshole. 4. Show the way. Point out flaws, but illustrate solutions with examples.&lt;/li>
&lt;li>&lt;a href="https://rushabhdoshi.com/2019/12/17/deliberate-practice.html">Deliberate Practice&lt;/a> 6. Have a specific goal. 7. Focus on achieving that goal. 8. Get rapid feedback. 9. Persevere through the pain.&lt;/li>
&lt;li>Coaching 👈🏽&lt;strong>this note&lt;/strong>. 11. Feedback is critical. 12. Build fast feedback loops, automated or human. 13. Coaching is a manager’s job.&lt;/li>
&lt;/ol>
&lt;p>{% include about.md %}&lt;/p></description></item><item><title>Deliberate Practice (Feedback 2)</title><link>https://rushabhdoshi.com/posts/2019-12-17-deliberate-practice/</link><pubDate>Tue, 17 Dec 2019 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2019-12-17-deliberate-practice/</guid><description>&lt;p>&lt;em>This is the second of three notes on Feedback. &lt;a href="https://rushabhdoshi.com/2019/12/14/delivering-constructive-feedback.html">The first one&lt;/a> covered pragmatic tips on delivering constructive feedback; this note goes into the theory behind achieving peak performance.&lt;/em>&lt;/p>
&lt;p>&lt;em>How do we become experts? How can we learn new skills in depth? What is the process, what are the steps, and who do we need? Deliberate Practice is one way to learn and grow: have clear goals, focus, get feedback, and overcome frustration.&lt;/em>&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/deliberate-practice/peak.jpg" alt="peak">
&amp;ndash; Photo by &lt;a href="https://unsplash.com/@jaspervandermeij?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText">Jasper van der Meij&lt;/a> on &lt;a href="https://unsplash.com/s/photos/peak?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText">Unsplash&lt;/a>&lt;/p>
&lt;p>I have been playing squash off and on for many years. Some friends got me into it, and I got hooked. It’s easy to get started, a fantastic &lt;a href="https://www.nutristrategy.com/caloriesburned.htm">cardio workout&lt;/a>, and immensely fun. However, my game wasn’t particularly good, and I belonged in the lowest tiers of the club. Starting last year, I started getting coaching. During each session, my coach would point out three things to focus on, work with me on those three things, and then ask me to practice those things in solo practice over the week, before coming back to the next coaching session — the result: more improvement in 3 months than ten years of playing the game.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/deliberate-practice/el-welily-vs-el-tayeb.jpg" alt="El Welily vs El Tayeb">
&amp;ndash; Nour El Tayeb vs Raneed El Welily, Netsuite Open Finals, San Francisco, 2019&lt;/p>
&lt;p>This story is not surprising for anyone that has seriously pursued sports, or music, or art: I got some coaching, and my game improved. Where&amp;rsquo;s the story?&lt;/p>
&lt;p>Sports stories are interesting because people are engaging in Deliberate Practice without explicitly trying. Deliberate Practice is a theory by &lt;a href="https://psy.fsu.edu/faculty/ericssonk/ericsson.dp.php">Anders Ericsson&lt;/a>, described in his book &lt;a href="https://www.amazon.com/Peak-Secrets-New-Science-Expertise-ebook/dp/B011H56MKS/">Peak&lt;/a> (&lt;a href="https://www.youtube.com/watch?v=uoUHlZP094Q">YouTube summary video&lt;/a>).&lt;/p>
&lt;blockquote>
&lt;p>“Most individuals who start as active professionals or as beginners in a domain change their behavior and increase their performance for a limited time until they reach an acceptable level. Beyond this point, however, further improvements appear to be unpredictable, and the number of years of work and leisure experience in a domain is a poor predictor of attained performance (Ericsson &amp;amp; Lehmann, 1996). Hence, continued improvements (changes) in achievement are not automatic consequences of more experience, and in those domains where performance consistently increases aspiring experts seek out particular kinds of experience, that is deliberate practice (Ericsson, Krampe &amp;amp; Tesch-Römer, 1993)&amp;ndash;activities designed, typically by a teacher, for the sole purpose of effectively improving specific aspects of an individual&amp;rsquo;s performance.&lt;/p>
&lt;p>&amp;ndash; Anders Ericsson, &lt;a href="https://psy.fsu.edu/faculty/ericssonk/ericsson.exp.perf.html">https://psy.fsu.edu/faculty/ericssonk/ericsson.exp.perf.html&lt;/a>&lt;/p>&lt;/blockquote>
&lt;p>In other words, it is easy to get started. Most people then hit a wall. Getting over that wall takes effort, focus, feedback, and grit. This formula applies to any learning activity and is how people become experts.&lt;/p>
&lt;h2 id="10000-hours" class="group relative">10000 Hours&lt;a href="#10000-hours" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Remember Outliers, Malcolm Gladwell’s 2008 book that shot up the NY Times’s bestseller list? He examined what factors differentiated the great people from the merely accomplished. He repeatedly brought up the concept of 10000 hours - the amount of time that experts dedicated to their craft, vs. about 2000 hours for amateurs.&lt;/p>
&lt;p>Over time, we took this idea and ran with it - to be good at anything, we need to put in 10000 hours of work. In other words, put in this much work, and voila - you’re an expert. It turns out this isn’t true, and there are other factors besides the time that goes into building real expertise.&lt;/p>
&lt;h2 id="10000-hours-of-deliberate-practice" class="group relative">10000 Hours Of Deliberate Practice&lt;a href="#10000-hours-of-deliberate-practice" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>What is “Deliberate Practice”? Ericsson breaks this down into four things:&lt;/p>
&lt;ol>
&lt;li>🎯 Specific goal.&lt;/li>
&lt;li>🕯 Intense focus.&lt;/li>
&lt;li>⏱ Immediate feedback.&lt;/li>
&lt;li>😢 Discomfort.&lt;/li>
&lt;/ol>
&lt;p>The best illustration of these is through the experiment that Ericsson’s research group ran, as described in Peak.&lt;/p>
&lt;p>A graduate student is committed to spending an hour a week, working on getting better at a simple task: take a string of 7 random numbers, memorize them, and recite them from memory. They started at seven because that’s widely believed to be the number that humans can remember easily. When the student could quote them accurately, they increased the length of the number string (8, 9, 10 ..), and when they made a mistake, they reduced the series.&lt;/p>
&lt;p>The student struggled with this for a while. It got frustrating. Then he made a breakthrough! He got to 11 digits. Then - frustration again. Struggle → Breakthrough! 22 digits! This pattern kept repeating itself till he got to 82 digits! 82 is an insane number of digits to memorize, and the student got there over the course of 200 sessions of an hour each.&lt;/p>
&lt;p>Looking at this example through the lens of deliberate practice:&lt;/p>
&lt;ol>
&lt;li>🎯 Specific goal: remember and recite strings of digits of increasing length.&lt;/li>
&lt;li>🕯 Intense focus: no interruptions during the hour-long session, with a singular focus on the task at hand.&lt;/li>
&lt;li>⏱ Immediate feedback: when he slipped, the string shrank.&lt;/li>
&lt;li>😢 Discomfort: it was hard and frustrating.&lt;/li>
&lt;/ol>
&lt;p>Then they went one step further: they trained another student in the same task, but the first student was their coach and taught them his techniques in digit memorization. Result: &lt;em>the second student learned even faster and developed their techniques when the coach’s methods no longer worked for them&lt;/em>.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/deliberate-practice/how-learning-actually-works.png" alt="how learning actually works">&lt;/p>
&lt;h2 id="deliberate-practice-at-work" class="group relative">Deliberate Practice At Work&lt;a href="#deliberate-practice-at-work" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Whether you’re an engineer, a designer, a data scientist, or a manager, you’re trying to be better at your job. There is a degree of intrinsic satisfaction in a job done well; there is a feeling of growth as you conquer and solve previously unsolvable problems. There are the extrinsic benefits of growth: bonuses and promotions, to go along with increased responsibility.&lt;/p>
&lt;p>The best way to get better at what you do is to apply the principles of Deliberate Practice to whatever you want to get better at. Imagine you’re an engineer, looking to get better at your craft. What should you do?&lt;/p>
&lt;ol>
&lt;li>🎯 &lt;strong>Set a clear, measurable goal&lt;/strong>. It’s not enough to build a system; the system should have some performance or scale or other criteria that are hard to hit.&lt;/li>
&lt;li>🕯 &lt;strong>Focus&lt;/strong>. The modern, open workplace makes this challenging, but you can focus. Buy some noise-canceling headphones, clear your calendar, find a quiet room.&lt;/li>
&lt;li>⏱ &lt;strong>Get feedback&lt;/strong>. Engineering systems have intrinsic feedback built-in, via compilers, unit-tests, and end-to-end tests. Get human feedback through code reviews and design reviews, with people who are better than you. Managers can provide non-technical feedback, helping you pick the right problem, and communicate solutions.&lt;/li>
&lt;li>😢 &lt;strong>Be one with the discomfort&lt;/strong>. It won’t be easy. There will be days or weeks of no progress. Learning and growth have plateaus, and that is okay.&lt;/li>
&lt;/ol>
&lt;h2 id="the-managers-role" class="group relative">The Manager’s Role&lt;a href="#the-managers-role" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>What about managers? Managers are both coaches that are helping their reports, and humans who are improving their management skills. The best thing you can do for your team as their manager is to make sure they are adhering to the principles of deliberate practice:&lt;/p>
&lt;ol>
&lt;li>🎯 &lt;strong>Make sure everyone has clear goals&lt;/strong>. The weekly 1-1 is an excellent time to check in. Goals should form the beginning of every performance review conversation.&lt;/li>
&lt;li>🕯 &lt;strong>Defend their time&lt;/strong>. Focus is important.
&lt;ol>
&lt;li>Block &amp;ldquo;maker time&amp;rdquo; on everyone&amp;rsquo;s calendars.&lt;/li>
&lt;li>Move all team meetings to a couple of days in the week, and keep the rest of the days blocked off for work.&lt;/li>
&lt;li>Encourage reading email twice a day and shutting down slack notifications a few hours at a time.&lt;/li>
&lt;li>Buy your team good, noise-canceling headphones. Bose QC-35-ii is my favorite. $250 here will be repaid in growth and productivity quickly.&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>⏱ Give them timely feedback. Giving good constructive feedback is hard, but crucial to growth. I’ve documented my thoughts and tips on how to give good feedback here.&lt;/li>
&lt;li>😢 Be patient. Know that learning is not a smooth linear curve. It goes in spurts. Be patient when they are struggling with a plateau, knowing that if they put the effort in, the growth will happen.&lt;/li>
&lt;/ol>
&lt;h2 id="sidebar-why-does-peloton-work" class="group relative">Sidebar: Why does Peloton work?&lt;a href="#sidebar-why-does-peloton-work" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>I was a Peloton skeptic, and late to the party. It&amp;rsquo;s an incredibly expensive exercise bike, and I figured it was a craze. I could not have been more wrong.&lt;/p>
&lt;p>The magic of Peloton is not about bikes being well built, or the instructors being amazing (they are), or the social pressure of leaderboards (it can be fun at times). Peloton is magical because it tricks you into deliberate practice without realization. Pelotons have:&lt;/p>
&lt;ol>
&lt;li>🎯 Goals. You can set your own - get on the bike every day, compete with others, compete against yourself - all of these are easily trackable through the app.&lt;/li>
&lt;li>🕯 Focus. It is impossible to do anything while you&amp;rsquo;re in a class.&lt;/li>
&lt;li>⏱ Instant feedback. Your cadence, your resistance, your output.&lt;/li>
&lt;li>😢 Pain. Thirty minutes into a 45-minute class, all you can think of is giving up.&lt;/li>
&lt;/ol>
&lt;p>But it works. Here’s my total output over time for 30-minute intense efforts as evidence.
&lt;img src="https://rushabhdoshi.com/assets/deliberate-practice/peloton-total-output.png" alt="Peloton Total Output">&lt;/p>
&lt;p>Tricking people into Deliberate Practice is something that a run-of-the-mill exercise bike cannot do. You can be on your exercise bike for 10000 hours vs a Peloton for a fraction of the time, and I guarantee faster progress toward your fitness goals on the latter.&lt;/p>
&lt;h2 id="recap-the-feedback-series" class="group relative">Recap: The Feedback Series&lt;a href="#recap-the-feedback-series" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>This is the second of three notes on Feedback. We went into the theory of deliberate practice, which provides some hints on how to become an expert at anything.&lt;/p>
&lt;ol>
&lt;li>&lt;a href="https://rushabhdoshi.com/2019/12/14/delivering-constructive-feedback.html">Delivering Critical Feedback&lt;/a>
&lt;ol>
&lt;li>Be timely. The effectiveness of feedback decays rapidly over time.&lt;/li>
&lt;li>Be firm and kind. Don’t beat around the bush, don’t sugar coat, and don’t be an asshole.&lt;/li>
&lt;li>Show the way. Point out flaws, but illustrate solutions with examples.&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>Deliberate Practice 👈🏽&lt;strong>this note&lt;/strong>.
&lt;ol>
&lt;li>Have a specific goal.&lt;/li>
&lt;li>Focus on achieving that goal.&lt;/li>
&lt;li>Get rapid feedback.&lt;/li>
&lt;li>Persevere through the pain.&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>Coaching&lt;/li>
&lt;/ol>
&lt;p>{% include about.md %}&lt;/p></description></item><item><title>Delivering Constructive Feedback (Feedback 1)</title><link>https://rushabhdoshi.com/posts/2019-12-14-delivering-constructive-feedback/</link><pubDate>Sat, 14 Dec 2019 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2019-12-14-delivering-constructive-feedback/</guid><description>&lt;p>&lt;em>Everyone screws up, everyone makes mistakes. When we err, hopefully, someone pulls us aside and tells us about our blunder. Feedback, when delivered on time and in a constructive manner, is critical to learning and growth. Three things that have made my feedback stick: 1 provide it as quickly as possible, 2. be firm and kind, and 3. suggest how you would have acted in that situation.&lt;/em>&lt;/p>
&lt;h2 id="1-timing-is-everything" class="group relative">1. Timing Is Everything&lt;a href="#1-timing-is-everything" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Bill is a promising PM on the team. He has excellent product insight and can execute projects well. However, he struggles with selling his ideas to the Bigwigs. Good ideas get rejected, and people leave the room in confusion.&lt;/p>
&lt;p>During his annual performance review, Bill gets feedback from his manager Amy: “Bill should work on his communication skills. In particular, he can do a better job selling his ideas to executive leadership.”&lt;/p>
&lt;p>Feedback? ✅&lt;/p>
&lt;p>Helpful? 👎🏽&lt;/p>
&lt;p>The effectiveness of feedback decays rapidly over time. If you want the feedback to stick, deliver it while it is still fresh in everyone’s minds. Don’t wait for the annual review or that perfect opportunity. Don’t even wait for the next 1-1. Give feedback immediately while the events are fresh in everyone’s minds.&lt;/p>
&lt;p>As an aside, this is the reason that annual reviews are mostly a waste of time from a learning and growth perspective (though they are necessary for other purposes). By the time yearly reviews come around, the illustrative events have become a faded memory, and the opportunity for learning is lost.&lt;/p>
&lt;h2 id="2-be-firm-and-honest-be-kind-and-human" class="group relative">2. Be Firm and Honest. Be Kind and Human.&lt;a href="#2-be-firm-and-honest-be-kind-and-human" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/ruinous-empathy.png" alt="Ruinous empathy">&lt;/p>
&lt;p>Joe gets a code review request from Rita. It’s not an outstanding PR. The code is hard to read, and she didn’t include unit tests. Joe doesn’t want to hurt Rita’s feelings. He knows she’s trying hard. She is new to the company and doesn’t know the standards. He accepts it, making a note to himself to go back and add tests and fix things up.&lt;/p>
&lt;p>Oops - Joe just lost a valuable opportunity to give feedback because he was trying hard to not hurt Rita’s feelings.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/obnoxious-aggression.png" alt="Obnoxious aggression">
&amp;ndash; XKCD 1513, &lt;a href="https://xkcd.com/1513/">https://xkcd.com/1513/&lt;/a>&lt;/p>
&lt;p>On the other side of the room, Adam sends some code over to Lisa. Lisa is a veteran and has been with the company forever. Adam is new and less confident, given his background. He doesn’t know the company’s style guide, and frankly, doesn’t see the value of having consistent code style. Lisa blasts the code review and publicly questions Adam’s knowledge and standards, using aggressive language. In short, she is being a jerk.&lt;/p>
&lt;p>Another lost opportunity - given Lisa’s demeanor, Adam will get defensive and refuse to listen to feedback, likely to repeat the same mistake again.&lt;/p>
&lt;p>Two rules for managers:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Don’t be overly empathetic&lt;/strong>. People are adults, are here to do a job, and get better. Too much empathy confuses or kills the message.&lt;/li>
&lt;li>&lt;strong>Don’t be an asshole&lt;/strong>. You’re telling someone they messed up, and they’re likely going to be hurt. Rubbing it is, belaboring some point, repeating facts in different ways - these things don’t help. Your goal is to build trust, not destroy it.&lt;/li>
&lt;/ol>
&lt;h2 id="sidebar-a-clash-of-cultures" class="group relative">Sidebar: A clash of cultures&lt;a href="#sidebar-a-clash-of-cultures" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>We can look at communication challenges as a clash of two cultures: &lt;a href="https://www.theatlantic.com/national/archive/2010/05/askers-vs-guessers/340891/">Ask Culture and Guess Culture&lt;/a>.&lt;/p>
&lt;blockquote>
&lt;p>In some families, you grow up with the expectation that it&amp;rsquo;s OK to ask for anything at all, but you gotta realize you might get no for an answer. This is Ask Culture.&lt;/p>
&lt;p>In Guess Culture, you avoid putting a request into words unless you&amp;rsquo;re pretty sure the answer will be yes.&lt;/p>
&lt;p>&amp;ndash; &lt;em>&lt;a href="https://ask.metafilter.com/55153/Whats-the-middle-ground-between-FU-and-Welcome#830421">Metafilter comment, tangerine, 2007&lt;/a>&lt;/em>&lt;/p>&lt;/blockquote>
&lt;p>In ask-culture environments, people have no qualms about asking for things, favors, help, things they want. They also expect to get turned down a lot.&lt;/p>
&lt;p>In guess-culture environments, people don’t ask for something unless they are reasonably certain the answer is yes. And even then, in these cultures, the appropriate thing to do may be to refuse the help and let the helper insist on helping.&lt;/p>
&lt;blockquote>
&lt;p>Your boss, asking for a project to be finished early, may be an overdemanding boor – or just an Asker, who&amp;rsquo;s assuming you might decline. If you&amp;rsquo;re a Guesser, you&amp;rsquo;ll hear it as an expectation.&lt;/p>
&lt;p>This is a spectrum, not a dichotomy, and it explains cross-cultural awkwardnesses, too: Brits and Americans get discombobulated doing business in Japan, because it&amp;rsquo;s a Guess culture, yet experience Russians as rude, because they&amp;rsquo;re diehard Askers.&amp;quot;&lt;/p>
&lt;p>&amp;ndash; &lt;a href="https://www.theatlantic.com/national/archive/2010/05/askers-vs-guessers/340891/">Askers vs Guessers&lt;/a>, The Atlantic&lt;/p>&lt;/blockquote>
&lt;p>What happens when an Asker meets a Guesser?&lt;/p>
&lt;ul>
&lt;li>Asker thinks that the Guesser doesn’t speak their mind, is two-faced, is confusing, and hard to comprehend.&lt;/li>
&lt;li>Guesser thinks that Asker is very rude, extremely harsh, loud, obnoxious, and uncomfortable.&lt;/li>
&lt;/ul>
&lt;p>Keep these differences in mind when delivering feedback and tune your language appropriately!&lt;/p>
&lt;h2 id="3-how-would-you-approach-the-problem" class="group relative">3. How would you approach the problem?&lt;a href="#3-how-would-you-approach-the-problem" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Pointing out problems in time gets us halfway there. The rest of the way is teaching someone how to do it better. While nobody is perfect, the person giving feedback typically has some additional information - in the form of more experience, or broader context, or greater depth - that they can use to help the recipient.&lt;/p>
&lt;p>Back at Facebook, we were working on Stories, and things weren’t going particularly well. We were in the doldrums; the team was getting unmotivated. Chris Cox, Facebook’s then Product Chief, suggested writing a note explaining why Stories mattered, to get the team excited. Adam Mosseri, my boss, suggested that I take this challenge, and I enthusiastically signed up.&lt;/p>
&lt;p>And utterly failed. I could not, for the life of me, write something that came across as remotely engaging or motivating. I’m used to writing dry, technical docs. Even now, my writing tends to be terse and to the point, not exactly motivational speak.&lt;/p>
&lt;p>After giving me some time to struggle, Adam checked in. And he asked if I’d prefer he write it this time. And in about 10 minutes he wrote one of the best, heartfelt notes, about our work. People loved it. And I learned how to write better.&lt;/p>
&lt;p>When the person giving feedback also illustrates with an example, when your coach tells you what to do, in addition to pointing out errors, it dramatically increases your ability to learn.&lt;/p>
&lt;p>I suggest following up with “here’s how I’d do it” - not merely as a thing to copy (though that is perfectly fine), but as a means of illustrating and teaching. Encourage the recipient to take what they like, make it their own, and get better.&lt;/p>
&lt;p>Note that this is different from “micro-management.” You’re not telling people exactly what to do and how to do it. You are teaching what you know and encouraging them to find their path.&lt;/p>
&lt;h2 id="reading" class="group relative">Reading&lt;a href="#reading" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>I strongly recommend Kim Scott’s Radical Candor (&lt;a href="https://www.amazon.com/Radical-Candor-Kick-Ass-Without-Humanity/dp/1250103509/">book&lt;/a>, &lt;a href="https://www.youtube.com/watch?v=4yODalLQ2lM">20m YouTube video&lt;/a>) as an easy to understand framework on how to deliver feedback. She espouses a 2x2 (my friends know how much I love 2x2s) that goes something like this:&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/radical-candor.jpg" alt="Radical Candor 2x2">&lt;/p>
&lt;p>The central idea behind Radical Candor is to care personally and challenge directly.&lt;/p>
&lt;p>&lt;strong>Caring personally&lt;/strong> is to care about your report’s well-being and growth at a deep, emotional level. This care should go across the current project and team. Many people who reported to me are close friends to this day, across organizations, and companies. Some of my best bosses have cared deeply about me, and my well-being - not only are we still friends, but I’d work for any of them again in a heartbeat.&lt;/p>
&lt;p>&lt;strong>To directly challenge someone&lt;/strong>, you have to be able to tell them, to their face, when they’re screwing up; when they’ve let you down; when they’ve disappointed you. You expect more, you know they can do better, and you invest in them by telling them to step up.&lt;/p>
&lt;p>Scott uses these two axes to create the above 2x2: any of the three quadrants in gray result in little or no change in employee behavior, while the 4th orange quadrant helps people get better.&lt;/p>
&lt;p>I’d encourage you to at least watch her video and ideally, buy and read the book.&lt;/p>
&lt;h2 id="recap-the-feedback-series" class="group relative">Recap: The Feedback Series&lt;a href="#recap-the-feedback-series" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>This is the first of three notes on Feedback. This note is the practical punchline: how to give effective, constructive feedback, without being an asshole or being overly empathetic.&lt;/p>
&lt;ol>
&lt;li>Delivering Critical Feedback 👈🏽 &lt;strong>this note&lt;/strong>.
&lt;ol>
&lt;li>&lt;strong>Be timely&lt;/strong>. The effectiveness of feedback decays rapidly over time.&lt;/li>
&lt;li>&lt;strong>Be firm and kind&lt;/strong>. Don’t beat around the bush, don’t sugar coat, and don’t be an asshole.&lt;/li>
&lt;li>&lt;strong>Show the way&lt;/strong>. Point out flaws, but illustrate solutions with examples.&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>Deliberate Practice&lt;/li>
&lt;li>Coaching&lt;/li>
&lt;/ol>
&lt;p>{% include about.md %}&lt;/p></description></item><item><title>Tips for Better Meetings</title><link>https://rushabhdoshi.com/posts/2019-12-4-tips-for-better-meetings/</link><pubDate>Wed, 04 Dec 2019 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2019-12-4-tips-for-better-meetings/</guid><description>&lt;p>&lt;img src="https://rushabhdoshi.com/assets/zebras-bw-small.jpg" alt="zebras">
(Photo by &lt;a href="https://unsplash.com/@shootbyteo?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText">Matteo Di Iorio&lt;/a> on &lt;a href="https://unsplash.com/@shootbyteo?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText">Unsplash&lt;/a>)&lt;/p>
&lt;p>&lt;em>Managers work through meetings. In this short post, I posit three dimensions along which we can improve meetings and present tips that have had the most impact on my meetings along these dimensions.&lt;/em>&lt;/p>
&lt;p>Growing up as an engineer, I equated meetings with wasting time. Naturally, when I become a manager, I tried to reduce or eliminate meetings, which did not work (duh!). I failed to understand that meetings are a manager’s work. I might as well have been trying to become a champion swimmer by eliminating water.&lt;/p>
&lt;p>Andy Grove’s &lt;a href="https://www.amazon.com/High-Output-Management-Andrew-Grove-ebook/dp/B015VACHOK/">High Output Management&lt;/a> was the bright light that cut through the darkness of my anti-meeting feelings. Grove devotes an entire chapter to meetings, calling them “the medium of a manager’s work” (&lt;a href="https://medium.com/ceoeducation/notes-on-high-output-management-19b8017495d4">good summary&lt;/a>). He decomposes meetings into different classes, identifies why they are necessary, and builds a framework around how much time and energy should be devoted to these. For the first time, things made sense.&lt;/p>
&lt;p>Since that step-changing moment, like any competent engineer, I have been focused on optimizing meetings. To make something better, we have to agree on what “better” means. I think of improving meetings on three dimensions:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Correctness&lt;/strong>: did the meeting achieve a good outcome? If it was a decision-making meeting, did we make the right decision?&lt;/li>
&lt;li>&lt;strong>Efficiency&lt;/strong>: how quickly did we get to our goal? Did we communicate clearly?&lt;/li>
&lt;li>&lt;strong>Culture&lt;/strong>: did people feel included and heard? Did people move forward as a team, even if they disagreed with the outcome?&lt;/li>
&lt;/ol>
&lt;p>In the sections below, I present tips that have made material differences along each dimension. This note is not a comprehensive survey; it&amp;rsquo;s meant to be a quick 1-2-3. &lt;strong>For the impatient: skip directly to the tips&lt;/strong>.&lt;/p>
&lt;p>A disclaimer: This material is not original. The business world has studied meetings forever. This &lt;a href="https://hbr.org/1976/03/how-to-run-a-meeting">1976 article&lt;/a> (HBR) is one of the best on running good meetings. Here’s &lt;a href="https://www.nytimes.com/guides/business/how-to-run-an-effective-meeting">New York Times&lt;/a> and &lt;a href="https://randsinrepose.com/archives/category/management/">Rands In Repose&lt;/a>. My contribution is to distill tips that you can copy without having to read through tons of meeting-theory.&lt;/p>
&lt;p>Another disclaimer: Meetings can range from huge (company all hands) to tiny (1-1s). Somewhere in between are the 5-15 people meetings where a company’s crucial work gets done. This article is about those meetings.&lt;/p>
&lt;hr>
&lt;h2 id="correctness-" class="group relative">Correctness ✅&lt;a href="#correctness-" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>I am a big fan of Kahneman’s &lt;a href="https://www.amazon.com/dp/B00555X8OA/ref=dp-kindle-redirect?_encoding=UTF8&amp;amp;btkr=1">Thinking Fast and Slow&lt;/a> (&lt;a href="https://www.youtube.com/watch?v=uqXVAo7dVRU">video summary&lt;/a>). Our savannah evolved brains are hardwired to do what he calls “Type-1 Thinking”. When our ancestors saw a lion, they didn’t spend much time thinking deeply about their choices; they climbed a tree. The ones that thought hard aren’t our ancestors. When we sit in meetings where we see material for the first time and have to pass judgment under the gun, we are engaging in Type-1 thinking.&lt;/p>
&lt;p>The alternative is to engage the slow brain. This deliberate, rational process is called “Type-2 thinking” in Kahneman’s lore. Engaging the slow brain is challenging: it is genuinely hard work and time-consuming. But it leads to better decisions on complex topics.&lt;/p>
&lt;blockquote>
&lt;p>Tip: Send all materials out 24 hours ahead to be read as homework. 📖&lt;/p>&lt;/blockquote>
&lt;p>Engage your slow brain. Read in the peace of your home or wherever you can think deeply. Think about it in the shower, or on your run, or wherever you do your best thinking.&lt;/p>
&lt;p>Sending everything out as homework is taxing. Gathering materials and putting things together a day early shifts the schedule. It also forces more work on everyone attending the meeting: they need to spend time reading, digesting, and preparing for the meeting the day before.&lt;/p>
&lt;p>My advice is to ease into this: try doing this with your most important meetings first, then work backward until pre-reads become team culture.&lt;/p>
&lt;hr>
&lt;h2 id="efficiency-" class="group relative">Efficiency ⏰&lt;a href="#efficiency-" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>People have put much energy into making meetings more efficient. Good meeting hygiene goes something like this:&lt;/p>
&lt;ol>
&lt;li>Send the agenda out ahead of time.&lt;/li>
&lt;li>Define and focus on the goal.&lt;/li>
&lt;li>Keep track of time.&lt;/li>
&lt;li>Make a decision.&lt;/li>
&lt;li>Write whatever was decided and send it out to everyone.&lt;/li>
&lt;/ol>
&lt;p>There is some variation, depending on the type of meeting, but mostly variations on the same theme.&lt;/p>
&lt;p>I believe #2 is the most important. It is amazing how many meetings people go to and ask, “why are we here?”. Or we are halfway through the allotted time, and we haven’t even talked about the most important thing we are here for. What’s the problem? We are missing a goal.&lt;/p>
&lt;blockquote>
&lt;p>Efficiency Tip: Have a clear and stated goal. Focus the conversation on said goal. 🎯&lt;/p>&lt;/blockquote>
&lt;p>Meetings with unclear goals tended to meander off course, people ratholed on things that were secondary to the task at hand, and these meetings mostly resulted in follow-up meetings, with no actual progress made.&lt;/p>
&lt;p>Start your meetings with an articulation of why you’re all in one place and what success is.&lt;/p>
&lt;p>“Let’s talk about making things fast.” is not a goal statement. We can talk about the topic for a long time, but to what end? Is it because we think the site is slow? Is someone complaining? Or do we believe in speed as an engineering value and want to enforce it?&lt;/p>
&lt;p>“We are here to decide whether or not we should invest in performance right now.” This statement clarifies our purpose, what success would look like (a decision, positive or negative), guides the conversation (is your point germane to deciding whether we should invest now or later?)&lt;/p>
&lt;p>To build this discipline, start each meeting by asking two questions:&lt;/p>
&lt;ol>
&lt;li>Why are we here?&lt;/li>
&lt;li>What would success look like at the end of the meeting?&lt;/li>
&lt;/ol>
&lt;p>You may feel this is rote work, but soon, the team will adapt, and these questions will be answered in the material before anyone has to ask.&lt;/p>
&lt;hr>
&lt;h2 id="culture-" class="group relative">Culture ✨&lt;a href="#culture-" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Humans are social animals. Meetings aren’t just about getting work done. There are a lot of other things going on in meetings - the establishment of social status, signaling on who’s a Big Deal, validation of ideas, people, and their work. We can pretend to be robots, but we aren’t (yet).&lt;/p>
&lt;p>The cultural aspects can go very right - people come out of meetings with clarity, purpose, camaraderie, eagerness to make progress - or it can go very wrong - people not feeling heard, hurt feelings, anger, and frustration at adverse outcomes.&lt;/p>
&lt;p>Leaders tend to focus a lot of correctness and efficiency, but forget about the cultural element. To build a strong, cohesive team and organization, pay attention to this part.&lt;/p>
&lt;hr>
&lt;p>When I was working on Facebook Stories, we observed a phenomenon in any prominent meeting. As things were getting started, people would walk into the review room — and make a beeline for the chairs on the side while the table was unoccupied. Even worse, the people sitting off-table were often women or minorities or people who were shy or reserved by nature. They might be the primary authors and experts — their work was about to be presented, but they didn’t sit at the table.&lt;/p>
&lt;blockquote>
&lt;p>Culture Tip #1: Everyone sits at the table. 🪑&lt;/p>&lt;/blockquote>
&lt;p>(The credit for this tip goes to Adam Mosseri, Head of Instagram, boss extraordinaire. He would publicly call out people and get them to sit at the table, even if he had to stand on the side.)&lt;/p>
&lt;p>We may think this sort of physical signaling doesn’t matter. And most meetings nowadays have some people dialing in remotely. Our non-scientific evidence would suggest otherwise.&lt;/p>
&lt;hr>
&lt;p>Designers should present designs. Researchers: research. Data scientists: analyses. This idea seems obvious but is rarely the case in practice. Typically, the Product Manager, the one synthesizing the materials to create one cohesive narrative, presents the work. Not only does she present the work, she also takes the first stab at answering questions, all while the primary author, the expert, is sitting in the room. Net result: people feel voiceless.&lt;/p>
&lt;blockquote>
&lt;p>Culture Tip #2: Authors present their work. 👩🏽‍🔬&lt;/p>&lt;/blockquote>
&lt;p>Let primary authors talk about their work, even at the cost of interrupting flow. Changing speakers mid-flight seemed awkward at first. Presenters want to control the room because they feel it will get them to better outcomes. However, we’re not in the middle of a sales pitch; we’re in the middle of trying to come together as a team and work things out.&lt;/p>
&lt;p>One way to ease into speaker rotation is to enforce crediting. “Liz and the research team found this through their survey work. I am going to talk through this, but they’re the experts.” Clear attribution gets you halfway there.&lt;/p>
&lt;p>In its optimal state, speaker rotation makes everyone on the team feel valued. They feel like the leader knows who they are, and cares about them, and binds them closer as a result.&lt;/p>
&lt;hr>
&lt;p>Every meeting has someone that talks too much (I know; I used to be that guy) and people that don’t speak up, even when they have the best knowledge or the most astute and relevant opinion. It is the leader’s job to make sure they have heard from everyone in the room by creating space for the quietest people to speak.&lt;/p>
&lt;blockquote>
&lt;p>Culture Tip #3: Everyone speaks at some point, and nobody interrupts. 💬&lt;/p>&lt;/blockquote>
&lt;p>The way to accomplish this is to quiet the loud person — indirectly: by giving them high cognition tasks like being the scribe, or directly: by telling that you understand their perspective and would like to hear from others instead.&lt;/p>
&lt;p>Getting the quiet people to speak can be harder. The most effective technique, in my experience, is to directly ask them. “Jo, what do you think?” Keep a mental track of who has spoken and remember the people dialed in on Zoom.&lt;/p>
&lt;p>Also — getting people to speak up is not useful if they get interrupted or passively ignored. Both these behaviors make people feel like nobody cares or values their thoughts. Fixing interruptive or ignoring behavior takes work and courage. One has to call out the interrupter publicly, and often, the person interrupting is the leader. The best people do this, gain the respect of everyone in the room, and build stronger teams as a result.&lt;/p>
&lt;hr>
&lt;h1 id="parting-thoughts" class="group relative">Parting Thoughts&lt;a href="#parting-thoughts" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>I hope you incorporate one or more of these tips into your meeting repertoire. If you had to pick only one, I’d recommend the pre-read / homework tip. I guarantee it will make your decisions and outcomes better.&lt;/p>
&lt;p>Do you have tips that have made your meetings infinitely better? I’d love to hear them (so would the world!). &lt;a href="https://rushabhdoshi.com">Drop me a line&lt;/a>.&lt;/p>
&lt;p>{% include about.md %}&lt;/p></description></item><item><title>Durable Decisions</title><link>https://rushabhdoshi.com/posts/2019-11-26-durable-decisions/</link><pubDate>Tue, 26 Nov 2019 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2019-11-26-durable-decisions/</guid><description>&lt;p>&lt;em>One of my favorite internal posts at Facebook outlined a framework on making sticky decisions. This post is a rewrite of that original &amp;ldquo;Durable Decisions&amp;rdquo; post by &lt;a href="https://twitter.com/ficus">Ficus Kirkpatrick&lt;/a>, in turn based on ideas and input from &lt;a href="https://twitter.com/chandhok">Nikhil Chandhok&lt;/a>. The credit for the idea and framework go to them; this post is written by me since I have more cycles to write.&lt;/em>&lt;/p>
&lt;p>Your team needs to decide whether to focus on making your product faster or building a feature that is going to be the next Big Thing. The team follows best practices, does its homework, runs it by you. Decision made. We are focusing on building the feature.&lt;/p>
&lt;p>Fast forward two weeks, and you hear rumblings. The star engineer on the team is working on speed. The feature isn&amp;rsquo;t making as much progress as everyone would like. Three weeks in, the team has started to work on speed and drop the feature altogether. It just happened. Four weeks in, the feature is not built, and the product isn&amp;rsquo;t significantly faster either. Oops.&lt;/p>
&lt;p>So, what happened? We made a decision four weeks ago. Then something changed. And the decision unmade itself over the course of a month. Can this be avoided? How?&lt;/p>
&lt;p>Enter durable decisions.&lt;/p>
&lt;blockquote>
&lt;p>A durable decision is one that doesn&amp;rsquo;t change if its inputs haven&amp;rsquo;t changed.&lt;/p>&lt;/blockquote>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/durable-decisions.png" alt="durable decisions image">&lt;/p>
&lt;h1 id="inputs" class="group relative">Inputs&lt;a href="#inputs" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;h2 id="1-goals" class="group relative">1. Goals&lt;a href="#1-goals" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>What are the goals of the project? What are non-goals? Is a project results-bound (done when metric X is at threshold Y?), delivery-bound (done when feature 𝝰 is shipped), or time-bound (done in a month)?&lt;/p>
&lt;p>The goal discussion is almost always the right place to start. Disagreements at this phase result in significant downstream thrash. Have precise goals (and non-goals) and write them down.&lt;/p>
&lt;h2 id="2-assumptions" class="group relative">2. Assumptions&lt;a href="#2-assumptions" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>We are baking in many assumptions when we come up with various options. Time, money, technical capability (CPU, GPU, RAM, disk, network), people (how many people, how much bandwidth), this list goes on.&lt;/p>
&lt;p>Assumptions are the second biggest reason (after unclear goals) for decisions to fall apart. People either assumed different things, or those assumptions changed. Exhaustively documenting every assumption is not a good use of time; documenting the major assumptions, those that are likely to break or cause disagreements is a good use of time.&lt;/p>
&lt;h2 id="3-options" class="group relative">3. Options&lt;a href="#3-options" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Come up with a good list of options, including tradeoffs between them, or the rationale to choose one over another. Take care to not get too attached to one option over another; we are human, and this is natural. A mentor gave me a pretty good trick to get over this attachment. He said:&lt;/p>
&lt;blockquote>
&lt;p>You don&amp;rsquo;t understand your opponent&amp;rsquo;s argument until you can argue their points, just as strongly, on their behalf, without them being in the room.&lt;/p>&lt;/blockquote>
&lt;p>Understand your options thoroughly and &lt;em>drumroll please&lt;/em> write them down.&lt;/p>
&lt;h2 id="4-deciders" class="group relative">4. Decider(s)&lt;a href="#4-deciders" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Be explicit about who is making the decision: some person, some committee. When things change in the future, you&amp;rsquo;ll want to know whom people should go to talk.
Gathering Inputs&lt;/p>
&lt;p>To make a sticky decision, get everyone&amp;rsquo;s buy-in. The best way to get them bought in is to get them involved in making the decision early on. You need to consult people to gather input, to build your set of options, to understand all the assumptions that are being baked in.&lt;/p>
&lt;p>Consult the stakeholders. Talk to everyone that is likely going to get affected by a significant decision. More buy-in at this stage reduces the chances of follow-on debates.&lt;/p>
&lt;p>And finally, &lt;em>surprise!&lt;/em>, Write It Down. Somewhere where everyone can see, read, comment, access. Be transparent, disseminate all your materials widely. Remember: there are going to be people who&amp;rsquo;re not even on the team yet, that will want to know &amp;ldquo;why did we do X&amp;rdquo; in the future. This document will explain things clearly, including the conditions, set of choices, and the decision making rationale.&lt;/p>
&lt;h1 id="make-the-decision" class="group relative">Make The Decision&lt;a href="#make-the-decision" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>This post isn&amp;rsquo;t about how to make the decision itself. There are scores of books written on this subject; my favorite is &lt;a href="https://heathbrothers.com/books/decisive/">Chip and Dan Heath&amp;rsquo;s Decisive&lt;/a>. This book lays out a useful 4 step framework to make sure you&amp;rsquo;re defending against your own biases, considering all the information, and giving your slow brain a chance to think. &lt;a href="https://www.lisanotes.com/make-a-better-decision/">This post&lt;/a> is a good summary, along with their WRAP cheat sheet.&lt;/p>
&lt;p>Regardless of the framework or process you use, this is the time to make the decision. You have all the inputs, the assumptions, the options. Make a call.&lt;/p>
&lt;h1 id="communicate-communicate-communicate" class="group relative">Communicate, Communicate, Communicate&lt;a href="#communicate-communicate-communicate" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>Communicate the decision: quickly, clearly, and as widely as possible. Repete thyself: people are unlikely to understand everything on the first try. For strategies on effective communication, see &amp;ldquo;Communication is The Job,&amp;rdquo; by Boz, an excellent communicator and head of AR/VR at Facebook, where he lists out eight strategies he uses.&lt;/p>
&lt;p>Did I mention that you should write it down?&lt;/p>
&lt;h1 id="from-durable-decisions-to-disagree-and-commit" class="group relative">From Durable Decisions to Disagree and Commit&lt;a href="#from-durable-decisions-to-disagree-and-commit" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h1>
&lt;p>The start of this article defined durable decisions. The side effect of making durable decisions is that if the inputs don&amp;rsquo;t change, the decision shouldn&amp;rsquo;t change either.&lt;/p>
&lt;p>Often, there will be a set of people that disagree with the decision. It is tempting to grumble about this, let it lie for a bit, and then re-open the debate and revisit the decision at a later point in time, with the hope of overturning it.&lt;/p>
&lt;blockquote>
&lt;p>If the decider lets a decision by revisited, without substantial new input, the whole system falls apart.&lt;/p>&lt;/blockquote>
&lt;p>Even worse, people stop believing that decisions are sticky and put less effort into the decision making process because they know those decisions aren’t final.&lt;/p>
&lt;p>Having durable decisions means that they cannot get overturned if nothing has changed. This principle forms the basis of &amp;ldquo;Disagree and Commit&amp;rdquo;: you may disagree with a decision but have to be fully committed to making the product/team/company successful by going along with the implications of the decision.&lt;/p>
&lt;blockquote>
&lt;p>The hardest decisions are typically the closest calls.&lt;/p>&lt;/blockquote>
&lt;p>Knowing that you&amp;rsquo;ll revisit the decision if the circumstances change will give you the confidence to get behind it. We make the most progress when we&amp;rsquo;re running together at full speed, not pulling against each other in doubt.&lt;/p>
&lt;p>{% include about.md %}&lt;/p></description></item><item><title>Situational Leadership</title><link>https://rushabhdoshi.com/posts/2019-11-14-situational-leadership/</link><pubDate>Thu, 14 Nov 2019 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2019-11-14-situational-leadership/</guid><description>&lt;h2 id="a-most-useful-management-framework" class="group relative">A Most Useful Management Framework&lt;a href="#a-most-useful-management-framework" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;em>Management books are full of different leadership and management frameworks and advice. A lot of these use contrived examples and war stories that are hard to replicate. Over the course of a decade of managing engineering teams, I have found Situational Leadership to be the one framework that applies to a broad range of scenarios, is practical enough to be easily understood and applicable, and tremendously valuable once you know it.&lt;/em>&lt;/p>
&lt;h2 id="life-at-fizzbuzzco" class="group relative">Life at FizzBuzz.co&lt;a href="#life-at-fizzbuzzco" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Amy and Bob are two engineers on the FizzBuzz team, building the next great feature your product needs. Amy thinks deeply about the underlying data structures and problems; Bob is a front-end ninja.&lt;/p>
&lt;p>However, managing them is rather challenging. Amy often feels like things are a bit too easy; her output is variable; you think she might be unmotivated. There is no shortage of work, but she hesitates to pick up new work before asking you.&lt;/p>
&lt;p>Bob, on the other hand, is &lt;strong>really&lt;/strong> into FizzBuzz. He was so into the product that he applied to join your company out of school and couldn&amp;rsquo;t wait to get started. Bob works hard but often gets stuck on things. Even worse, the quality of his code can be variable - he makes bad architectural calls, copy-pastes when he shouldn&amp;rsquo;t, and doesn&amp;rsquo;t test enough.&lt;/p>
&lt;p>What should you do?&lt;/p>
&lt;h2 id="employee-behaviors" class="group relative">Employee Behaviors&lt;a href="#employee-behaviors" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Amy and Bob are two different engineers; they need different approaches to being managed. What are some specific things you can do to make them both individually successful?&lt;/p>
&lt;blockquote>
&lt;p>The underlying core thesis behind Situational Leadership is the solution to this problem.&lt;/p>&lt;/blockquote>
&lt;p>We can segment the engineers along two axes - ability/competence and willingness/confidence/security. Depending on where they are in their journey, you can use different techniques to help them. This theory is not new. Ken Blanchard and Spencer Johnson wrote about this in &lt;a href="https://www.amazon.com/New-One-Minute-Manager/dp/0062367544/ref=pd_cp_14_1/140-2904626-2859943?_encoding=UTF8&amp;amp;pd_rd_i=0062367544&amp;amp;pd_rd_r=6bd24757-f72f-4639-88a5-27f8ffea4713&amp;amp;pd_rd_w=X43Q7&amp;amp;pd_rd_wg=rTrON&amp;amp;pf_rd_p=0e5324e1-c848-4872-bbd5-5be6baedf80e&amp;amp;pf_rd_r=Z83DMS0TY1FX4W95JGZD&amp;amp;psc=1&amp;amp;refRID=Z83DMS0TY1FX4W95JGZD">One Minute Manager&lt;/a>, first published in 1982.&lt;/p>
&lt;p>&lt;em>Note: My 2x2 is slightly different from what you&amp;rsquo;ll find by Google searching situational leadership. I&amp;rsquo;ll explain the traditional model below and why I prefer to start with the people view rather than the manager view.&lt;/em>&lt;/p>
&lt;p>In our case, Bob seems highly motivated and excited about his work. But he may not be able to do the work - he just joined FizzBuzz out of school, and this is his first job.&lt;/p>
&lt;p>Amy, on the other hand, is highly skilled. She can knock stuff out at will, and produce high-quality products. She may lack the confidence or the motivation to get her work done and be the independent rockstar you know she can be.&lt;/p>
&lt;p>In other words, the picture that emerges is something like this:&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/amy-and-bob.png" alt="Amy and Bob on development 2x2">&lt;/p>
&lt;p>Our goal is to get both Amy and Bob to be high performing engineers - who are highly competent, motivated, and self-directed.&lt;/p>
&lt;p>How do we get there?&lt;/p>
&lt;h2 id="manager-behaviors" class="group relative">Manager Behaviors&lt;a href="#manager-behaviors" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>How should our behavior change when working with Amy or Bob taking into account their different stages? We can think of leadership on two axes (surprise!): Supportive and Directive.&lt;/p>
&lt;p>Highly directive leadership is mostly &amp;ldquo;Do this, in this way, by this time.&amp;rdquo; There is no autonomy and little opportunity to be creative. The opposite is complete autonomy: the freedom to pick problems, priorities, solutions, and timelines.&lt;/p>
&lt;p>Highly supportive leadership is akin to being a great coach. You give feedback. You ask hard questions. They can come to you when they are stuck or need to problem solve. The opposite is being left entirely alone: engineers solve their problems, and the results are the feedback (did the product succeed?).&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/s1-s4.png" alt="situational-leadership-2x2">&lt;/p>
&lt;h2 id="bringing-it-all-together" class="group relative">Bringing It All Together&lt;a href="#bringing-it-all-together" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Now we a rubric for helping Amy and Bob.&lt;/p>
&lt;p>In Amy&amp;rsquo;s case, we need to Sell (S3 in situational leadership parlance) - give her the confidence to take on more and more challenging tasks, encourage her to seek out problems, to go after things she thinks are essential without having to check back with us. We still need to give her feedback to both help her grow and increase her confidence and security. But in no case should we micromanage her or give her task-specific direction.&lt;/p>
&lt;p>For Bob, we need to be more directive (S2 in situational leadership parlance). Some might interpret this as micro-management, and that&amp;rsquo;s okay. But Bob needs a tight feedback loop and smaller, lower complexity tasks. As Bob grows in his ability, he will graduate to more challenging projects while maintaining a high level of quality and delivery.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/amy-and-bob-overlay.png" alt="Amy and Bob with overlay">&lt;/p>
&lt;h2 id="where-does-it-all-go" class="group relative">Where does it all go?&lt;a href="#where-does-it-all-go" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The end goal is to get to Delegation holy land.&lt;/p>
&lt;p>Doesn&amp;rsquo;t that put the manager out of a job? Yes! That&amp;rsquo;s the whole point - build enough leverage and capacity on your team that you don&amp;rsquo;t actually have to do anything - and then grow the team or seek other challenges.&lt;/p>
&lt;p>In delegation mode, the manager is &lt;strong>both&lt;/strong> low directive and low supportive. They are not giving the employees direction or feedback. Does that sound bad? Every CEO, every leader of a sizeable organizational unit, every person who is out on their own lives in this mode. If the employee is so good that they need no management, they are ready to take over your job!&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/colbert-success.gif" alt="success">&lt;/p>
&lt;h2 id="errata" class="group relative">Errata&lt;a href="#errata" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="https://www.amazon.com/New-One-Minute-Manager/dp/0062367544/ref=pd_cp_14_1/140-2904626-2859943?_encoding=UTF8&amp;amp;pd_rd_i=0062367544&amp;amp;pd_rd_r=6bd24757-f72f-4639-88a5-27f8ffea4713&amp;amp;pd_rd_w=X43Q7&amp;amp;pd_rd_wg=rTrON&amp;amp;pf_rd_p=0e5324e1-c848-4872-bbd5-5be6baedf80e&amp;amp;pf_rd_r=Z83DMS0TY1FX4W95JGZD&amp;amp;psc=1&amp;amp;refRID=Z83DMS0TY1FX4W95JGZD">One Minute Manager&lt;/a> might have been plagiarized from Arthur Carlisle&amp;rsquo;s work in &lt;a href="http://www.alampi.com/MacGregor.pdf">MacGregor&lt;/a>.&lt;/p>
&lt;p>{% include about.md %}&lt;/p></description></item><item><title>Types Of 1-1s</title><link>https://rushabhdoshi.com/posts/2019-11-11-1-1-zoo/</link><pubDate>Mon, 11 Nov 2019 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2019-11-11-1-1-zoo/</guid><description>&lt;p>&lt;img src="https://rushabhdoshi.com/assets/badger.jpg" alt="badger splash">&lt;/p>
&lt;p>This is a post about the different types of 1-1 I have encountered in my life. It is almost as if 1-1s were animals in a zoo. Seasoned managers will quickly identify a member of each species and know how to deal with them. Newer managers might mistake a tiger for a house cat, and lose a limb in the process. As a manager with plenty of scars (yours truly made nearly every wtf mistake in the post below), I hope to help newer managers not get mauled when they misidentify a 1-1 animal.&lt;/p>
&lt;p>A quick aside: this post is not about the reason for 1-1s, or why you should have them regularly, or why you should have a 2-way agenda, or what you should discuss in them, how to give and receive feedback, etc. There are a plethora of articles on that, including a &lt;a href="https://getlighthouse.com">whole app&lt;/a> to help you run them better. Instead, this post is about real-world situations managers encounter, for which an app can&amp;rsquo;t tell you what to do. If you&amp;rsquo;re interested in learning more about the mechanics of 1-1s, drop me a line, and I&amp;rsquo;ll write it out.&lt;/p>
&lt;p>&lt;em>If you&amp;rsquo;ve been managing people for a while, these 1-1 types will appear familiar to you. I&amp;rsquo;d love to hear about ones that I missed to add to the zoo. Comments and feedback appreciated - &lt;a href="https://www.twitter.com/radoshi">@radoshi&lt;/a> on Twitter.&lt;/em>&lt;/p>
&lt;h2 id="-no-agenda-chill" class="group relative">🐶 No Agenda Chill&lt;a href="#-no-agenda-chill" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Engineer: &amp;ldquo;Hey, boss, what&amp;rsquo;s up? I thought we could just hang, I got nothing on the agenda.&amp;rdquo;&lt;/p>
&lt;p>I&amp;rsquo;m a type-A organizer. This message is my kryptonite. A meeting without an agenda? Say what? Why are we even meeting? Should we cancel?&lt;/p>
&lt;p>The obvious answer is no. But it often takes me a few deep breaths to get there.
Me: &amp;ldquo;Sure, let&amp;rsquo;s hang.&amp;rdquo;&lt;/p>
&lt;p>25 minutes of conversation into the &amp;ldquo;no-agenda&amp;rdquo; 1-1:
Me: &amp;ldquo;And how is X going?&amp;rdquo;
Engineer: &amp;ldquo;Oh, it&amp;rsquo;s a total disaster, and the team is really clowny, and I&amp;rsquo;ve been super stressed about it and not sleeping, but didn&amp;rsquo;t know how to bring it up, because I&amp;rsquo;m so stressed, what should I do?!?&amp;rdquo;&lt;/p>
&lt;p>Well, that escalated quickly. Let&amp;rsquo;s get into emotional support and problem-solving in the last 3 minutes.&lt;/p>
&lt;p>As a manager, the no-agenda-chill 1-1s are the second-worst (Quitting is the worst). You never know what to expect - it might be a waste of time, you might have to prompt the engineer to write an agenda next time, or you come out with some scars because you were in the dark and didn&amp;rsquo;t ask enough probing questions. 🤷🏽‍♀️&lt;/p>
&lt;h3 id="approaching-the-no-agenda-chill" class="group relative">Approaching the No Agenda Chill:&lt;a href="#approaching-the-no-agenda-chill" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Go really broad on topics, ranging from how they are doing, personally and professionally, and probe for areas of concern.
When you find a problem, follow it up with the immediate help solving the problem.
Think of ways to avoid surprise next time.&lt;/p>
&lt;h2 id="everything-is-on-fire" class="group relative">🧯Everything Is On Fire&lt;a href="#everything-is-on-fire" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Engineer via email or slack, sometime before 1-1: Hey, I&amp;rsquo;m really concerned about Thing. Can we spend 5 mins in our 1-1 talking about Thing?&lt;/p>
&lt;p>5 minutes. Yeah, right. This Thing is going to take up the rest of your 1-1. If you got anything else, get it done before you talk about the Thing.&lt;/p>
&lt;p>These 1-1s are amongst my favorites. As a manager, I don&amp;rsquo;t have to dig around for where the fire is. Staring at a blazing inferno, being asked to point the firehose. My help! Yay, I feel useful.&lt;/p>
&lt;p>The natural response, of course, is to jump into problem-solving mode immediately. I am an engineer (well, I was an engineer, but self-delusion is a powerful thing). This is what I do best. I solve problems. Let&amp;rsquo;s go.&lt;/p>
&lt;p>The fly in the ointment is that, as a manager, you don&amp;rsquo;t really know what the problem is. One thing it most definitely isn&amp;rsquo;t: the thing your report tells you it is. Not because they aren&amp;rsquo;t smart; au contraire, they are better than you at their job. If they knew what the problem was, they would have likely solved it by now. By immediately jumping into solution mode, you&amp;rsquo;re probably just pointing out the obvious.&lt;/p>
&lt;h3 id="approaching-the-everything-is-on-fire" class="group relative">Approaching the Everything Is On Fire:&lt;a href="#approaching-the-everything-is-on-fire" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Do a lot of active listening. (If you are not familiar with active listening, I strongly recommend watching a few YouTube videos on the topic. It will change your 1-1s forever.)
Ask clarifying questions. Try and understand the problem in multiple different ways.
Do not offer solutions in the 1-1. Think about it offline and write some suggestions within 24 hours.
Often, the people talking through the problem, with the aid of your questions, will solve the problem for themselves. This is an excellent outcome. Use the credits to unlock the next level in the Manager RPG.&lt;/p>
&lt;h2 id="-that-team-or-person-is-terrible" class="group relative">🦨 That Team (or Person) is Terrible&lt;a href="#-that-team-or-person-is-terrible" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>This 1-1 is a variant of Everything Is On Fire, but we are dunking on a person or team instead.&lt;/p>
&lt;p>Engineer: &amp;ldquo;This person is an idiot. They did everything wrong, and now I have this whole mess to clean up. Why can&amp;rsquo;t we just fire them? I don&amp;rsquo;t want to work with them again because they&amp;rsquo;re just so hard to deal with.&amp;rdquo;
Or: &amp;ldquo;That team has no clue what they are doing, but they won&amp;rsquo;t let me get my work done. They are blocking my commits, won&amp;rsquo;t answer my questions. Moreover, their code or API or whatever is just a complete mess. Why are they even around?&amp;rdquo;&lt;/p>
&lt;p>Oof.&lt;/p>
&lt;p>This is a dangerous 1-1 and must be approached with care. On the one hand, you must walk the engineer off their rage-fueled, emotionally flooded edge. On the other hand, you must help them put things in context and approach problems constructively. Additionally, there might be an element of truth to the engineer&amp;rsquo;s rage, and you must investigate things further.&lt;/p>
&lt;p>There are two large danger signs associated with this 1-1.
Engineer says something overtly racist, sexist, against company values, or deeply offensive, in the heat of the moment. Depending on the severity of the infraction, this can result in a stern talking to and a reminder that certain types of speech are not acceptable, or in the extreme, a discussion with HR that can lead to censure or dismissal.
It can also be really tempting to join in on the gossip and slam the other team or person. As a manager, you&amp;rsquo;ve just made your position infinitely worse by doing this - you&amp;rsquo;ve sent a message that this sort of behavior is okay, you&amp;rsquo;ve given the engineer the impression that you agree with it (and they&amp;rsquo;re definitely telling their friends), and put yourself in a vulnerable position.&lt;/p>
&lt;h3 id="approaching-that-team-is-terrible" class="group relative">Approaching That Team Is Terrible:&lt;a href="#approaching-that-team-is-terrible" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>De-escalate as quickly as possible. Help Engineer to calm down. Focus on facts.
Re-focus the conversation on people having good intentions, but not being capable (everyone is learning/growing), or circumstances conspiring a certain way etc. Dig into the exact complaint.
Investigate the engineer&amp;rsquo;s claims. Follow up with others as appropriate. Follow up with Engineer to close the loop.
If appropriate, get HR involved, or escalate to higher leadership.&lt;/p>
&lt;h2 id="-its-urgent" class="group relative">🐰 It&amp;rsquo;s Urgent&lt;a href="#-its-urgent" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Engineer: &amp;ldquo;Hey, can I chat with you urgently?&amp;rdquo;&lt;/p>
&lt;p>Uh oh. This one is important but seldom good.&lt;/p>
&lt;p>If we are lucky, this urgency is about a time-sensitive decision that needs to be made. However, most decision problems get sent over slack or email, and there is usually no need to be coy about the agenda.&lt;/p>
&lt;p>This is the 1-1 where the dire stuff comes out. Someone got sexually harassed, someone found something deeply wrong that violates company guidelines or is straight out illegal, anything else that is just Serious.&lt;/p>
&lt;h3 id="approaching-its-urgent" class="group relative">Approaching It&amp;rsquo;s Urgent:&lt;a href="#approaching-its-urgent" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Make time for this asap. If you need to get out of a meeting, do so.
If the report is serious, escalate to HR or senior leadership as appropriate. If in doubt, check with HR, they are here for precisely this reason.
Follow up with engineer (there are some circumstances where HR or legal would require you not to, but those aside, you should follow up to make sure the issue was addressed.)&lt;/p>
&lt;h2 id="feedback-hour" class="group relative">🦘Feedback Hour&lt;a href="#feedback-hour" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>There are two flavors of these - the conversation after the formal performance review, and the ad-hoc feedback conversation. The former is more mechanical: prep beforehand, send the recipient a writeup that they can read and digest beforehand, then spend time going over it in person.&lt;/p>
&lt;p>The ad-hoc feedback conversation is more interesting.&lt;/p>
&lt;p>&amp;ldquo;Do you have any feedback for me?&amp;rdquo;&lt;/p>
&lt;p>🤔&lt;/p>
&lt;h3 id="approaching-feedback-hour" class="group relative">Approaching Feedback Hour:&lt;a href="#approaching-feedback-hour" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Rookie version: &amp;ldquo;Sure. Here are 3 things you could be doing better.&amp;rdquo;&lt;/p>
&lt;p>Battle scar version: &amp;ldquo;How do you think you&amp;rsquo;re doing with area X, Y, Z? What things are going well, and what aren&amp;rsquo;t?&amp;rdquo; You have a list of things they need to be working on (right? RIGHT?), and this is your opportunity to check their self-perception on their growth. &amp;ldquo;I agree with X and Y, think you could be doing more on Z, here are two specific ways I would have approached it if I were in your shoes.&amp;rdquo;. ✅&lt;/p>
&lt;p>Remember: you don&amp;rsquo;t have to diagnose, create, and deliver feedback all on the spot. It is perfectly fine to follow up over email or slack or another 1-1 in 24h, as long as you do actually follow up.&lt;/p>
&lt;h2 id="-promote-me" class="group relative">🦡 Promote Me&lt;a href="#-promote-me" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Engineer: &amp;ldquo;What do I need to do to get promoted?&amp;rdquo; or even better: &amp;ldquo;Reviews are coming up. Are you going to promote me?&amp;rdquo;&lt;/p>
&lt;p>Side note: I love working with people that are bullish on themselves and straight up ask for a promotion. That being said, remember that there are a lot more people who are shy, who have cultural issues against asking for a promotion, who suffer from imposter syndrome, or a bad case of Dunning-Kruger. Care about these people, possibly more than than the ones that ask you to get promoted.&lt;/p>
&lt;p>Back to regularly scheduled programming.&lt;/p>
&lt;p>The decision tree here is straightforward.
You believe your report is ready for a promotion. You are genuinely going to fight for your report in whatever promotion process your company has (unless you&amp;rsquo;re Google, in which case managers have little say 🤷🏽‍♂️.)
You don&amp;rsquo;t think they are ready for a promotion and are not willing to put them up or fight for them.&lt;/p>
&lt;p>In either case:
Inviolable Rule: Be Honest.
There is no better way to break long term trust than to make things up.&lt;/p>
&lt;h3 id="approaching-promote-me" class="group relative">Approaching Promote Me:&lt;a href="#approaching-promote-me" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>If they are ready for promotion, go into expectations management in case the promotion does not happen: &amp;ldquo;I think you&amp;rsquo;re close and are crushing it on many fronts. Here are two areas that are still questionable. I&amp;rsquo;m going to get feedback from other senior people at the company (or whatever the promotion process is) and make a good call.&amp;rdquo;.&lt;/p>
&lt;p>If they aren&amp;rsquo;t ready, let them know: &amp;ldquo;I&amp;rsquo;m not sure you&amp;rsquo;re ready yet. We believe in trailing promotions, and you need to be performing at the next level for at least N months. You need to demonstrate more of X and Y for this to be a slam dunk promo. However, I&amp;rsquo;m going to bring up your case and get feedback to make sure I am calibrated.&amp;rdquo;&lt;/p>
&lt;h2 id="-i-quit" class="group relative">☠️ I Quit&lt;a href="#-i-quit" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>My worst 1-1. And they almost always start innocuously.
Engineer: &amp;ldquo;How&amp;rsquo;s it going, how&amp;rsquo;s the family, isn&amp;rsquo;t the weather great?&amp;rdquo;.
It&amp;rsquo;s like some human desire to push away talking about difficult things until the last possible moment, even in the very meeting that you&amp;rsquo;re supposed to talk about it. Once the engineer feels the manager is warm enough, they drop the bomb:
&amp;ldquo;So, I was thinking about doing something else in the future.&amp;rdquo;&lt;/p>
&lt;p>Me, blinking furiously, half my brain telling the other half to keep calm because they&amp;rsquo;re not quitting: &amp;ldquo;Okay, what were you thinking of?&amp;rdquo;&lt;/p>
&lt;p>Engineer: &amp;ldquo;Well, my friend started this company, and I have an offer to go be their CTO. I&amp;rsquo;m thinking of taking it.&amp;rdquo;&lt;/p>
&lt;p>Me: &amp;ldquo;Ffffffffff&amp;rdquo;&lt;/p>
&lt;h3 id="approaching-the-i-quit" class="group relative">Approaching the I Quit:&lt;a href="#approaching-the-i-quit" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>After a moment of panic, take 5 deep breaths, and let&amp;rsquo;s unpack this.&lt;/p>
&lt;ol>
&lt;li>🤦🏽‍♂️Manager person WTF! How did you fail to detect that your star engineer is bored, tired, or seeking new challenges? In some cases, there is nothing you could have done - a chance meeting leads to something bigger, and suddenly, they have an offer. But in most cases, you could have seen it coming and knew in the back of your mind that you should do something about keeping them motivated.&lt;/li>
&lt;li>💰What is the right thing for the engineer? Sometimes, the best opportunity does indeed fall into their lap, and the best thing you can do is encourage them to take it. People is a long game. If you&amp;rsquo;re consistently doing the right thing for your people, you&amp;rsquo;ll work with them again.&lt;/li>
&lt;li>🙅🏽‍♂️Some times, the deal they are offered is genuinely not good. CTO might sound great, but the company is going nowhere and has been around for a year. Or Founding Engineer looks excellent; they are getting screwed on equity. In cases like this, I&amp;rsquo;ve helped my reports actually model these things out and understand how ownership, vesting, and dilution work. Incredibly smart engineers sometimes have a hard time building a spreadsheet, so I create one for them (which they then take and make 100x better and add many complicated factors).&lt;/li>
&lt;li>❤️More than sensible advice and help (in the form of spreadsheets), they are also looking for emotional support in two dimensions: 1) knowing that you and other leaders at your company care about them and 2) they have a strong connection to their team and the mission here. Reinforcing these emotional points, along with the rational artifacts 👆🏽, leads to a 50% chance of saving the engineer from leaving your team.&lt;/li>
&lt;/ol>
&lt;p>{% include about.md %}&lt;/p></description></item><item><title>Hiring Engineering Leaders</title><link>https://rushabhdoshi.com/posts/2019-11-4-hiring-engineering-leaders/</link><pubDate>Mon, 04 Nov 2019 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2019-11-4-hiring-engineering-leaders/</guid><description>&lt;p>&lt;img src="https://rushabhdoshi.com/assets/mountain.jpg" alt="mountain splash">&lt;/p>
&lt;p>&lt;em>This post is about the interview process for an engineering leader. Hiring involves a lot more than the interview part - everything from reviewing resumes, sourcing great candidates, getting them to come onsite, the interview itself, evaluation, offer, and close. In this post, I focus primarily on mechanics, propose a concrete interview process, along with sample questions for the non-technical parts, and propose a template that companies can use to build a custom process suited to their needs. This post is based on my long experience managing engineering teams at Google and Facebook and interviewing numerous amazing managers for various roles. This entire post is available as a &lt;a href="https://coda.io/d/Hiring-a-VP-Eng_dLSKec3TcnQ/_suLLm">coda doc&lt;/a> that you can duplicate and use.&lt;/em>&lt;/p>
&lt;p>Your startup is going great. You have a cool product with hundreds of thousands of users, a strong engineering team, and amazing leaders of design, sales, and other functions. You want to scale your engineering team and are looking to hire your first engineering VP. You chatted over coffee with a few candidates and have convinced them to go through a formal loop. What are the types of interviews in your loop? What are the goals of each interview? Are there some questions that are better than others? I propose to answer these questions, focusing on the non-technical parts of the interview. First, we need to align on what the role is about, on diversity, and on having a great candidate experience.&lt;/p>
&lt;h2 id="the-basics-what-does-a-vp-of-engineering-do" class="group relative">The Basics: What does a VP of Engineering do?&lt;a href="#the-basics-what-does-a-vp-of-engineering-do" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Martin Casado&amp;rsquo;s &lt;a href="https://a16z.com/2017/05/26/hiring-vp-engineering-why-what/">excellent post&lt;/a> is the best summary of why you need a VP of Engineering and the value they should provide. A great engineering leader should be able to function across the following axes:&lt;/p>
&lt;h3 id="business--product-impact" class="group relative">Business / Product impact&lt;a href="#business--product-impact" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Ensuring engineering execution is one of their most important jobs&lt;/strong>. “Execution” refers to repeated, on-time, high-quality delivery of things the engineering team is tasked to build. The leader should be able to balance offense (e.g., growing the product, building features, improving performance) with defense (e.g., reducing the bug load, rewriting systems to pay off bug debt, improving efficiency, and reducing cost).&lt;/li>
&lt;li>They should &lt;strong>provide critical input into the product planning and development process&lt;/strong>. VPEs are a thought partner for other executive leaders in the company - the CEO, CPO, Head of Sales. They should have an opinion on relative prioritization and technology investments the company makes.&lt;/li>
&lt;li>&lt;strong>Communication is a significant part of a VPE&amp;rsquo;s job&lt;/strong>. They must be excellent at communicating upward, downward, and sideways. They need to manage the CEO, so the engineering team doesn’t get thrashed, they need to communicate to the engineering team, to keep them in the loop and aware of everything going on. They need to be able to talk to clients, to the sales team, to the customer support team. They must be a highly versatile communicator, able to juggle a large variety of audiences and contexts.&lt;/li>
&lt;/ol>
&lt;h3 id="team-impact" class="group relative">Team impact.&lt;a href="#team-impact" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>They are &lt;strong>responsible for the continued growth and development of the engineering team&lt;/strong>. Senior engineers need hard challenges in the form of ambiguous but critical problems and leadership opportunities. Junior engineers need mentorship and challenging work appropriate to their level. The leader should be able to balance a team with the appropriate seniority mix so that everyone has opportunities to learn and grow. They are responsible for delivering feedback as well as for letting people go when things are not working out.&lt;/li>
&lt;li>&lt;strong>Hire, hire, hire&lt;/strong>. If the engineering team is supposed to double or triple over the next 12-24 months, they need to be spending a substantial chunk of their time sourcing, interviewing and closing great talent. They should be able to figure out the org structure 12 and 24 months into the future and then hire toward that. They should be able to build up their bench by grooming or hiring the next set of leaders that can take their place.&lt;/li>
&lt;li>They must be able to &lt;strong>lead the team when times are good and bad&lt;/strong>. Keeping morale up when things are rough, keeping the team focused on the highest priority deliverables, helping people feel good about doing some of the most challenging, hard, and impactful work they have done - this all falls upon the VPE.&lt;/li>
&lt;/ol>
&lt;h2 id="an-important-note-about-bias-and-diversity" class="group relative">An important note about Bias and Diversity&lt;a href="#an-important-note-about-bias-and-diversity" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>If you haven’t read &lt;a href="https://twitter.com/math_rachel">Rachel Thomas&lt;/a>’s excellent &lt;a href="https://medium.com/tech-diversity-files/donations-and-women-in-tech-panels-are-not-a-diversity-strategy-do-better-c3c51022a916">3&lt;/a> &lt;a href="https://medium.com/tech-diversity-files/the-real-reason-women-quit-tech-and-how-to-address-it-6dfb606929fd">part&lt;/a> &lt;a href="https://medium.com/@racheltho/how-to-make-tech-interviews-a-little-less-awful-c29f35431987">series&lt;/a> on the diversity problem in tech and practical ideas on what to do about it, you really should. Diversity is a big topic for our industry and your company. The rest of this article can wait, please read the series.&lt;/p>
&lt;p>The design of the interview process plays a crucial role in increasing the diversity of your company. Essential things to keep in mind:&lt;/p>
&lt;ol>
&lt;li>You are biased. I am biased. Everyone is. If you believe otherwise, take the &lt;a href="https://implicit.harvard.edu/implicit/user/agg/blindspot/indexrk.htm">Race IAT&lt;/a>. Then take the &lt;a href="https://managingbias.fb.com/">Managing Bias&lt;/a> class to get a little better.&lt;/li>
&lt;li>Without a corrective process, we tend to hire people like ourselves, we hire for confidence, not competence, and we are likely to tilt the balance in favor of candidates with pedigree.&lt;/li>
&lt;li>Sponsoring and attending Grace Hopper does not solve your diversity problem. Treating women and under-represented minorities at your company well, and fixing your hiring and promotion processes can build diverse teams.&lt;/li>
&lt;/ol>
&lt;p>I recommend a Diverse Slate Approach for leadership hires: implement &lt;a href="https://en.wikipedia.org/wiki/Rooney_Rule">the Rooney Rule&lt;/a> for your company. In short, for any leadership position, you must consider at least one woman and one underrepresented minority candidate.&lt;/p>
&lt;p>DSA is hard work. In a difficult hiring environment, this can be especially challenging. Adopting this is a first step, but an important one. It signals that you are willing to do what it takes to build a diverse workforce and are committed to increasing workplace diversity, even with some short term pain.&lt;/p>
&lt;h2 id="the-basics-the-candidate-experience" class="group relative">The Basics: The Candidate Experience&lt;a href="#the-basics-the-candidate-experience" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Treat every candidate with respect and gratitude for their time. They could be a current or future client. Even if they are not the right fit, you want them to walk away with a great interview experience. I have personally been on the receiving end of poor interview experiences (hostile interviewers, no food or drink, no time to stretch or reset my brain between interviews), and it was not fun. Make sure candidates stay hydrated (they are going to be talking a ton), are not hungry, and are offered frequent breaks to stretch or use the facilities. One interviewer even offered a walking interview (it was awesome!).&lt;/p>
&lt;h2 id="process-overview" class="group relative">Process Overview&lt;a href="#process-overview" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The process comprises of one or two screens to make sure that the candidates pass the sniff test and are sufficiently excited about your company to bring them in for a full loop, followed by a day or two of interviewing, following by sells. Reference checks are essential - I recommend asking candidates for references as soon as you have some reasonable signal and interest so that you can get moving on talking to their references as quickly as possible. I prefer asking candidates for their references and using those rather than doing back-channel references, a common valley practice that is rife with challenges.&lt;/p>
&lt;ol>
&lt;li>Screen&lt;/li>
&lt;li>Onsite 2. Technical 1. Code comprehension. Lightweight coding. 2. Software design. 3. Domain-specific deep dive. Optional. 4. Management 5. People Management. 6. Strategy, Vision, and Execution. 7. XFN Collaboration and Communication. 8. Values&lt;/li>
&lt;li>References&lt;/li>
&lt;li>Sell&lt;/li>
&lt;/ol>
&lt;h2 id="screen" class="group relative">Screen&lt;a href="#screen" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Key questions include digging into experience managing teams at various stages of growth, familiarity with your domain, with your company’s tech stack. Don’t forget to spend a significant amount of time selling your company and your vision and getting them excited about coming in. Keep an open mind at this stage and don&amp;rsquo;t weed out candidates too early. If a candidate has a greater than 25% chance of passing your onsite interview, bring them in for a full loop.&lt;/p>
&lt;h2 id="technical-interviews" class="group relative">Technical Interviews&lt;a href="#technical-interviews" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The chances are that your company already has a process for technical interviews. I recommend tweaking the senior engineer interview process and using that for the VPE. If you need some help setting up a technical loop, please drop me a line (Twitter &lt;a href="https://www.twitter.com/radoshi">@radoshi&lt;/a>.&lt;/p>
&lt;p>For leadership candidates, I recommend focusing on:&lt;/p>
&lt;ol>
&lt;li>Code comprehension over code writing. They need to read and understand the code that the team is writing. They are unlikely to be coding the Next Great Feature.&lt;/li>
&lt;li>Good software design instincts over specific technologies. They should understand why you need a cache but needn’t go into the finer details about Memcached vs. Redis.&lt;/li>
&lt;li>Domain-specific deep dive. Product, ML, Infrastructure, DevOps, AdTech &amp;ndash; each leader grew up in some background. You’re looking for depth of understanding in their field.&lt;/li>
&lt;/ol>
&lt;h2 id="leadership-interviews" class="group relative">Leadership Interviews&lt;a href="#leadership-interviews" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>I recommend 3 interviews to understand the candidate’s leadership style.&lt;/p>
&lt;ol>
&lt;li>People management.&lt;/li>
&lt;li>Strategy, Vision, and Execution.&lt;/li>
&lt;li>XFN Collaboration and Communication.&lt;/li>
&lt;/ol>
&lt;p>I found open-ended questions, such as “what is your management philosophy,” to be less useful in distinguishing great answers from mediocre ones. An Situation-Complication-Resolution style, as applied to interviews, is an effective alternative. Setting up specific examples, or asking for specific examples, gives you much firmer ground to dive into details. Continuing with the preceding example, to find out where they are on the directive / supportive spectrum, we could ask the following: “We have an engineer Alex, he’s been here 6 months. We hired him straight from university.” (situation) “He works hard, but writes buggy code and people have to clean up his mess frequently.” (complication). “What would you do?” (resolution). This setup gives you ample fodder to deep dive into how the candidate approaches these sorts of problems and where they lean philosophically.&lt;/p>
&lt;h2 id="people-management-interview" class="group relative">People Management Interview&lt;a href="#people-management-interview" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The goal of this interview is to determine if the candidate is an exceptional people manager. Can the candidate provide the team with career guidance, help them work through obstacles, and push them forward? Does the candidate have sufficient experience dealing with problems, or are they going to be learning it on the fly? Is the candidate going to be able to hire and scale the team? Are they going to be able to scale themselves as the company grows?&lt;/p>
&lt;h2 id="sample-questions" class="group relative">Sample questions&lt;a href="#sample-questions" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;h3 id="basic-data" class="group relative">Basic data&lt;a href="#basic-data" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>Management history.&lt;/li>
&lt;li>Historical and current team sizes.&lt;/li>
&lt;li>Growth curves - did they build the teams or inherit them?&lt;/li>
&lt;/ol>
&lt;h3 id="management-mechanics" class="group relative">Management mechanics&lt;a href="#management-mechanics" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>How do they keep in touch with their team?
1-1 - what is the purpose, structure, and cadence?&lt;/p>
&lt;h3 id="engineer-growth" class="group relative">Engineer growth&lt;a href="#engineer-growth" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>How do they assess an engineer&amp;rsquo;s strengths and areas of growth?&lt;/li>
&lt;li>What do they focus on, and what is the process behind making that decision?&lt;/li>
&lt;li>How do they grow junior engineers? Senior engineers? TLs?&lt;/li>
&lt;li>How do you give feedback? Give an example where you had to deliver hard feedback to someone?&lt;/li>
&lt;li>Give an example of someone that wasn&amp;rsquo;t doing well and what you did to help them improve.&lt;/li>
&lt;li>Have you ever had to let anyone go? What was the thinking and process behind it?&lt;/li>
&lt;/ol>
&lt;h3 id="manager-growth" class="group relative">Manager growth&lt;a href="#manager-growth" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>When does a team need a manager?&lt;/li>
&lt;li>When is someone ready to be a manager? How do they assess this readiness?&lt;/li>
&lt;li>How is managing a manager different from managing ICs?&lt;/li>
&lt;li>How is managing Directors / VPs different from managing managers?&lt;/li>
&lt;li>How do you know when a manager isn’t doing well? How do you debug? How do you help?&lt;/li>
&lt;/ol>
&lt;h3 id="organizational-leadership" class="group relative">Organizational leadership&lt;a href="#organizational-leadership" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>When do they go from an amalgam of engineers to a formal team?&lt;/li>
&lt;li>What is their ideal team size?&lt;/li>
&lt;li>How do they think of organizational structure? Is it necessary? At what stage? When does one re-organize the team?&lt;/li>
&lt;li>What are the mechanics of a reorg? Have they executed a non-trivial one?&lt;/li>
&lt;/ol>
&lt;h4 id="team-culture" class="group relative">Team culture&lt;a href="#team-culture" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;ol>
&lt;li>How do they build engineering culture?&lt;/li>
&lt;li>What is their weekly eng cadence?&lt;/li>
&lt;li>Do they do architecture reviews (why or why not)? Do they do regular engineering all hands (why or why not?)&lt;/li>
&lt;li>How do people in the team learn from one another and grow?&lt;/li>
&lt;/ol>
&lt;h2 id="strategy-vision-and-execution-interview" class="group relative">Strategy, Vision and Execution Interview&lt;a href="#strategy-vision-and-execution-interview" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The goal of this interview is to determine if a candidate can set the engineering vision, determine a strategy, and execute on it. They need to understand company strategy and translate that into an engineering strategy. They need to be able to decompose complex, ambiguous directions into concrete projects. Every candidate ha a set of tools and processes they use to keep the trains running, to stay on top of things, and communicate upward, downward, and laterally. At a leadership level, communication is often the primary job, and you want the candidate to be exceptional in this regard. All good projects hit bumps at some point. What happens when things go wrong? How do they detect what’s wrong, debug it, and fix it? The ideal candidate is one that makes bold bets, has seen some of them fail, learned, and did something better next time.&lt;/p>
&lt;h2 id="sample-questions-1" class="group relative">Sample Questions&lt;a href="#sample-questions-1" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;h3 id="history" class="group relative">History&lt;a href="#history" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>Describe a complex project that you ran, how much time did it take, how many people, was it successful, what went well, and what did you learn? (This is intended to be a warm-up, don&amp;rsquo;t spend the entire interview diving into this).&lt;/li>
&lt;/ol>
&lt;h3 id="inception" class="group relative">Inception&lt;a href="#inception" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>Construct an ambiguous scenario where a new project is needed. Pretend you&amp;rsquo;re the CEO and let the candidate ask you questions. Can the candidate quickly get into the heart of the problem you&amp;rsquo;re asking them to solve (comprehension)?&lt;/li>
&lt;li>Can they come up with a sufficient first approximation of a solution? Can they decompose the problem into different tracks?&lt;/li>
&lt;li>How would they set up the engineering team to tackle such a project? How do you manage ongoing maintenance and bugs while tackling projects?&lt;/li>
&lt;li>How do you deal with morale impact of thrashing the team?&lt;/li>
&lt;/ol>
&lt;h3 id="goals" class="group relative">Goals&lt;a href="#goals" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>Goals discussion is significant enough to be pulled out into its section.&lt;/li>
&lt;li>Does the candidate ask about a project&amp;rsquo;s goals?&lt;/li>
&lt;li>Can they create reasonable metrics that track success? The discussion can get pretty nuanced but is incredibly important. Without clear goals and metrics, execution becomes an order of magnitude harder.&lt;/li>
&lt;li>Pick a project they did that was successful. Dive into the project&amp;rsquo;s goals, measurements of success, relationships to company success, decomposition into smaller projects, and execution of the entire thing.&lt;/li>
&lt;/ol>
&lt;h3 id="project-lifetime" class="group relative">Project lifetime&lt;a href="#project-lifetime" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>How do they track progress?&lt;/li>
&lt;li>How do they communicate progress?&lt;/li>
&lt;li>How do they know if things are going well or not going so well?&lt;/li>
&lt;li>If they aren&amp;rsquo;t going well, what sort of corrective actions would they take?&lt;/li>
&lt;li>What would they do if they incorrectly estimated time, complexity, or resources?&lt;/li>
&lt;/ol>
&lt;h3 id="conclusion" class="group relative">Conclusion&lt;a href="#conclusion" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>How do they transition a team from one project to another?&lt;/li>
&lt;li>What do they do if an idea fails?&lt;/li>
&lt;li>What do they do if the project didn&amp;rsquo;t complete on time and requires further investment?&lt;/li>
&lt;/ol>
&lt;h2 id="xfn-collaboration-and-communication-interview" class="group relative">XFN Collaboration and Communication Interview&lt;a href="#xfn-collaboration-and-communication-interview" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Thanks to &lt;a href="https://twitter.com/h_ayesconnor">Connor Hayes&lt;/a> for providing this section.&lt;/p>
&lt;p>In this interview, we are trying to assess whether the candidate can communicate in a clear, concise, and structured way. Do they have the right attitude toward working with non-engineering functions? How do they maximize their work through other people? We’re also looking for grit and scrappiness - can they push through tough situations? Can they unblock themselves and get stuff done? Finally, we want someone that is going to be a thought partner for the company’s senior leadership: do they grasp abstract concepts quickly? Will they contribute to strategy and decision making?&lt;/p>
&lt;h2 id="sample-questions-2" class="group relative">Sample Questions&lt;a href="#sample-questions-2" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;h3 id="communication" class="group relative">Communication&lt;a href="#communication" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>This is observed through the structure of answers to the other topical questions.&lt;/li>
&lt;/ol>
&lt;h3 id="collaboration" class="group relative">Collaboration&lt;a href="#collaboration" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>What is the ideal working model for collaboration amongst various functions like Product, Data Science, and Design?&lt;/li>
&lt;li>Describe a lousy collaboration situation. How did you handle that? What did you do?&lt;/li>
&lt;li>Let’s say you were working with a PM who made a decision with which you didn’t agree. What would you do?&lt;/li>
&lt;li>What if the situation didn’t change, and you still disagreed? How would you escalate?&lt;/li>
&lt;li>What do you do when a product person gives you an unrealistic deadline for a project?&lt;/li>
&lt;/ol>
&lt;h3 id="grit-and-scrappiness" class="group relative">Grit and scrappiness&lt;a href="#grit-and-scrappiness" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>How did you get to where you are today? Tell me about the times in your life where you had to work the hardest and overcome obstacles.&lt;/li>
&lt;li>What is the most unfair thing that has happened to you in your career? What did you do about it?&lt;/li>
&lt;li>Tell me about a time when you were blocked on a product decision and weren’t getting help from Product. How did you push through?&lt;/li>
&lt;li>What’s the most challenging project you’ve worked on, and how did it go?&lt;/li>
&lt;/ol>
&lt;h3 id="thought-partnership" class="group relative">Thought partnership&lt;a href="#thought-partnership" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>Describe a strategic problem that the company is facing. Ask for their input and see how they reason through things.&lt;/li>
&lt;li>Let’s pretend we are 3 years into the future, and our company has gone out of business. What do you think are some possible causes?&lt;/li>
&lt;li>How could we account for these risks with what we build today?&lt;/li>
&lt;/ol>
&lt;h2 id="values" class="group relative">Values&lt;a href="#values" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Your company likely has a values interview, done by senior leaders, to assess whether the candidate has a similar set of values as the company. This interview typically probes into a candidates work ethic, their motivations, their excitement about the company, about the problem it is solving, and whether they would help take the company to greater heights.&lt;/p>
&lt;h2 id="references" class="group relative">References&lt;a href="#references" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Reference checking is an incredibly important part of the interview process. I recommend letting recruiting solicit references from the candidate, but having the hiring manager (CEO) do the reference calls.&lt;/p>
&lt;p>The critical thing during reference calls is to elicit details about the candidates working style, strengths, and areas of development.&lt;/p>
&lt;h2 id="conclusion-1" class="group relative">Conclusion&lt;a href="#conclusion-1" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The goal of this post is to provide a VPE interview process that you can duplicate, customize, and implement to hire the best engineering leader for your company or organization. This post is also available as a &lt;a href="https://coda.io/d/Hiring-a-VP-Eng_dLSKec3TcnQ/_suLLm">structured coda doc&lt;/a>.&lt;/p>
&lt;p>I would &lt;em>love&lt;/em> to hear from you if you use this process, or if you have suggestions on making it better. I&amp;rsquo;d love to hear about things that I have missed, but have proven incredibly useful for you. Leave a comment or DM @radoshi on Twitter.&lt;/p>
&lt;p>{% include about.md %}&lt;/p></description></item><item><title>Software Quality, Bugs, and SLAs</title><link>https://rushabhdoshi.com/posts/2019-10-18-software-quality-bugs-and-slas/</link><pubDate>Fri, 18 Oct 2019 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2019-10-18-software-quality-bugs-and-slas/</guid><description>&lt;p>&lt;em>This post is also available as a &lt;a href="https://coda.io/@rushabhdoshi/software-quality-bugs-and-slas">live Coda doc&lt;/a>. You can copy it, connect it to your JIRA, and customize it to suit your needs.&lt;/em>&lt;/p>
&lt;p>&lt;em>Your app feels buggy. There are lots of small quality issues, and it crashes now and then. The engineering team buried in bugs: they don&amp;rsquo;t know which ones to address first. What do you do? How do you get the product feeling great, the engineering team feeling productive and proud of delivering a high-quality product, pumping out features while keeping the bugs down?&lt;/em>&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/cantunsee.png" alt="image from cantunsee">
&lt;em>Image from &lt;a href="http://cantunsee.space/">cantunsee&lt;/a> &amp;ndash; think you&amp;rsquo;ve got a good design eye? Take the quiz.&lt;/em>&lt;/p>
&lt;p>Software development is an inexact science. We write code and build software products full of defects. If we are lucky, we are aware of the defects and can catch them before they go to our customers. Engineering teams often feel they are in an epic struggle to build the perfect product while dealing with ever-changing requirements and product specs, framework changes, and evolving infrastructure.&lt;/p>
&lt;p>An engineering team’s objective is to make forward progress on building their product while keeping their product quality “good enough.” The definition of “good enough” is defined by company values and the context surrounding the product. A hardware device with a slow update cycle has a significantly higher bar than an iPhone app that can be updated quickly. Different companies have different quality bars as well - Instagram pays a significant amount of attention to small visual design problems, resulting in a product that feels extremely polished and well crafted. This variability in the definition of a quality bar, from company to company or product to product can be overwhelming. People give up, resulting in the complete lack of a defined bar, or a quality bar where every bug is a blocker.&lt;/p>
&lt;p>A typical scenario goes something like this:&lt;/p>
&lt;ul>
&lt;li>Everyone’s grumbling about software quality.&lt;/li>
&lt;li>Designers don’t feel like the product is polished enough - after all, their work is front and center. “Low quality” often becomes “poorly designed” through no fault of theirs.&lt;/li>
&lt;li>Engineering’s unhappy - they have dealt with a constant slew of ever-changing specs, people changing their minds about interactions and details at the last minute, and a constant pressure to ship features instead of taking the time to do things right.&lt;/li>
&lt;li>Product Management thinks the quality is terrible, and to make matters worse, everyone is moving too slowly.&lt;/li>
&lt;/ul>
&lt;p>Typical responses to this include bug bashes, quality weeks, bug triage meetings every day, burndown lists of launch-blocking bugs. Carried out over sufficient lengths of time, these lead to morale issues, finger-pointing, burnout, attrition, and, importantly, &lt;em>no sustained quality improvement&lt;/em>. The herculean effort might result in the feature getting out, but you know in 4 weeks, we’re going to be here again.&lt;/p>
&lt;p>Below, I lay out a pragmatic framework for dealing with software quality issues. It is not detailed enough where you can copy-paste it and put it into action. However, we can decompose a gnarly problem into different measurable axes, and forge a path toward maintaining a high quality standard and paying down long term bug debt.&lt;/p>
&lt;h2 id="1-defining-quality" class="group relative">1. Defining Quality&lt;a href="#1-defining-quality" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>There is much academic literature on this subject, generalized to everything that software engineering covers. For engineering teams building modern apps and consumer-facing software, I tend to use the following axes:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Correctness&lt;/strong>. Does the software behave as it was intended to? Does it solve the problem (at a detailed level) that it was meant to solve? Eg. A user tries to upload a video to YouTube using the app. They press the upload button, and nothing happens.&lt;/li>
&lt;li>&lt;strong>Performance&lt;/strong>. Is the app fast enough? Typical performance problems include app start performance (cold and warm start), data loading performance for key interactions (loading the home page, loading the profile page), interaction performance (scroll speed, animation speed). Eg. Google has famously invested much energy in speeding up Search because latency matters - a decrease of 400ms caused a 0.2-0.6% drop in searches, which compounded over time (users in the slow variants used Google less immediately, and even less over time).&lt;/li>
&lt;li>&lt;strong>Reliability&lt;/strong>. Does the app reliably accomplish its purpose? App crashes are an egregious example, especially on diverse platforms like Android. Another example: upload failures when trying to post photos or videos. Reliability issues are important because they cause a drag on retention as users churn off the app in frustration.&lt;/li>
&lt;li>&lt;strong>Craft&lt;/strong>. Do all the tiny details add up to create a genuinely polished experience? These bugs are rarely the most important one to fix or “launch blockers,” but they are essential to get right if you want the product as a whole to feel perfect. Want to find out how good your design craft eyes are? Take this quiz.&lt;/li>
&lt;/ol>
&lt;p>At this point, you’re thinking: hang on. What about: engineering architecture, testability, efficiency, and reusability? These aspects are critical to software development and can slow down engineering development, or contribute to fragility and a game of bug whack-a-mole. Isn’t it important to document those and burn those down as well?&lt;/p>
&lt;p>These are essential engineering projects that a good team is working on at any given time. However, they do not directly manifest themselves as user-facing problems. Separating the two, treating “quality” as strictly user or customer-facing problems, helps engineering teams speak the same language as their product and design counterparts and bring pure engineering problems in-house. Longer-term infrastructure improvements can be decomposed and folded into the same priority system; it is merely out of scope for this conversation.&lt;/p>
&lt;h2 id="2-prioritization" class="group relative">2. Prioritization&lt;a href="#2-prioritization" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Most engineering teams have a prioritization framework that provides an estimate on how quickly they a bug is addressed. A defect might take a long time to get fixed, even though it got looked at immediately, usually because it is a gnarly, hard to reproduce the problem or because the engineering team is so overloaded digging themselves out of a debt hole, that things are just going to take time.&lt;/p>
&lt;p>A priority framework provides common terminology and an agreement about how urgently the team needs to look at a bug. In other words, it is an SLA that the engineering team agrees to uphold. Here is my general priority framework:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Priority 0&lt;/strong>. Look at this NOW. This priority should typically be tied together with an on-call rotation so that someone gets alerted. Services going down, significant parts of functionality going unavailable, major security problems - these sorts of things should result in a P0 bug. P0 bugs should be rare enough to warrant a formal review process around what caused the problem, its discovery, fixes applied, and lessons learned.&lt;/li>
&lt;li>&lt;strong>Priority 1&lt;/strong>. Fix within 24 hours. Examples include significant flaws in the product, bugs that affect a subset of the user base, bugs that impact the brand in a significant way.&lt;/li>
&lt;li>&lt;strong>Priority 2&lt;/strong>. Fix within a week. Minor problem, but it would be good to get fixed before then next major release of the feature goes out.&lt;/li>
&lt;li>&lt;strong>Priority 3&lt;/strong>. Fix within the next sprint (typically 2 weeks, but as long as a month.)&lt;/li>
&lt;li>&lt;strong>Priority 4&lt;/strong>. Catchall priority for things that should go into the next sprint. Expect these bugs never to be looked at unless they get upgraded to P2s. Different teams prefer to have these lying around because they are a documentation of everything wrong or delete them because they are mostly useless.&lt;/li>
&lt;/ul>
&lt;p>A meaningful and functional SLA process requires commitment and discipline from the engineering team to uphold their side of the bargain and look at (and fix) bugs in the allotted time. It also requires the product, design, QA, and other teams to not abuse the system by needlessly escalating every bug or arguing with the eng team about the priority. When this trust breaks down, the system goes from being a helpful framework to something that makes people feel trapped.&lt;/p>
&lt;h2 id="3-continuous-improvement" class="group relative">3. Continuous Improvement&lt;a href="#3-continuous-improvement" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>There is a constant tension between pushing features and improving quality. Determining when to pull the “emergency stop” brakes and get quality under control is hard to do. In the ideal world, all bugs would be perfectly prioritized, and there would be no SLA violating bugs. Good teams can reach and maintain this state. However, when a team is just starting to institute this process, the bug load can seem daunting. One approach to pay down the debt is to institute a process that limits the number of bugs that are allowed to be out of SLA to allow the team to continue to do feature development. Over time, this overage number ratchets down, going to zero over the space of a few months (or sooner depending on the team and how much bug debt they have).&lt;/p>
&lt;blockquote>
&lt;p>The key metric to look at is &amp;ldquo;&lt;strong>Number of SLA violating bugs in a priority bucket&lt;/strong>.&amp;rdquo;&lt;/p>&lt;/blockquote>
&lt;p>Set a realistic target of how many SLA violations you’re willing to allow. As an example:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Priority 0&lt;/strong>: No outstanding bugs. If you have a P0 bug, stop all feature development until you have fixed that bug.&lt;/li>
&lt;li>&lt;strong>Priority 1&lt;/strong>: A small number, say 0.25 / engineer.&lt;/li>
&lt;li>&lt;strong>Priority 2&lt;/strong>: You should expect a fair number of these bugs and give teams room to get these under control - say 1 / engineer.&lt;/li>
&lt;li>&lt;strong>Priority 3&lt;/strong>: A larger number. 5 / engineer.&lt;/li>
&lt;li>&lt;strong>Priority 4&lt;/strong>: Unbounded.&lt;/li>
&lt;/ul>
&lt;p>At this point, the team can take an actual Goal to stay under the max-violations limit and continue to ratchet things down over time.&lt;/p>
&lt;p>&lt;img src="https://rushabhdoshi.com/assets/bug-sla-targets.jpg" alt="bug spa targets">&lt;/p>
&lt;h2 id="4-accountability" class="group relative">4. Accountability&lt;a href="#4-accountability" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Processes are tools and like any tools, are subject to abuse. They are not meant to prevent adversarial plays - if the process becomes too cumbersome, teams stop adopting it, and it fails to achieve its purpose. A fundamental assumption of a Bug SLA process is that there is broad adoption and accountability at the highest level.&lt;/p>
&lt;p>At Facebook, when we instituted such a process, there was a bi-weekly meeting where all the senior eng managers would sit in a room with the head of the Facebook app, with the person running the SLA process (TPM) presenting who was doing well and who wasn’t. There was no yelling or blame; it was a rather simple “What’s going on, and how can we help?”. But you did not want to be the person answering that. The accountability was a social construct, and it worked exceedingly well.&lt;/p>
&lt;p>Making sure that the leadership is bought in, at the highest level, as well as peer functions (product and design), is essential to making the process a success.&lt;/p>
&lt;h2 id="conclusion" class="group relative">Conclusion&lt;a href="#conclusion" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>A systematic approach to product quality can help produce a product that is a joy to use, a product that feels polished and fast, one that customers keep returning to over and over again. Regardless of how bad things are today, you can institute a framework to pay off your bug debt, while building and pushing features. An SLA system has built-in checks and balances to slow down feature development when things get serious and provides natural incentives for teams to pay attention to the quality of their software, leading to more productive and happier engineering teams in the long run.&lt;/p>
&lt;p>{% include about.md %}&lt;/p></description></item><item><title>Strategy and Tactics</title><link>https://rushabhdoshi.com/posts/2019-10-12-strategy-and-tactics/</link><pubDate>Sat, 12 Oct 2019 00:00:00 +0000</pubDate><author>Rushabh Doshi</author><guid>https://rushabhdoshi.com/posts/2019-10-12-strategy-and-tactics/</guid><description>&lt;p>&lt;img src="https://rushabhdoshi.com/assets/chess-header.jpg" alt="splash image">&lt;/p>
&lt;p>A star product manager on your team comes to you one day, upset about the lack of coherent strategy. You’re confused: you have goals, a beautiful mission statement, an objective and measurable key results (or KPIs, depending on your parlance). The team has a good roadmap with specific things they are building. What is possibly wrong?&lt;/p>
&lt;blockquote>
&lt;p>“We’re doing a bunch of tactical stuff but we don’t have a strategy.”&lt;/p>&lt;/blockquote>
&lt;p>If you hear this, again and again, it is likely because the distinction between strategy and tactics is unclear. Sometimes one legitimately does not have a strategy — you’re in the problem definition phase, or your strategy is to out-execute the competition. More often, you haven’t outlined the strategy or communicated it to your team in a way that feels coherent.&lt;/p>
&lt;p>A strong, written exposition of your strategy, including rejected options, accelerates the product development process. Teams that understand the central strategy are empowered to come up with their tactics and execute without centralized decision making. They don’t have to come to you for every last detail.
This article captures my take on strategy and tactics as applied to building software products, based on nearly a decade of trial and error during my career at YouTube and Facebook.&lt;/p>
&lt;h2 id="what-is-strategy" class="group relative">What is Strategy?&lt;a href="#what-is-strategy" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>“Strategy is the creation of a unique and valuable position involving a different set of activities. It requires you to make trade-offs — choosing what not to do. Strategy involves creating a “fit” among the companies activities.”&lt;/p>
&lt;p>— Michael Porter, What Is Strategy?, &lt;a href="https://www.amazon.com/Strategy-including-featured-Michael-Porter-ebook/dp/B004GEB938/ref=sr_1_3">On Strategy&lt;/a>&lt;/p>&lt;/blockquote>
&lt;p>Strategy is easier to understand in the context of military theory or multi-player games, with clear goals and win/loss scenarios. Chess has been played and analyzed for centuries and is an excellent lens through which we can try to understand strategy.
A player’s goal in chess is simple: checkmate your opponent. However, when the game starts, the board is wide open.&lt;/p>
&lt;p>Here are three (amongst many) different things a white player could choose to do:
&lt;img src="https://rushabhdoshi.com/assets/chess-strategic-options.png" alt="3 strategic options">&lt;/p>
&lt;p>&lt;strong>Focus on attacking quickly and going for the quick win&lt;/strong>. White aggressively develops his queen and attacks rapidly. Black must pay attention to traps while focusing on developing their pieces.&lt;/p>
&lt;p>&lt;strong>Control the center and developing your pieces&lt;/strong>. White opens into the center and then fights to maintain that control. This is a popular opening for a good reason: it is less risky than extremely rapid development and leaves a lot of options for future attacks.&lt;/p>
&lt;p>&lt;strong>Defend first, giving up the center&lt;/strong>. White has castled and has nicely defended the king but, in doing so, has lost control of the center. The result is a more aggressive black game while white plays passively and waits for a black mistake.&lt;/p>
&lt;h2 id="strategy-characteristics" class="group relative">Strategy characteristics&lt;a href="#strategy-characteristics" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>No particular strategy leads to an immediate, measurable advantage&lt;/strong>. Neither player captures or loses pieces immediately by following any of these strategies. However, they lead to wildly different games.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Choosing one strategy means not choosing the rest&lt;/strong>. One cannot defend the king and simultaneously control the center, using the same set of moves. One cannot be aggressive and attack with the queen while also developing the rest of the pieces.
The strategic pick must fit with the player. Aggressive players picking a defensive strategy will result in neither sharp offense nor solid defense. A player must know who they are (or trying to become) and pick a plan that works well with them.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="what-are-tactics" class="group relative">What are Tactics?&lt;a href="#what-are-tactics" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>Tactics are a set of actions that result in concrete, measurable gain.&lt;/p>&lt;/blockquote>
&lt;p>Continuing with our chess analogy, let’s look at the following sequence of events:
&lt;img src="https://rushabhdoshi.com/assets/chess-tactics.png" alt="tactical example">&lt;/p>
&lt;p>In two moves (&lt;em>set of actions&lt;/em>), by sacrificing the queen, white has checkmated the black king and won the game (&lt;em>concrete, measurable gain&lt;/em>).&lt;/p>
&lt;p>Tactics can involve any number of moves — but the result should be clear and unambiguous. In the example above, the gain is winning the game — the biggest prize of all. Not all tactical play will result in such a significant benefit; often, the increase is a single piece like a pawn or positional advantage of occupying a square in the center. The critical difference is that a tactical move quickly results in a definite advantage, while a strategic position is an opinionated way of making progress toward the ultimate goal.&lt;/p>
&lt;h2 id="from-chess-to-products" class="group relative">From Chess to Products&lt;a href="#from-chess-to-products" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Chess has fairly clear rules and an unambiguous goal. Rules and goals may be a lot fuzzier when building products, creating ambiguity. How do we apply the learnings above to product development?&lt;/p>
&lt;p>&lt;strong>Start with a clear goal&lt;/strong>. Without this, the discussion about strategy and tactics falls apart. Regardless of the phase of product development, the goal should be clear, even though it may not be easily measurable. For example, in the very early stages, the goal is to determine 1) does the customer have the problem we think they have? 2) does our product or feature solve the customer’s need?. Post product/market fit, the goals are often to increase revenue, users or engagement, and thus grow the business.&lt;/p>
&lt;p>&lt;strong>Develop strategic positions toward the goal&lt;/strong>. A “strategic position” is a choice to focus on some part of the overall problem. The approach is to segment the problem space and then choose a combination of those segments to over-serve while ignoring or under-serving the rest. Porter lists three approaches to segmentation,&lt;/p>
&lt;ol>
&lt;li>Segment an industry’s products and focus on building a particular subset.&lt;/li>
&lt;li>Segment based on customers’ needs.&lt;/li>
&lt;li>Segment based on customer access and how products reach them.&lt;/li>
&lt;/ol>
&lt;p>It is important to note that these are not MECE (mutually exclusive and completely exhaustive). Combinations of these sources will lead to different strategic positions that one could take.&lt;/p>
&lt;p>&lt;strong>Smaller, Better, Faster → Tactics&lt;/strong>. Improving the performance, reliability, and efficiency of software is an excellent thing, but it is not a strategy. These are operational indicators and will generate a definite tactical advantage, but they do not signify a unique position that your product could occupy.&lt;/p>
&lt;h2 id="winning-with-strategy-and-tactics" class="group relative">Winning with Strategy and Tactics&lt;a href="#winning-with-strategy-and-tactics" class="heading-anchor" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Achieving your goals involves excellent strategy and artful execution. One without the other is likely to result in unnecessary friction, if not outright failure. One must have a solid strategy, choose to communicate it often and follow it up with solid execution. Execution includes things like operational effectiveness — building products that are fast, reliable, and efficient. Another critical element of execution is excellent design — the product needs to be coherent and understandable, and communicate its purpose. Details matter and small issues and bugs diminish the impression of a well-built product. However, none of these things — A+ engineering, beautiful design, perfect understanding of data — constitute a strategy. One can win based on tactics alone, through fast, solid execution. But this advantage is not as sustainable as one achieved through a combination of strategy and tactics.&lt;/p>
&lt;p>{% include about.md %}&lt;/p></description></item></channel></rss>