<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Systems and Side Quests]]></title><description><![CDATA[Sid's perspectives on a life in tech, engineering management, software, personal growth and really anything else that comes to mind.]]></description><link>https://www.sidshankar.com</link><image><url>https://substackcdn.com/image/fetch/$s_!saXo!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c017050-d221-413d-8d09-b30efbbe9e42_1024x1024.png</url><title>Systems and Side Quests</title><link>https://www.sidshankar.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 30 May 2026 20:55:51 GMT</lastBuildDate><atom:link href="https://www.sidshankar.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Sid Shankar]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[sidshankar@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[sidshankar@substack.com]]></itunes:email><itunes:name><![CDATA[Sid Shankar]]></itunes:name></itunes:owner><itunes:author><![CDATA[Sid Shankar]]></itunes:author><googleplay:owner><![CDATA[sidshankar@substack.com]]></googleplay:owner><googleplay:email><![CDATA[sidshankar@substack.com]]></googleplay:email><googleplay:author><![CDATA[Sid Shankar]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[(Large Language) Model-Based Design]]></title><description><![CDATA[Old ideas, new tools, and a shift in how we work]]></description><link>https://www.sidshankar.com/p/large-language-model-based-design</link><guid isPermaLink="false">https://www.sidshankar.com/p/large-language-model-based-design</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Sat, 18 Apr 2026 22:13:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zUE6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefec2f28-53e9-4d33-9e46-5265c9a75abb_894x536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I spent close to ten years at MathWorks working on Stateflow, a key part of the <strong><a href="https://www.mathworks.com/solutions/model-based-design.html">Model Based Design (MDB)</a></strong><a href="https://www.mathworks.com/solutions/model-based-design.html"> toolset</a>. My time there was a front row seat to how engineers in the automotive, aerospace, and industrial automation industries build software for safety-critical systems. </p><p>What stood out to me was how these tools changed where people spent their time. Engineers using these tools tended to be domain experts on the systems and they were modelling. They focused on behaviour, edge cases, system design and verification. Our tools enabled <strong>fast design exploration</strong>, and when they were confident, the tools generated the code.</p><p>That model works because the complexity of these systems and the cost of mistakes in these contexts is high. Writing code by hand does not scale. With Model Based Design, the model became the spec. You can run it to understand the behaviour of the system and catch problems before they made it into code or hardware. The result is trust and confidence in the system being built.</p><p>Jack Little&#8217;s (MathWorks co-founder and CEO) talk about the <a href="https://www.youtube.com/watch?v=-EheLrJu1Cg">history and impact of Model-Based Design</a> is a must-watch. What MathWorks tools enabled control system engineers to do has <em>some</em> parallels with the benefits we&#8217;re starting to get from the use of LLMs and agents in traditional software development.</p><p>Here&#8217;s a slide from the talk, which if looked at in isolation, might have come from a presentation about the benefits of LLMs for code generation (except for the &#8220;executable specification&#8221; part - for now!):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zUE6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefec2f28-53e9-4d33-9e46-5265c9a75abb_894x536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zUE6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefec2f28-53e9-4d33-9e46-5265c9a75abb_894x536.png 424w, https://substackcdn.com/image/fetch/$s_!zUE6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefec2f28-53e9-4d33-9e46-5265c9a75abb_894x536.png 848w, https://substackcdn.com/image/fetch/$s_!zUE6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefec2f28-53e9-4d33-9e46-5265c9a75abb_894x536.png 1272w, https://substackcdn.com/image/fetch/$s_!zUE6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefec2f28-53e9-4d33-9e46-5265c9a75abb_894x536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zUE6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefec2f28-53e9-4d33-9e46-5265c9a75abb_894x536.png" width="894" height="536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efec2f28-53e9-4d33-9e46-5265c9a75abb_894x536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:536,&quot;width&quot;:894,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:152055,&quot;alt&quot;:&quot;A screenshot from Jack Little&#8217;s talk: &#8220;Accelerating the Pace and Scope of Control System Design&#8221; taken at the 21 minute mark. The slide talks about the design phase of Model Based design, where design is iterative refined.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.sidshankar.com/i/194558547?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefec2f28-53e9-4d33-9e46-5265c9a75abb_894x536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot from Jack Little&#8217;s talk: &#8220;Accelerating the Pace and Scope of Control System Design&#8221; taken at the 21 minute mark. The slide talks about the design phase of Model Based design, where design is iterative refined." title="A screenshot from Jack Little&#8217;s talk: &#8220;Accelerating the Pace and Scope of Control System Design&#8221; taken at the 21 minute mark. The slide talks about the design phase of Model Based design, where design is iterative refined." srcset="https://substackcdn.com/image/fetch/$s_!zUE6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefec2f28-53e9-4d33-9e46-5265c9a75abb_894x536.png 424w, https://substackcdn.com/image/fetch/$s_!zUE6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefec2f28-53e9-4d33-9e46-5265c9a75abb_894x536.png 848w, https://substackcdn.com/image/fetch/$s_!zUE6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefec2f28-53e9-4d33-9e46-5265c9a75abb_894x536.png 1272w, https://substackcdn.com/image/fetch/$s_!zUE6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefec2f28-53e9-4d33-9e46-5265c9a75abb_894x536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A screenshot from Jack Little&#8217;s talk: &#8220;<strong>Accelerating the Pace and Scope of Control System Design&#8221; </strong>taken at the 21 minute mark</figcaption></figure></div><div><hr></div><h3>Fast-forward 8 years</h3><p>Over the past few weeks and months, I&#8217;ve increasingly been a part of conversations about the effects of AI on the software engineering profession. </p><p>How does it benefit engineers at different stages of their careers? How does it affect roles that are software engineering &#8220;adjacent&#8221;? How do we help software engineers - particularly those early-in-career - build judgement and expertise on technical systems? Are we moving to a higher abstraction level of building software? </p><p>With LLMs and agents as our code generators, we&#8217;re spending less time typing out code. The focus has shifted to:</p><ul><li><p>Being clear about what the system should do.</p></li><li><p>Understanding the domain - Necessary, because a lower understanding of the domain makes it harder to verify if generated code only looks right, or is actually right.</p></li><li><p>Thinking about testing and validation to guarantee the correct behaviour for the operating conditions (inputs, context) we are designing for.</p></li><li><p>Maintaining context - markdown files containing an overview of the system, sequence diagrams, coding standards, security and quality preferences etc. - that help constrain LLMs.</p></li></ul><p>Since code generation speed isn&#8217;t a bottleneck anymore, you can try variations of your designs and implementations in minutes - pushing on performance, adding constraints and exploring tradeoffs. </p><p>It starts to feel a bit like working with MBD tools instead of writing everything from scratch.</p><p>This is where some of the old ideas from Model Based Design start to matter again. Clear specs. Early validation. Tests that reflect real behaviour. Ways to verify what was generated. Strong security boundaries. </p><p>Marc Brooker wrote a <a href="https://brooker.co.za/blog/2026/04/09/waterfall-vs-spec.html">great post recently on spec driven development</a> that gets at this from a software angle - about specifications being at the core of an iterative software development and design loop.</p><p>Software engineering isn&#8217;t turning into Model Based Design overnight. The tools and workflows are different. But the direction feels familiar. We are moving toward a world where we shape behaviour at a higher level and rely more on systems to fill in the details. </p>]]></content:encoded></item><item><title><![CDATA[The Architecture of Speed ]]></title><description><![CDATA[The ability to change fast defines modern software]]></description><link>https://www.sidshankar.com/p/the-architecture-of-speed</link><guid isPermaLink="false">https://www.sidshankar.com/p/the-architecture-of-speed</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Sat, 14 Feb 2026 05:00:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!eLk3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F412345a9-4cd7-4ddc-a890-7c988aa391f5_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eLk3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F412345a9-4cd7-4ddc-a890-7c988aa391f5_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eLk3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F412345a9-4cd7-4ddc-a890-7c988aa391f5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!eLk3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F412345a9-4cd7-4ddc-a890-7c988aa391f5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!eLk3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F412345a9-4cd7-4ddc-a890-7c988aa391f5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!eLk3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F412345a9-4cd7-4ddc-a890-7c988aa391f5_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eLk3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F412345a9-4cd7-4ddc-a890-7c988aa391f5_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/412345a9-4cd7-4ddc-a890-7c988aa391f5_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1782489,&quot;alt&quot;:&quot;Robotic hands solve a metallic cube puzzle that resembles a rubicks cube&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.sidshankar.com/i/187923887?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F412345a9-4cd7-4ddc-a890-7c988aa391f5_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Robotic hands solve a metallic cube puzzle that resembles a rubicks cube" title="Robotic hands solve a metallic cube puzzle that resembles a rubicks cube" srcset="https://substackcdn.com/image/fetch/$s_!eLk3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F412345a9-4cd7-4ddc-a890-7c988aa391f5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!eLk3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F412345a9-4cd7-4ddc-a890-7c988aa391f5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!eLk3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F412345a9-4cd7-4ddc-a890-7c988aa391f5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!eLk3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F412345a9-4cd7-4ddc-a890-7c988aa391f5_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In <em><a href="https://rightingsoftware.org/">Righting Software</a></em><a href="https://rightingsoftware.org/"> by Juval L&#246;wy</a>, one idea stood out to me: <strong>Volatility-based decomposition</strong>.</p><p>The premise is simple: &#8220;<em>Decompose your system along axes of change.&#8221;</em></p><p>Change here refers to areas of high volatility. Volatility means the potential for large changes that might have a ripple effect across the system (or systems), not small variations that can easily be handled with conditional logic. </p><p>What are some examples of volatility that need to be modeled when architecting software?</p><ul><li><p>Business rules</p></li><li><p>Pricing models</p></li><li><p>Regulatory logic</p></li><li><p>Integration contracts</p></li><li><p>Customer configuration</p></li><li><p>Reporting formats</p></li><li><p>Detection / scoring / remediation algorithms</p></li></ul><p>These elements evolve at different rates and for different reasons.</p><p>Volatility-based decomposition suggests that if two parts of the system change independently, they should be isolated from one another. The discussion shifts from &#8220;How should we structure the code?&#8221; to &#8220;How do we prevent change in one area from cascading into others?&#8221;. </p><h2>Change Speed Is a First-Class Requirement</h2><p>The ability to change quickly is an unstated requirement for most software, especially platforms that hope to gain a dominant position in the market or support a small but dedicated customer base reliably for a long, long time. </p><p>It&#8217;s not a stretch to say that the speed with which we can make changes to our software influences:</p><ul><li><p>Market competitiveness</p></li><li><p>Customer retention</p></li><li><p>Product learning cycles</p></li><li><p>Organizational morale</p></li></ul><p>When volatile concerns are tightly coupled, every change expands regression risk and coordination cost. It&#8217;s natural in this situation for engineers to become cautious. Planning cycles and discussions stretch endlessly while delivery slows.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p>In these situations, engineering cultures often become protective of stability. Change requests are evaluated through the lens of risk and effort. That instinct is understandable when the architecture amplifies change.</p><h2>Contain the change</h2><p>When volatility is isolated, teams can evolve parts of the system independently. The has the effect of localizing risk, making change easier to reason about and accelerating our ship-learn cycles. </p><p>One way to frame architecture discussions and efforts, especially at the start of major projects is that the <strong>architecture should limit and confine the effects of change.</strong></p><p>When boundaries align with volatility:</p><ul><li><p>A regulatory update affects a specific module.</p></li><li><p>A pricing modification does not ripple across unrelated domains.</p></li><li><p>A new integration leaves core business logic untouched.</p></li></ul><p>Change continues, but its impact is bounded.</p><p>Containment reduces coordination overhead, cognitive load, and unintended consequences. Teams can operate with greater autonomy because responsibilities are clear and the blast radius is limited.</p><p>Predictable value delivery at speed depends on this containment.</p><h2>&#8220;Features Are Aspects of Integration, Not Implementation&#8221;</h2><p>This was another takeaway from the book. The idea of &#8220;Manager&#8221; and &#8220;Engine&#8221; components (along with clients, resources, data access layers, utilities) where most parts of the system can be expensive to build and must be built with care, but &#8220;Manager&#8221; components orchestrating all of those parts must be built to be &#8220;almost expendable&#8221;. </p><p>Customers do not interact with implementation details. They experience workflows, policies, and integrations.</p><p>A feature often represents:</p><ul><li><p>A new workflow composed of existing capabilities</p></li><li><p>A policy applied to existing signals</p></li><li><p>An integration with another system</p></li><li><p>A configuration that alters behavior</p></li><li><p>A new aggregation or presentation of data</p></li></ul><p>When systems are structured using traditional functional decomposition or domain decomposition techniques, features tend to cut across boundaries with delivery requiring synchronized changes across those boundaries.</p><p>When systems are structured by capability and volatility boundaries, features emerge from composing stable building blocks. Existing components are integrated in new ways i.e. &#8220;Manager&#8221; components are born, change and die with ease. </p><h2>Key Insights</h2><ul><li><p>Architectural agility influences competitive position. Organizations that can evolve safely and frequently learn faster and respond more effectively to market shifts. The impact compounds over years.</p></li><li><p>Volatility-based decomposition requires domain awareness. Architects must understand which aspects of the system change independently and why. This demands close alignment with product strategy and business context.</p></li><li><p>Clear boundaries and stable contracts are essential. Leaky abstractions increase coupling and erode the benefits of decomposition. Early discipline creates long-term flexibility.</p></li><li><p>Change is the default state of software and architecture shapes how that change propagates. When change is contained, teams move with confidence and speed becomes sustainable.</p></li><li><p>I can see codebases that leverage volatility-based decomposition being worked on more easily by Agents, and I can see those codebases experiencing a tailwind of velocity. Changes to a single file, a single module, or a very small set of files in a codebase decomposed based on volatility have a lower chance of falling apart and going off the rails than Agent sessions that would need to make changes spread across multiple modules and dozens of files.</p></li></ul><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>The blame for this dysfunction doesn&#8217;t always lie with software architecture. Weak or toxic organizational culture, competing incentives and various other factors can contribute just as easily. </p></div></div>]]></content:encoded></item><item><title><![CDATA[Keeping The Saw Sharp]]></title><description><![CDATA[Are you sure you're sharpening the right one?]]></description><link>https://www.sidshankar.com/p/keeping-the-saw-sharp</link><guid isPermaLink="false">https://www.sidshankar.com/p/keeping-the-saw-sharp</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Wed, 02 Aug 2023 01:59:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!I8G1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d295006-9663-401b-8ea8-07661c6ca136_5760x3840.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I8G1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d295006-9663-401b-8ea8-07661c6ca136_5760x3840.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I8G1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d295006-9663-401b-8ea8-07661c6ca136_5760x3840.jpeg 424w, https://substackcdn.com/image/fetch/$s_!I8G1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d295006-9663-401b-8ea8-07661c6ca136_5760x3840.jpeg 848w, https://substackcdn.com/image/fetch/$s_!I8G1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d295006-9663-401b-8ea8-07661c6ca136_5760x3840.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!I8G1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d295006-9663-401b-8ea8-07661c6ca136_5760x3840.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I8G1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d295006-9663-401b-8ea8-07661c6ca136_5760x3840.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d295006-9663-401b-8ea8-07661c6ca136_5760x3840.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2803381,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I8G1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d295006-9663-401b-8ea8-07661c6ca136_5760x3840.jpeg 424w, https://substackcdn.com/image/fetch/$s_!I8G1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d295006-9663-401b-8ea8-07661c6ca136_5760x3840.jpeg 848w, https://substackcdn.com/image/fetch/$s_!I8G1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d295006-9663-401b-8ea8-07661c6ca136_5760x3840.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!I8G1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d295006-9663-401b-8ea8-07661c6ca136_5760x3840.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@cdx2?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">C D-X</a> on <a href="https://unsplash.com/photos/8zKHg5JUp2U?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p><a href="https://www.franklincovey.com/habit-7/">Sharpen(ing) the saw</a> is generally good advice for people in all professions. Particularly in industries where the pace of change is high, and if you&#8217;re not sharpening your saw, at least some of your skills are atrophying. </p><p>So it is for people who work in / with technology. There&#8217;s plenty of good advice out there for how to keep your technical saw sharp from folks like <a href="https://blog.codinghorror.com/sharpening-the-saw/">Jeff Atwood</a> and <a href="http://www.hanselman.com/blog/sharpen-the-saw-for-developers">Scott Hanselman</a>. </p><p>What happens when people transition from the role of a software developer to a manager? Some energy continues to be poured into keeping that technical saw sharp, but the motivations vary:</p><ol><li><p>Love for the learning and intellectual stimulation that inevitably comes from keeping the technical saw sharp.</p></li><li><p>Wanting to keep the option of switching back to an IC role. </p></li><li><p>Not wanting to see a hard earned skill (often over many years) wither away with time.</p></li><li><p>It&#8217;s the only &#8220;saw&#8221; some people can see, so naturally, it&#8217;s the only one they can think to sharpen.</p></li></ol><p>Be especially wary of that last one. While the <a href="https://charity.wtf/2020/09/06/if-management-isnt-a-promotion-then-engineering-isnt-a-demotion/">mechanics of moving into a management role might have come about through a promotion</a>, this is in reality a different job. A different role with a different set of expectations (although many companies and individuals in the role might still treat it as an &#8220;engineer with direct reports&#8221; role). </p><p>Congratulations, you now have another saw to sharpen! </p><p>The saw of <em>skilled management. </em>The saw that - yielded well - will:</p><ul><li><p>Forge a high functioning and highly committed team</p></li><li><p>Produce an environment of growth and fulfillment at work</p></li><li><p>Be a multiplying force (for good) for the organization</p></li></ul><p>The tools that helped you sharpen your technical saw won&#8217;t necessarily work for the management saw. The underlying drive to learn and grow is the same, but sharpening the management saw must be done with intention. </p><p>All I&#8217;m saying is:</p><ul><li><p>Be aware that you have another saw to sharpen.</p></li><li><p>The new saw works very differently, it&#8217;s impact is often felt over longer distances of time than the technical saw. Don&#8217;t discount it, or dismiss it, just because it might be more ethereal or abstract to wield. </p></li><li><p>You might find it difficult to be an effective manager if you aren&#8217;t sharpening the management saw, working with a blunt and ineffective instrument, getting frustrated because you didn&#8217;t even know it was something you had to sharpen. Sharpen both, by all means. But balance your energies wisely. </p></li></ul><div><hr></div><p>I&#8217;m often asked by people newly transitioning into management whether their technical skills will atrophy. I can&#8217;t possibly answer that question for you. It depends on your individual context, and the energy you spend continuing to keep that saw sharp. &#8220;Technical skills&#8221; means a lot of different things here, and that topic deserves its own post.</p><p>However, in worrying about what you might lose, don&#8217;t forget about you will gain. </p>]]></content:encoded></item><item><title><![CDATA[Principles of Estimation]]></title><description><![CDATA[The words &#8220;estimate&#8221; or &#8220;estimation&#8221; are often met with skepticism by teams building software.]]></description><link>https://www.sidshankar.com/p/principles-of-estimation</link><guid isPermaLink="false">https://www.sidshankar.com/p/principles-of-estimation</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Wed, 28 Jun 2023 20:35:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rBxi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a7b067-8ca7-4a4f-88e4-5c2ad1f68452_3840x2160.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rBxi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a7b067-8ca7-4a4f-88e4-5c2ad1f68452_3840x2160.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rBxi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a7b067-8ca7-4a4f-88e4-5c2ad1f68452_3840x2160.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rBxi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a7b067-8ca7-4a4f-88e4-5c2ad1f68452_3840x2160.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rBxi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a7b067-8ca7-4a4f-88e4-5c2ad1f68452_3840x2160.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rBxi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a7b067-8ca7-4a4f-88e4-5c2ad1f68452_3840x2160.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rBxi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a7b067-8ca7-4a4f-88e4-5c2ad1f68452_3840x2160.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24a7b067-8ca7-4a4f-88e4-5c2ad1f68452_3840x2160.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1056031,&quot;alt&quot;:&quot;A windsock - a device meant to indicate wind speed and direction - blowing eastwards in the wind, against the backdrop of sunny blue skies with feathery clouds.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A windsock - a device meant to indicate wind speed and direction - blowing eastwards in the wind, against the backdrop of sunny blue skies with feathery clouds." title="A windsock - a device meant to indicate wind speed and direction - blowing eastwards in the wind, against the backdrop of sunny blue skies with feathery clouds." srcset="https://substackcdn.com/image/fetch/$s_!rBxi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a7b067-8ca7-4a4f-88e4-5c2ad1f68452_3840x2160.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rBxi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a7b067-8ca7-4a4f-88e4-5c2ad1f68452_3840x2160.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rBxi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a7b067-8ca7-4a4f-88e4-5c2ad1f68452_3840x2160.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rBxi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a7b067-8ca7-4a4f-88e4-5c2ad1f68452_3840x2160.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/it/@markkoenig?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Mark K&#246;nig</a> on <a href="https://unsplash.com/photos/OsYYPaPgIjw?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>The words &#8220;estimate&#8221; or &#8220;estimation&#8221; are often met with skepticism by teams building software. In the software industry, there&#8217;s a tendency to get caught up in the &#8220;how&#8221;, or the right / wrong ways to estimate. We get distracted by the mechanics of it, and don&#8217;t always seek to understand the principles behind it. </p><p>I have seen teams break down large initiatives into atomic units of work, where each unit attempts to represent a small and fungible (among the team) piece of work - let&#8217;s say one day&#8217;s worth of work. </p><p>I have seen teams consider the practice (of estimation) to be ineffective and abandon any attempts at estimation. </p><p><em>Why bother with estimates?</em> <em>Who needs these estimates and why?</em> </p><p>You might hear something along the lines of:</p><blockquote><p>&#8220;We estimate so we can generate forecasts! It&#8217;s important to be able to communicate the cost involved in building a feature / capability / product. We do this by breaking down the thing we need to deliver into increasingly smaller &#8216;units&#8217; of work until we&#8217;re able to generate high-confidence estimates for how much work each unit is going to require.&#8221;</p><p>&#8220;The more we estimate as a team, the more accurate we will become with our estimates over time. We will understand the team&#8217;s throughput, and we&#8217;ll be able to offer high predictability over what we can ship, and by when&#8221;.</p></blockquote><p>However, this perspective makes some assumptions:</p><ul><li><p><strong>That the effort needed to execute on something is equal between team members. Capacity is often not fungible</strong>. Answering the question of &#8220;how much effort do we need to build X?&#8221; can produce variable answers depending on who is doing the work.</p></li><li><p><strong>That projects can be broken down with a high degree of granularity, all at once, producing homogenous and atomic units of work</strong>. There&#8217;s a limit to the granularity with which you can break down a project. Early in the timeline, there can be many unknowns which limits the confidence of the predictions. <strong>Trying to break things down into increasingly smaller pieces to produce high-confidence estimates can lead to wasted work if the approach or requirements change</strong>. The more upstream the change, the greater the domino effect on estimate changes.</p></li><li><p>That the point of estimation is only to produce forecasts or plan for capacity, while discounting the <strong>value derived from collaborative estimation and conversation, to shed light on mismatched assumptions, misunderstood requirements, missing dependencies</strong> etc. </p></li><li><p>That estimation is a one-time exercise at the start of a project, never to be <strong>revised or revisited. </strong>That would be like a weather app that made weather predictions a week ahead of time, and then never adjusted those predictions.</p></li><li><p>That estimates will become increasingly accurate over time. This <em>may</em> be true for teams where the nature of work seldom changes, but in practice I have rarely seen this state (of high precision estimates) being <strong>attained and maintained</strong>. Teams executing on a lot of novel or innovative work are unlikely to attain this state at all.</p></li></ul><p>All that said, businesses need to make money, and they need to do this by creating value, at a sustainable pace and cost, while trying to do it all more effectively than their competitors. The ability to forecast when that value will be delivered, make prioritization decisions and move nimbly is therefore invaluable. </p><p>I don&#8217;t have a prescriptive solution (context matters after all), but I try to lean on some principles:</p><ul><li><p>Understand your constraints (time, quality, cost)</p></li><li><p>Be aware of your assumptions</p></li><li><p>Know your team&#8217;s skills and capabilities</p></li><li><p>Treat your estimates as forecasts, not timeline commitments. Forecasts evolve, commitments don&#8217;t.</p><ul><li><p>Consider associating forecasts with confidence numbers (communicate the degree of uncertainty around your forecasts)</p></li></ul></li><li><p>Strive for clarity over the short-term / tolerate some fogginess for the long term</p></li><li><p>Estimate collaboratively - the value is in the discussion</p></li><li><p>Lean on a &#8220;push&#8221; model for communicating forecast updates, particularly forecast <em>changes </em>(think weather &#8220;alerts&#8221;)</p></li><li><p>Be curious, not emotional, about forecast changes</p></li></ul><div><hr></div><p></p>]]></content:encoded></item><item><title><![CDATA[Your Manager As A Dance Partner]]></title><description><![CDATA[I couldn&#8217;t dance to save my life, but it doesn&#8217;t require proficiency in dancing to see the grace and fluidity with which some dancing partners operate.]]></description><link>https://www.sidshankar.com/p/your-manager-as-a-dance-partner</link><guid isPermaLink="false">https://www.sidshankar.com/p/your-manager-as-a-dance-partner</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Fri, 23 Jun 2023 02:25:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!sgQH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c4cad4d-5e9c-47d1-90f0-81c59c604d66_3264x2176.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sgQH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c4cad4d-5e9c-47d1-90f0-81c59c604d66_3264x2176.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sgQH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c4cad4d-5e9c-47d1-90f0-81c59c604d66_3264x2176.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sgQH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c4cad4d-5e9c-47d1-90f0-81c59c604d66_3264x2176.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sgQH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c4cad4d-5e9c-47d1-90f0-81c59c604d66_3264x2176.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sgQH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c4cad4d-5e9c-47d1-90f0-81c59c604d66_3264x2176.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sgQH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c4cad4d-5e9c-47d1-90f0-81c59c604d66_3264x2176.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c4cad4d-5e9c-47d1-90f0-81c59c604d66_3264x2176.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:518048,&quot;alt&quot;:&quot;A man wearing a denim coloured beanie, a light-blue denim jacket, and dark blue jeans is in a breakdancing pose - arms extended out, the toes of one leg on the floor in the middle of the room with the knee of that same leg bent, while the other leg extends out parallel to the ground. The person's arms are extended out with their right hand pointing with two fingers towards the right of the room from the viewer's perspective.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A man wearing a denim coloured beanie, a light-blue denim jacket, and dark blue jeans is in a breakdancing pose - arms extended out, the toes of one leg on the floor in the middle of the room with the knee of that same leg bent, while the other leg extends out parallel to the ground. The person's arms are extended out with their right hand pointing with two fingers towards the right of the room from the viewer's perspective." title="A man wearing a denim coloured beanie, a light-blue denim jacket, and dark blue jeans is in a breakdancing pose - arms extended out, the toes of one leg on the floor in the middle of the room with the knee of that same leg bent, while the other leg extends out parallel to the ground. The person's arms are extended out with their right hand pointing with two fingers towards the right of the room from the viewer's perspective." srcset="https://substackcdn.com/image/fetch/$s_!sgQH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c4cad4d-5e9c-47d1-90f0-81c59c604d66_3264x2176.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sgQH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c4cad4d-5e9c-47d1-90f0-81c59c604d66_3264x2176.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sgQH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c4cad4d-5e9c-47d1-90f0-81c59c604d66_3264x2176.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sgQH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c4cad4d-5e9c-47d1-90f0-81c59c604d66_3264x2176.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@dizzyd718?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Drew Dizzy Graham</a> on <a href="https://unsplash.com/photos/PVyhz0wmHdo?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>I couldn&#8217;t dance to save my life, but it doesn&#8217;t require proficiency in dancing to see the grace and fluidity with which some dancing partners operate. This got me thinking  - Unfortunately, I do tend to go down arbitrary thought rabbit-holes - that there&#8217;re some things in common between being an effective dance partner, and having an effective relationship with your manager.</p><p>Things that come to mind include:</p><ul><li><p><strong>Attentiveness</strong> - If you aren&#8217;t paying attention to each other&#8217;s body language, it becomes <strong>harder to correctly anticipate next steps and stay in rhythm</strong>. There is dissonance instead of resonance.</p></li><li><p><strong>Improvisation</strong> - If you fall out of rhythm, even for a brief time, recognizing it quickly and improvising is key. Improvisation in this context doesn&#8217;t mean winging it! It means <strong>recognizing that things won&#8217;t always go to plan, and having the presence of mind to be open to possibilities</strong>, while recovering and continuing gracefully.</p></li><li><p><strong>Clear communication</strong> - No explanation needed. Both sides need to be clear about <strong>what they value and their expectations</strong> of each other.</p></li><li><p><strong>Cooperation </strong>- Individuals who are in it for their own personal glory are unlikely to succeed (certainly not in the long term). Instead, a certain degree of empathy and connection is required, with a <strong>clear understanding of the goals that the partners share</strong>. </p></li><li><p><strong>Practice</strong> - Dancing together effectively takes <strong>daily work and practice</strong>. Ignore the routine / relationships for too long and decay is inevitable. </p></li><li><p><strong>Trust </strong>- Is foundational to it all. You <strong>trust each other to be attentive, flexible, improvise when necessary, communicate clearly, and put work into the relationship</strong> for it to fully meet its potential.</p></li></ul><p>The power dynamics of the relationship are obviously very different i.e. there&#8217;s only so far you can take this metaphor. Even so, the overlap is interesting.</p><div><hr></div><p>Short and sweet. Thanks for reading!</p>]]></content:encoded></item><item><title><![CDATA[What Is Empathetic Leadership?]]></title><description><![CDATA[It struck me recently how often I see the words &#8220;empathetic leader&#8221;.]]></description><link>https://www.sidshankar.com/p/what-is-empathetic-leadership</link><guid isPermaLink="false">https://www.sidshankar.com/p/what-is-empathetic-leadership</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Wed, 10 May 2023 18:41:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yY_R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa461af0-52fd-4249-bea7-230b5dc7fc62_3999x2662.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yY_R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa461af0-52fd-4249-bea7-230b5dc7fc62_3999x2662.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yY_R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa461af0-52fd-4249-bea7-230b5dc7fc62_3999x2662.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yY_R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa461af0-52fd-4249-bea7-230b5dc7fc62_3999x2662.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yY_R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa461af0-52fd-4249-bea7-230b5dc7fc62_3999x2662.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yY_R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa461af0-52fd-4249-bea7-230b5dc7fc62_3999x2662.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yY_R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa461af0-52fd-4249-bea7-230b5dc7fc62_3999x2662.jpeg" width="1456" height="969" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa461af0-52fd-4249-bea7-230b5dc7fc62_3999x2662.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:969,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:518115,&quot;alt&quot;:&quot;Black and white photo of two small children, walking down a straight gravel path, with grass on either side of the path. The child on the left has their arm around the shoulder of the child on the right.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Black and white photo of two small children, walking down a straight gravel path, with grass on either side of the path. The child on the left has their arm around the shoulder of the child on the right." title="Black and white photo of two small children, walking down a straight gravel path, with grass on either side of the path. The child on the left has their arm around the shoulder of the child on the right." srcset="https://substackcdn.com/image/fetch/$s_!yY_R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa461af0-52fd-4249-bea7-230b5dc7fc62_3999x2662.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yY_R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa461af0-52fd-4249-bea7-230b5dc7fc62_3999x2662.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yY_R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa461af0-52fd-4249-bea7-230b5dc7fc62_3999x2662.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yY_R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa461af0-52fd-4249-bea7-230b5dc7fc62_3999x2662.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@anniespratt?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Annie Spratt</a> on <a href="https://unsplash.com/photos/gq5PECP8pHE?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>It struck me recently how often I see the words &#8220;empathetic leader&#8221;. Sometimes, this is an individual describing a former manager. More often, it is someone describing themselves as having an &#8220;empathetic leadership style&#8221;. </p><p>What does it <em>mean</em> to be an empathetic leader? Imagine you&#8217;re at a supermarket and you see an &#8220;Organic&#8221; label on a food product. All it takes is a label or sticker to make the claim, but how do you <em>know </em>for sure? </p><p>I have personally understood empathy to mean that one is sensitive to (and understanding of) the experiences, feelings and thoughts of others. It is a way of being. It is not a <em>style </em>to be tried on and discarded, and it&#8217;s not something to aspire to only when it is convenient for you. </p><p>In my experience, empathetic leaders are:</p><ul><li><p>Good listeners, with <em>great follow-through</em></p></li><li><p>Open to feedback, and <em>act on the feedback</em></p></li><li><p>Care about you, and more importantly, <em>respect you enough to be candid with you</em></p></li><li><p><em>Clear about their expectations</em>, and <em>transparent about their actions and decisions</em></p></li></ul><p>It&#8217;s a high bar to meet, but it comes down to having firm values and principles and seeking to exercise those principles consistently. </p><p><strong>What does empathetic leadership mean to you? What are some other principles that you&#8217;ve seen empathetic leaders follow consistently?</strong></p><p>If you&#8217;re in a situation where you get to interview your future manager, consider asking:</p><ol><li><p>What&#8217;s some feedback you&#8217;ve received recently? How did you act on it?</p></li><li><p>Can you tell me about a difficult conversation you had recently? What made it difficult? How did you deliver the message?</p></li><li><p>How will you set expectations with me? How often will we revisit them?</p></li><li><p>Can you tell me about a decision you made recently? How did you communicate the thought process that went into making the decision?</p></li></ol><div><hr></div><p><em>&#8220;Empathy is about finding echoes of another person in yourself.&#8221; - Mohsin Hamid</em></p>]]></content:encoded></item><item><title><![CDATA[Saying Farewell To Being A Manager]]></title><description><![CDATA[Are you clear about the motivation behind it?]]></description><link>https://www.sidshankar.com/p/saying-farewell-to-being-a-manager</link><guid isPermaLink="false">https://www.sidshankar.com/p/saying-farewell-to-being-a-manager</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Thu, 27 Apr 2023 19:42:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F580d1933-9eb8-490e-b255-5bd07f7ea4f1_5184x3456.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pI5_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04b1273-7dc7-434e-bc8b-50f41d43f574_6000x4000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pI5_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04b1273-7dc7-434e-bc8b-50f41d43f574_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pI5_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04b1273-7dc7-434e-bc8b-50f41d43f574_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pI5_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04b1273-7dc7-434e-bc8b-50f41d43f574_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pI5_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04b1273-7dc7-434e-bc8b-50f41d43f574_6000x4000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pI5_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04b1273-7dc7-434e-bc8b-50f41d43f574_6000x4000.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a04b1273-7dc7-434e-bc8b-50f41d43f574_6000x4000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1072487,&quot;alt&quot;:&quot;A person that appears to be a blacksmith, in a metal working ship, forging hot and glowing metal on an anvil. They are holding a hammer with their right hand and are striking the hot metal piece.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A person that appears to be a blacksmith, in a metal working ship, forging hot and glowing metal on an anvil. They are holding a hammer with their right hand and are striking the hot metal piece." title="A person that appears to be a blacksmith, in a metal working ship, forging hot and glowing metal on an anvil. They are holding a hammer with their right hand and are striking the hot metal piece." srcset="https://substackcdn.com/image/fetch/$s_!pI5_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04b1273-7dc7-434e-bc8b-50f41d43f574_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pI5_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04b1273-7dc7-434e-bc8b-50f41d43f574_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pI5_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04b1273-7dc7-434e-bc8b-50f41d43f574_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pI5_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04b1273-7dc7-434e-bc8b-50f41d43f574_6000x4000.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@mlightbody?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Malcolm Lightbody</a> on <a href="https://unsplash.com/photos/gPRvTP0sZ2M?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>I have had numerous conversations over the years with friends and colleagues looking to move from Management to Individual Contributor (IC) roles. </p><p>This isn&#8217;t going to be a post listing all the &#8220;right&#8221; or &#8220;wrong&#8221; reasons for a Manager to IC transition. Nor do I want to talk about the merits of making the switch. You&#8217;ll find plenty of opinions and resources about the role switch online, often referred to as the <a href="https://charity.wtf/2017/05/11/the-engineer-manager-pendulum/">engineer-manager pendulum</a>. I made the transition from Manager to IC in 2018 myself (and then went back to being a Manager in 2019), but the mindset was one of moving <em>towards</em> an IC role as opposed to moving <em>away</em> from a management role, all to support some technical aspirations I had at the time.</p><p>Instead, I want to focus on a specific pattern I see (or hear about) when I speak to people in management roles considering the switch to an IC role. I often hear:</p><ul><li><p>&#8220;I miss the satisfaction of <em>shipping</em> code&#8221;</p></li><li><p>&#8220;I used to be able to tell <em>how much work I got done.</em>&#8221;</p></li><li><p>&#8220;This whole week I attended meetings, read documents and responded to a lot of questions! <em>I don&#8217;t think I could tell you what I produced.</em>&#8221;</p></li></ul><p>These sentiments might be expressed by someone who truly misses writing software, the accompanying state of flow, and the feeling of accomplishment from seeing software you wrote bring value to customers. </p><p><strong>However, it might also be that the person isn&#8217;t missing the act of writing software, but is instead missing </strong><em><strong>evidence of producing tangible and easily measurable outcomes and artifacts</strong></em><strong>.</strong></p><h3>What&#8217;s My Impact</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PK43!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F580d1933-9eb8-490e-b255-5bd07f7ea4f1_5184x3456.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PK43!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F580d1933-9eb8-490e-b255-5bd07f7ea4f1_5184x3456.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PK43!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F580d1933-9eb8-490e-b255-5bd07f7ea4f1_5184x3456.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PK43!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F580d1933-9eb8-490e-b255-5bd07f7ea4f1_5184x3456.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PK43!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F580d1933-9eb8-490e-b255-5bd07f7ea4f1_5184x3456.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PK43!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F580d1933-9eb8-490e-b255-5bd07f7ea4f1_5184x3456.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/580d1933-9eb8-490e-b255-5bd07f7ea4f1_5184x3456.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1667847,&quot;alt&quot;:&quot;An officer in dark blue or black uniform - possibly the captain - standing on the deck of a ship, looking upwards. They are possibly looking at the sky, or the mast of the ship. The sky behind them is overcast.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="An officer in dark blue or black uniform - possibly the captain - standing on the deck of a ship, looking upwards. They are possibly looking at the sky, or the mast of the ship. The sky behind them is overcast." title="An officer in dark blue or black uniform - possibly the captain - standing on the deck of a ship, looking upwards. They are possibly looking at the sky, or the mast of the ship. The sky behind them is overcast." srcset="https://substackcdn.com/image/fetch/$s_!PK43!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F580d1933-9eb8-490e-b255-5bd07f7ea4f1_5184x3456.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PK43!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F580d1933-9eb8-490e-b255-5bd07f7ea4f1_5184x3456.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PK43!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F580d1933-9eb8-490e-b255-5bd07f7ea4f1_5184x3456.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PK43!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F580d1933-9eb8-490e-b255-5bd07f7ea4f1_5184x3456.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@ourselp?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Philippe Oursel</a> on <a href="https://unsplash.com/photos/aW6KY6735Lw?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>As an IC, it can be easy to see impact via Pull Requests merged, new systems or components created or rearchitected, and value delivered to customers. <strong>How do you see and experience the impact of your work as a manager</strong>:</p><ul><li><p><strong>In the short and medium term</strong>, you might be asking - <em>What did I produce or reconfigure? How did the team / organization / customers tangibly gain from my work this week?</em></p></li><li><p><strong>Over the long term</strong>, you might be asking - <em>How does the current state of the team and technology tie back to decisions that I have made or supported? Exactly how has the team benefited from my presence, guidance and decision making over the past few months / years?</em></p></li></ul><p>If you are a manager considering a transition away from management, consider asking yourself:</p><div class="pullquote"><p><strong>&#8220;Am I feeling unfulfilled because I am having a hard time clearly visualizing and understanding my impact?&#8221;</strong></p></div><p>Only you can answer that question for yourself, possibly with some help from candid conversations with your manager, and with members of the team you support. You owe it to yourself to think deeply about this question. It would be a shame for you (and your team) to lose out on aspects of management that you love, all because you couldn&#8217;t (or did not have the support to) clearly picture the fruits of your labour.</p><div><hr></div>]]></content:encoded></item><item><title><![CDATA[What I intend to write about]]></title><description><![CDATA[And why you might care]]></description><link>https://www.sidshankar.com/p/coming-soon</link><guid isPermaLink="false">https://www.sidshankar.com/p/coming-soon</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Wed, 19 Apr 2023 01:42:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!saXo!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c017050-d221-413d-8d09-b30efbbe9e42_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I enjoy writing, although admittedly, I haven&#8217;t done a lot of it in public view. I can take the time to think through and express myself with a depth that I rarely achieve conversationally. In that sense, it has a much higher degree of fidelity with my thoughts, while also serving as a medium where I can replay my thoughts to myself and gauge their quality.</p><p>The &#8220;replay my thoughts&#8221; and &#8220;gauge their quality&#8221; bits are therefore the biggest motivators behind another serious attempt at regular writing. </p><p>I also just turned 40. The older I get, the more I realize how often I tap into and rely on my unconscious mind, and so the responsible thing to do seems to be to explore and surface more of my unconscious into my conscious. </p><p>This is particularly important to me as a manager, as someone who has been, is, and will hopefully continue to be responsible for serving my team(s) and the organization(s) I work with. </p><p>I expect to write about my experiences and thoughts, around my role as an Engineering Manager in the software industry, towards the goal of leading more consciously, thoughtfully and competently. </p><p>If you think this sounds interesting, I&#8217;d welcome the company on the journey. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sidshankar.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sidshankar.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Forcing Functions For Great Pull Requests]]></title><description><![CDATA[Why some development teams might naturally write great PRs]]></description><link>https://www.sidshankar.com/p/forcing-functions-for-great-pull-requests-d7b11989f43b</link><guid isPermaLink="false">https://www.sidshankar.com/p/forcing-functions-for-great-pull-requests-d7b11989f43b</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Wed, 07 Sep 2022 02:16:19 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/1024/1*7-eVAqLMZ4sXANRA6RTX1w.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4>Why some development teams might naturally write great&nbsp;PRs</h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*7-eVAqLMZ4sXANRA6RTX1w.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*7-eVAqLMZ4sXANRA6RTX1w.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*7-eVAqLMZ4sXANRA6RTX1w.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*7-eVAqLMZ4sXANRA6RTX1w.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*7-eVAqLMZ4sXANRA6RTX1w.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*7-eVAqLMZ4sXANRA6RTX1w.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*7-eVAqLMZ4sXANRA6RTX1w.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*7-eVAqLMZ4sXANRA6RTX1w.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*7-eVAqLMZ4sXANRA6RTX1w.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*7-eVAqLMZ4sXANRA6RTX1w.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*7-eVAqLMZ4sXANRA6RTX1w.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@theo_aartsma?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Theo Aartsma</a> on&nbsp;<a href="https://unsplash.com/s/photos/historian?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>There&#8217;s a lot said online about <a href="https://frontside.com/blog/2020-04-15-7-reasons-for-good-pull-request-descriptions/">why</a> we should craft good <a href="https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests">pull requests</a>, and <a href="https://github.blog/2015-01-21-how-to-write-the-perfect-pull-request/">how</a> to do it. Despite how well accepted this seems to be (bordering on &#8220;common knowledge&#8221;), I haven&#8217;t observed this to be common practice.</p><p>I&#8217;ve been thinking about this a lot lately, especially since I begin my journey on a new team, at a new company&#8202;&#8212;&#8202;and since my previous team and current team have very different PR writing cultures. This got me to&nbsp;ask:</p><blockquote><p>Why is it that we consider writing great PRs to be obviously beneficial, and yet we do not see the expected widespread adoption in practice?</p></blockquote><p>Reflecting on my own experiences, I&#8217;ll offer my thoughts on some <a href="https://en.wikipedia.org/wiki/Behavior-shaping_constraint">forcing functions</a> that might naturally incline development teams towards producing higher-quality PRs.</p><p>My criterion for high-quality PRs is quite simple (but not&nbsp;easy):</p><ol><li><p>The team reviewing the PR is easily able to glean the context for the work, this includes newish team members (2+ months)&#8202;&#8212;&#8202;At a minimum, this should include information about why we are doing this work, how it is being accomplished, and being explicit about risks and assumptions.</p></li><li><p>The work itself has been broken down and structured in a way that makes absorbing the entirety of the changes easy within a relatively short time window (1 hour at the most). Usually, this manifests as well-structured commits that build on each other and tell a&nbsp;story.</p></li></ol><h3>The current state of&nbsp;things</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*rYqRn7gYzBeIQFyZ48UbhA.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*rYqRn7gYzBeIQFyZ48UbhA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*rYqRn7gYzBeIQFyZ48UbhA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*rYqRn7gYzBeIQFyZ48UbhA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*rYqRn7gYzBeIQFyZ48UbhA.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*rYqRn7gYzBeIQFyZ48UbhA.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*rYqRn7gYzBeIQFyZ48UbhA.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*rYqRn7gYzBeIQFyZ48UbhA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*rYqRn7gYzBeIQFyZ48UbhA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*rYqRn7gYzBeIQFyZ48UbhA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*rYqRn7gYzBeIQFyZ48UbhA.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/es/@benofthenorth?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Ben Griffiths</a> on&nbsp;<a href="https://unsplash.com/s/photos/theory-practice?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>There&#8217;s no shortage of content on the internet advocating for writing &#8220;good&#8221; pull requests. Search&nbsp;for:</p><p><em>&#8220;Why should I write a good pull request&#8221;</em> (365 million results), or</p><p><em>&#8220;How to write a good pull request&#8221; (</em>601 million&nbsp;results)</p><p>And you&#8217;ll find an endless supply of opinions and blogs about the benefits of writing good pull requests, and even some guidance around what a good pull request might look&nbsp;like.</p><p>For the &#8220;why&#8221; in particular, the themes across the articles boil down to the following:</p><ul><li><p>You (the PR author) want to make it easy for the reviewers to understand your changes and help you ship those&nbsp;changes.</p></li><li><p>Well-written PRs serve as documentation for future developers (including future you!) around the rationale for certain changes, or the approach taken to introduce them i.e. capturing context.</p></li><li><p>A well-written PR provides an opportunity to rationalize and justify your changes, making your thinking clear to others, and giving people an opportunity to challenge your rationale for the changes or the approach you have&nbsp;chosen.</p></li></ul><p>This all makes sense in theory, and&nbsp;yet&#8230;</p><p>Despite these benefits being widely known and the &#8220;how&#8221; made easier through mechanisms like PR templates, well-crafted PRs are anything but ubiquitous.</p><h3>Empirical Observations</h3><p>In my career so far, I&#8217;ve seen some teams naturally gravitate towards well-crafted PRs, and other teams adopt them begrudgingly at best, seeing it as &#8220;process&#8221; and &#8220;paperwork&#8221; that distracts them from getting their code&nbsp;shipped.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*zKTwnH3pNoj9Eya_7j1hTw.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*zKTwnH3pNoj9Eya_7j1hTw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*zKTwnH3pNoj9Eya_7j1hTw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*zKTwnH3pNoj9Eya_7j1hTw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*zKTwnH3pNoj9Eya_7j1hTw.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*zKTwnH3pNoj9Eya_7j1hTw.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*zKTwnH3pNoj9Eya_7j1hTw.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*zKTwnH3pNoj9Eya_7j1hTw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*zKTwnH3pNoj9Eya_7j1hTw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*zKTwnH3pNoj9Eya_7j1hTw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*zKTwnH3pNoj9Eya_7j1hTw.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@vladhilitanu?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Vlad Hilitanu</a> on&nbsp;<a href="https://unsplash.com/s/photos/lego-team?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>The teams that take pains to craft good PRs understand the theoretical benefits, <em>but are often subject to subtle influences (behavior shaping tendencies a.k.a forcing functions) that sustain the practice of writing great PRs until it becomes a part of the team&#8217;s&nbsp;DNA.</em></p><p>Here are some forcing functions that I have observed and experienced:</p><ol><li><p>A team with varying experience/skill levels around the language, tooling, or framework being used to deliver the work. Varying levels of expertise force the simplification of the presentation (the PR!) of that&nbsp;work.</p></li><li><p>Closely related to #1, varying levels of familiarity with the codebase/systems being changed. Everyone on the team may be on an even footing with their technical chops, but they don&#8217;t all understand every part of the codebase, therefore forcing the change to be explained and presented well before being merged&nbsp;in.</p></li><li><p>New teams, where team members don&#8217;t know each other very well (yet), result in people putting a lot of effort into clearly communicating the &#8220;why&#8221; and &#8220;how&#8221; of the changes they are trying to&nbsp;ship.</p></li><li><p>Closely related to #3, a team that is changing often (people coming onboard, as others leave the company or transfer to other teams). This incentivizes well-written PRs as a mechanism to capture and transfer context. Situations like this might be common in companies that encourage high mobility, or the nature of the team necessitates a relatively short&nbsp;tenure.</p></li><li><p>Some teams work with many stakeholders that need to know the context of the work being shipped but aren&#8217;t experts in the codebase or technicalities of the work. Product Managers, Designers, and Engineers from adjacent teams contribute to the codebase via inner-sourcing efforts.</p></li><li><p>The codebase has history or context, such that the commits in a PR by themselves are insufficient to tell the full story. OR the codebase represents a system that has complex interactions with other systems, and the change being made must be coordinated with changes to those&nbsp;systems.</p></li></ol><p>What other forcing functions have you seen? Are you an Engineering Manager or team hoping to improve the PR writing culture on your team, and could you leverage any of these forces to shift your team&#8217;s culture and practices around&nbsp;PRs?</p><h3>Resources</h3><ol><li><p>About Pull Requests: <a href="https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests">https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests</a></p></li><li><p>Forcing Functions: <a href="https://en.wikipedia.org/wiki/Behavior-shaping_constraint">https://en.wikipedia.org/wiki/Behavior-shaping_constraint</a></p></li><li><p>7 Reasons For Good Pull Request Descriptions&#8202;&#8212;&#8202;<a href="https://frontside.com/blog/2020-04-15-7-reasons-for-good-pull-request-descriptions/">https://frontside.com/blog/2020-04-15-7-reasons-for-good-pull-request-descriptions/</a></p></li><li><p>How To Write The Perfect Pull Request&#8202;&#8212;&#8202;<a href="https://github.blog/2015-01-21-how-to-write-the-perfect-pull-request/">https://github.blog/2015-01-21-how-to-write-the-perfect-pull-request/</a></p></li></ol>]]></content:encoded></item><item><title><![CDATA[9 Things Every New Engineering Manager Should Know]]></title><description><![CDATA[Being an intentional engineering manager]]></description><link>https://www.sidshankar.com/p/9-things-every-new-engineering-manager-should-know-773b9c3b9667</link><guid isPermaLink="false">https://www.sidshankar.com/p/9-things-every-new-engineering-manager-should-know-773b9c3b9667</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Wed, 10 Feb 2021 17:53:41 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/1024/1*yXHGdP_SdshMhYq2JI1xBg.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4>Being an intentional engineering manager</h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*yXHGdP_SdshMhYq2JI1xBg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*yXHGdP_SdshMhYq2JI1xBg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*yXHGdP_SdshMhYq2JI1xBg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*yXHGdP_SdshMhYq2JI1xBg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*yXHGdP_SdshMhYq2JI1xBg.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*yXHGdP_SdshMhYq2JI1xBg.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*yXHGdP_SdshMhYq2JI1xBg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A person meditating on a mat outside.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A person meditating on a mat outside." title="A person meditating on a mat outside." srcset="https://cdn-images-1.medium.com/max/1024/1*yXHGdP_SdshMhYq2JI1xBg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*yXHGdP_SdshMhYq2JI1xBg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*yXHGdP_SdshMhYq2JI1xBg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*yXHGdP_SdshMhYq2JI1xBg.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@jareddrice?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Jared Rice</a> on&nbsp;<a href="https://unsplash.com/s/photos/meditate?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>I use the term <em>intentional manager</em> because a lot of engineers find themselves promoted into this position and end up winging it. This can be a result&nbsp;of:</p><ul><li><p>Organizations not providing clarity around exactly what&#8217;s expected of engineering managers</p></li><li><p>Previous managers not having demonstrated intentional and conscious leadership, causing a perpetuation of the cycle of zombie&nbsp;managers</p></li><li><p>Newly promoted managers not realizing they now need to make the time to more consciously understand and operate in the&nbsp;role</p></li></ul><p>It&#8217;s unfortunately all too easy to fall into the trap of being reactive in this role&#8202;&#8212;&#8202;to feel like the role is happening <em>to you</em> as opposed to feeling in control of your time and priorities.</p><p>A small percentage of those promoted into engineering management might be self-aware enough to quickly understand the nuances of the role shift, but that&#8217;s more the exception than the&nbsp;norm.</p><p>Many new managers end up leading unconsciously&#8202;&#8212;&#8202;reacting to situations, instead of working in the role with intent and&nbsp;clarity.</p><p>Here are a few things I wish I knew when I first started out as an engineering manager.</p><h3>Allow Yourself to Be Interruptible</h3><p>I&#8217;m putting (what&#8217;s likely) the most controversial statement of this article on top! Let me explain: As a successful individual contributor, you were usually only accountable to your peers and your manager. Apart from a few meetings, you could expect to easily make room for long stretches of deep work&#8202;&#8212;&#8202;i.e., uninterrupted time gaining traction on a&nbsp;task.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*kSw-njRsFwVlqbTElIX8oQ.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*kSw-njRsFwVlqbTElIX8oQ.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*kSw-njRsFwVlqbTElIX8oQ.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*kSw-njRsFwVlqbTElIX8oQ.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*kSw-njRsFwVlqbTElIX8oQ.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*kSw-njRsFwVlqbTElIX8oQ.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*kSw-njRsFwVlqbTElIX8oQ.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A pair of eyeglasses on a table, with computer monitors displaying code in front of them.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A pair of eyeglasses on a table, with computer monitors displaying code in front of them." title="A pair of eyeglasses on a table, with computer monitors displaying code in front of them." srcset="https://cdn-images-1.medium.com/max/1024/1*kSw-njRsFwVlqbTElIX8oQ.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*kSw-njRsFwVlqbTElIX8oQ.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*kSw-njRsFwVlqbTElIX8oQ.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*kSw-njRsFwVlqbTElIX8oQ.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@ikukevk?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Kevin Ku</a> on&nbsp;<a href="https://unsplash.com/s/photos/focus?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>As a manager, you have 360-degree accountability&#8202;&#8212;&#8202;to your peers, to your direct reports, to your manager, and if you&#8217;re working within a product group, then also to the product manager and product designer on your&nbsp;team.</p><p>It&#8217;d be unusual for you not to be interrupted! It&#8217;d be especially unfair to your direct reports if you didn&#8217;t make yourself available when they were&nbsp;blocked.</p><p>This doesn&#8217;t mean you should shy away from blocking off deep-work time on your calendar or unplugging from Slack&#8202;&#8212;&#8202;just do it sparingly and on the tasks that truly need your undivided attention.</p><h3>Your Success Is Measured by How Effectively You Enable Your&nbsp;Team:</h3><p>Andy Grove said it best in <a href="https://www.goodreads.com/book/show/324750.High_Output_Management">&#8220;High Output Management&#8221;</a>:</p><blockquote><p>&#8220;A manager&#8217;s output = the <strong>output of his organization</strong> + the <strong>output of the neighboring organizations</strong> under his influence.&#8221;</p></blockquote><p>You&#8217;ll find success when you consistently find and focus on the highest-leverage tasks at any&nbsp;time.</p><p>As a manager, the highest-leverage tasks are often the ones that unblock, enable, or multiply the productivity of your&nbsp;team.</p><p>Individual contributors promoted into a manager role will often fall into the trap of thinking that the manager role requires them to be a 2x (or maybe 5x/10x) version of their individual contributor), and this never ends&nbsp;well.</p><h3>You&#8217;re Not Necessarily the Best Engineer on the&nbsp;Team</h3><p>Note that I say<em> not necessarily</em>. You might be the best engineer on the team at any given moment in time, but this won&#8217;t always be&nbsp;true.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*YW_HVAcOenCnwi8O_8T4mw.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*YW_HVAcOenCnwi8O_8T4mw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*YW_HVAcOenCnwi8O_8T4mw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*YW_HVAcOenCnwi8O_8T4mw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*YW_HVAcOenCnwi8O_8T4mw.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*YW_HVAcOenCnwi8O_8T4mw.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*YW_HVAcOenCnwi8O_8T4mw.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A team of professional cyclists in a race.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A team of professional cyclists in a race." title="A team of professional cyclists in a race." srcset="https://cdn-images-1.medium.com/max/1024/1*YW_HVAcOenCnwi8O_8T4mw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*YW_HVAcOenCnwi8O_8T4mw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*YW_HVAcOenCnwi8O_8T4mw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*YW_HVAcOenCnwi8O_8T4mw.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@paolocandelo?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">paolo candelo</a> on&nbsp;<a href="https://unsplash.com/s/photos/race?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>If you have any insecurities about not being the best engineer on the team or feel your imposter syndrome ratcheting up because you think you need to have all the answers, then it&#8217;s worth taking the time to address the root of these insecurities first.</p><p>The expectation isn&#8217;t that you&#8217;ll have all the answers, but you&nbsp;should:</p><ul><li><p>Be willing to help your team uncover the right questions to ask and work with them to discover the&nbsp;answers</p></li><li><p>Look to hire engineers who will compensate for your technical blind&nbsp;spots</p></li></ul><h3>Try Not To Take On Work That&#8217;s on the Critical&nbsp;Path</h3><p>If your job is to be interruptible and available and you&#8217;re therefore unlikely to get fewer bursts of time for deep work, then you should avoid taking on tasks that are time critical. This is particularly true if the slow completion (or noncompletion) of that task will end up blocking your&nbsp;team.</p><p>This also ties in with acknowledging that you may not be the best engineer on the team. Why? Because as a newly promoted manager, you may feel the need to prove yourself by taking on a difficult or critical task, only to discover you don&#8217;t have the time needed to dedicate the necessary cycles of deep work toward&nbsp;it.</p><p>The end result may be one or more of the following:</p><ul><li><p>Frustration for your teammates</p></li><li><p>Falling behind on the&nbsp;schedule</p></li><li><p>A severely bruised&nbsp;ego</p></li><li><p>Burnout (because you&#8217;re effectively trying to do two&nbsp;jobs)</p></li></ul><h3>Model a Healthy Relationship With&nbsp;Work</h3><p>Speaking of burnout, I can&#8217;t overstate the importance of modeling healthy work&nbsp;habits.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*BPiWVZ7OKGTrC8mpO9ZUCw.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*BPiWVZ7OKGTrC8mpO9ZUCw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*BPiWVZ7OKGTrC8mpO9ZUCw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*BPiWVZ7OKGTrC8mpO9ZUCw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*BPiWVZ7OKGTrC8mpO9ZUCw.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*BPiWVZ7OKGTrC8mpO9ZUCw.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*BPiWVZ7OKGTrC8mpO9ZUCw.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Children playing with a ball in a grove.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Children playing with a ball in a grove." title="Children playing with a ball in a grove." srcset="https://cdn-images-1.medium.com/max/1024/1*BPiWVZ7OKGTrC8mpO9ZUCw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*BPiWVZ7OKGTrC8mpO9ZUCw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*BPiWVZ7OKGTrC8mpO9ZUCw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*BPiWVZ7OKGTrC8mpO9ZUCw.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@robbie36?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Robert Collins</a> on&nbsp;<a href="https://unsplash.com/s/photos/happy-family?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>This includes things&nbsp;like:</p><ul><li><p>Modeling the healthy use of personal time off from&nbsp;work</p></li><li><p>Avoid sending communication or responding to message after hours. As a manager sending out communication after hours, some of your direct reports may experience pressure to respond to your after-hours messages quickly, instead of just waiting to respond the next work&nbsp;day.</p></li><li><p>Don&#8217;t take yourself too seriously. Be that manager with a sense of humor, willing to see the lighter side of&nbsp;things.</p></li><li><p>Sometimes things will go wrong at work. Your demeanor and response to the situation sets the tone for the rest of the team. Mistakes are rarely catastrophic or career ending&#8202;&#8212;&#8202;don&#8217;t let your response to the situation indicate otherwise.</p></li></ul><h3>Actively Think About Career Progression and Succession Planning for Your Direct&nbsp;Reports</h3><p>You&#8217;re now responsible for helping to shape the careers of your direct reports, in addition to managing your own&nbsp;career.</p><p>Many new managers ignore (or are unaware of) this responsibility. It&#8217;s often because their own managers didn&#8217;t have conversations with them about navigating their career, and therefore they have no reference point or framework within which to have this conversation with their own direct&nbsp;reports.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*mYaIekI7N6OZZ7bGBrElHA.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*mYaIekI7N6OZZ7bGBrElHA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*mYaIekI7N6OZZ7bGBrElHA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*mYaIekI7N6OZZ7bGBrElHA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*mYaIekI7N6OZZ7bGBrElHA.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*mYaIekI7N6OZZ7bGBrElHA.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*mYaIekI7N6OZZ7bGBrElHA.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A man dressed in a suit, at times square&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A man dressed in a suit, at times square" title="A man dressed in a suit, at times square" srcset="https://cdn-images-1.medium.com/max/1024/1*mYaIekI7N6OZZ7bGBrElHA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*mYaIekI7N6OZZ7bGBrElHA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*mYaIekI7N6OZZ7bGBrElHA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*mYaIekI7N6OZZ7bGBrElHA.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@saulomohana?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Saulo Mohana</a> on&nbsp;<a href="https://unsplash.com/s/photos/career-planning?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>This can also be difficult if you haven&#8217;t put in the work to do some medium-term planning (at the very least) for your own&nbsp;career.</p><p>Any thinking around career growth should also include thinking about succession planning&#8202;&#8212;&#8202;i.e., if a direct report were to get promoted, move to a different team, or leave the company, do you already have someone prepared to take over their responsibilities? This is something too few managers actively plan for, and it&#8217;s usually because they don&#8217;t know how to approach the&nbsp;topic.</p><p>Two books I personally found useful&#8202;&#8212;&#8202;that helped me build a framework to have these conversations&#8202;&#8212;&#8202;are:</p><ol><li><p><a href="https://www.oreilly.com/library/view/the-managers-path/9781491973882/">&#8220;The Manager&#8217;s Path</a>&#8221; by <a href="https://medium.com/u/12421a4f856">Camille&nbsp;Fournier</a></p></li><li><p><a href="https://lethain.com/elegant-puzzle/">&#8220;An Elegant Puzzle: Systems of Engineering Management</a>&#8221; by <a href="https://medium.com/u/57d893a773f0">Will&nbsp;Larson</a></p></li></ol><h3>Come Prepared for Your 1-on-1 Conversations</h3><p>On the more general topic of 1-on-1 conversations, the most important advice I can offer is: Don&#8217;t show up unprepared!</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*3O8evb4CFbM3vzNJDSEJSg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*3O8evb4CFbM3vzNJDSEJSg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*3O8evb4CFbM3vzNJDSEJSg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*3O8evb4CFbM3vzNJDSEJSg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*3O8evb4CFbM3vzNJDSEJSg.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*3O8evb4CFbM3vzNJDSEJSg.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*3O8evb4CFbM3vzNJDSEJSg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Two professional women, having a conversation while seated at a table.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Two professional women, having a conversation while seated at a table." title="Two professional women, having a conversation while seated at a table." srcset="https://cdn-images-1.medium.com/max/1024/1*3O8evb4CFbM3vzNJDSEJSg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*3O8evb4CFbM3vzNJDSEJSg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*3O8evb4CFbM3vzNJDSEJSg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*3O8evb4CFbM3vzNJDSEJSg.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@wocintechchat?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Christina @ wocintechchat.com</a> on&nbsp;<a href="https://unsplash.com/s/photos/conversation?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><ul><li><p>Start by making sure there&#8217;s a recurring meeting</p></li><li><p>Don&#8217;t make cancellations/rescheduling a frequent habit. As a rule of thumb, I&#8217;ll never cancel successive 1-on-1 meetings.</p></li><li><p>Make the time before the meeting to think about any discussion points you want to bring up, and encourage your direct reports to do the&nbsp;same</p></li><li><p>Make the 1-on-1 about the <em>whole</em> person&#8202;&#8212;&#8202;i.e., in addition to discussing work and career issues, use the time to also understand how your direct report is doing outside of work. Take interest in their lives, and get to know them&nbsp;better.</p></li><li><p>Use this time and space to offer both appreciation and course-correcting feedback. As an employee, there are few things worse than having a manager who only focuses on areas of improvement or who waits until the end-of-the-year performance review to offer any critical feedback.</p></li><li><p>Don&#8217;t make the meeting only about <em>giving</em> feedback, but ask specific questions that elicit feedback for yourself too! Try not to make it just a &#8220;How am I doing?&#8221; but more like: &#8220;That cross-team project meeting I ran last week felt a little chaotic. What do you think I could have done better to produce a more organized meeting?&#8221;</p></li></ul><h3>Make the Time to Think About and Develop Your&nbsp;Craft</h3><p>As an individual contributor, you&#8217;ve spent years honing your technical skills. If you were very intentional about developing your craft as a software engineer, shouldn&#8217;t you do the same as a&nbsp;manager?</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*cQZ7xhF_A5O_yUm0ZeapDA.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*cQZ7xhF_A5O_yUm0ZeapDA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*cQZ7xhF_A5O_yUm0ZeapDA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*cQZ7xhF_A5O_yUm0ZeapDA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*cQZ7xhF_A5O_yUm0ZeapDA.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*cQZ7xhF_A5O_yUm0ZeapDA.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*cQZ7xhF_A5O_yUm0ZeapDA.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A closeup picture of wood being worked on with woodworking tools&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A closeup picture of wood being worked on with woodworking tools" title="A closeup picture of wood being worked on with woodworking tools" srcset="https://cdn-images-1.medium.com/max/1024/1*cQZ7xhF_A5O_yUm0ZeapDA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*cQZ7xhF_A5O_yUm0ZeapDA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*cQZ7xhF_A5O_yUm0ZeapDA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*cQZ7xhF_A5O_yUm0ZeapDA.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@drscythe?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Dominik Scythe</a> on&nbsp;<a href="https://unsplash.com/s/photos/craft?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>Important skills to develop&nbsp;include:</p><ul><li><p>Holding great&nbsp;1-on-1s</p></li><li><p>Learning to&nbsp;coach</p></li><li><p>Using the right leadership tactics depending on the situation (situational leadership)</p></li><li><p>Connecting with your peers, both within and outside your organization, to continuously evolve as a&nbsp;manager</p></li><li><p>Investing in the time to digest podcasts/books/blog posts about engineering-management situations and principles</p></li><li><p>Building the mental muscles to zoom in on the details of technical work or zoom out to see the big picture when necessary</p></li></ul><h3>The Ability to Ask for Help Is a Job Requirement</h3><p>A lot of things I&#8217;ve mentioned above&#8202;&#8212;&#8202;1&#8211;1 discussions, career planning, becoming a better coach, having difficult conversations, figuring out how to focus on your top priorities, etc&nbsp;.&#8212; will likely be new to you! And yet, people think of their elevation into management as a sign they should have all the answers or know enough to not need any assistance.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*Puv0mgYE_C_-Rip1vbqFeA.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*Puv0mgYE_C_-Rip1vbqFeA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*Puv0mgYE_C_-Rip1vbqFeA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*Puv0mgYE_C_-Rip1vbqFeA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*Puv0mgYE_C_-Rip1vbqFeA.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*Puv0mgYE_C_-Rip1vbqFeA.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*Puv0mgYE_C_-Rip1vbqFeA.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A tree with bowed branches, being supported by a decorative supporting implement.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A tree with bowed branches, being supported by a decorative supporting implement." title="A tree with bowed branches, being supported by a decorative supporting implement." srcset="https://cdn-images-1.medium.com/max/1024/1*Puv0mgYE_C_-Rip1vbqFeA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*Puv0mgYE_C_-Rip1vbqFeA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*Puv0mgYE_C_-Rip1vbqFeA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*Puv0mgYE_C_-Rip1vbqFeA.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@finleydesign?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Neil Thomas</a> on&nbsp;<a href="https://unsplash.com/s/photos/help?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>This couldn&#8217;t be further from the truth. Knowing when to ask for help may be one of the most important skills you develop in this role, and you shouldn&#8217;t think you&#8217;re somehow a lesser leader because you need to lean on&nbsp;others.</p><h3>Conclusion</h3><p>Paraphrasing <a href="https://en.wikipedia.org/wiki/Andrew_Grove">Andy Grove</a> of Intel&nbsp;fame:</p><blockquote><p>Managers are the muscle and bone of an organization.</p></blockquote><p>Your role is critical to the success of the organization, and it&#8217;s important for you to make the time to discover and understand it well so you can put your best foot&nbsp;forward.</p><p>You&#8217;re, in effect, a mini-CEO of your own suborganization within the company. Bringing both mindfulness and intent to the role is critical to the team&#8217;s success&#8202;&#8212;&#8202;and ultimately to your&nbsp;success.</p><p>Thanks for&nbsp;reading!</p><h3>References</h3><ol><li><p><a href="https://www.oreilly.com/library/view/the-managers-path/9781491973882/">&#8220;The Manager&#8217;s Path</a>&#8221; by <a href="https://medium.com/u/12421a4f856">Camille&nbsp;Fournier</a></p></li><li><p><a href="https://lethain.com/elegant-puzzle/">&#8220;An Elegant Puzzle: Systems of Engineering Management</a>&#8221; by <a href="https://medium.com/u/57d893a773f0">Will&nbsp;Larson</a></p></li><li><p>About <a href="https://en.wikipedia.org/wiki/Andrew_Grove">Andy&nbsp;Grove</a></p></li><li><p><a href="https://www.goodreads.com/book/show/324750.High_Output_Management">&#8220;High Output Management</a>&#8221; by Andy&nbsp;Grove</p></li></ol>]]></content:encoded></item><item><title><![CDATA[My H-1B Story]]></title><description><![CDATA[A reflection of my time in the United States]]></description><link>https://www.sidshankar.com/p/my-h-1b-story-bfb42e3a89</link><guid isPermaLink="false">https://www.sidshankar.com/p/my-h-1b-story-bfb42e3a89</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Thu, 23 Jul 2020 02:15:31 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/1024/1*riU9XZ7fDIBl8ArVVSHBKA.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4>A reflection of my time in the United&nbsp;States</h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*riU9XZ7fDIBl8ArVVSHBKA.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*riU9XZ7fDIBl8ArVVSHBKA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*riU9XZ7fDIBl8ArVVSHBKA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*riU9XZ7fDIBl8ArVVSHBKA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*riU9XZ7fDIBl8ArVVSHBKA.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*riU9XZ7fDIBl8ArVVSHBKA.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*riU9XZ7fDIBl8ArVVSHBKA.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*riU9XZ7fDIBl8ArVVSHBKA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*riU9XZ7fDIBl8ArVVSHBKA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*riU9XZ7fDIBl8ArVVSHBKA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*riU9XZ7fDIBl8ArVVSHBKA.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@themorganlane?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Morgan Lane</a> on&nbsp;<a href="https://unsplash.com/s/photos/us-globe?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>As the <a href="https://www.nytimes.com/2020/06/22/us/politics/trump-h1b-work-visas.html">news of the executive order on H-1B visas</a> broke a few days ago, as a former H-1B visa holder, I reflected on why I left the US almost two years ago. This post is a reflection of my time spent in the US: As a dependent of an H-1B visa holder (H4), as an international student (F1), and then as a professional (H-1B).</p><h4>First Contact</h4><p>A little history (and an interesting anecdote): My dad was also a H1B holder in the IT industry. When I was 8 years old, we moved to Fremont, California from New Delhi, India in the spring of 1992. We returned shortly after in the summer of 1993. My mom, sister and I were on a <strong>H4 visa</strong> as his dependents at the&nbsp;time.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/0*V3vhEl2bkYxlB4-F" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/0*V3vhEl2bkYxlB4-F 424w, https://cdn-images-1.medium.com/max/1024/0*V3vhEl2bkYxlB4-F 848w, https://cdn-images-1.medium.com/max/1024/0*V3vhEl2bkYxlB4-F 1272w, https://cdn-images-1.medium.com/max/1024/0*V3vhEl2bkYxlB4-F 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/0*V3vhEl2bkYxlB4-F" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/0*V3vhEl2bkYxlB4-F&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/0*V3vhEl2bkYxlB4-F 424w, https://cdn-images-1.medium.com/max/1024/0*V3vhEl2bkYxlB4-F 848w, https://cdn-images-1.medium.com/max/1024/0*V3vhEl2bkYxlB4-F 1272w, https://cdn-images-1.medium.com/max/1024/0*V3vhEl2bkYxlB4-F 1456w" sizes="100vw"></picture><div></div></div></a><figcaption class="image-caption">My dad looking 90&#8217;s&nbsp;cool!</figcaption></figure></div><p>In that relatively short time, my sister and I went to public school in Fremont, we made friends, and traveled the country with my parents (California, Nevada, Michigan and New&nbsp;York).</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/0*M8BkqijsGh_KKae6" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/0*M8BkqijsGh_KKae6 424w, https://cdn-images-1.medium.com/max/1024/0*M8BkqijsGh_KKae6 848w, https://cdn-images-1.medium.com/max/1024/0*M8BkqijsGh_KKae6 1272w, https://cdn-images-1.medium.com/max/1024/0*M8BkqijsGh_KKae6 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/0*M8BkqijsGh_KKae6" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/0*M8BkqijsGh_KKae6&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/0*M8BkqijsGh_KKae6 424w, https://cdn-images-1.medium.com/max/1024/0*M8BkqijsGh_KKae6 848w, https://cdn-images-1.medium.com/max/1024/0*M8BkqijsGh_KKae6 1272w, https://cdn-images-1.medium.com/max/1024/0*M8BkqijsGh_KKae6 1456w" sizes="100vw"></picture><div></div></div></a><figcaption class="image-caption">With my dad at Lake Tahoe, California.</figcaption></figure></div><p>Even at the age of 8, it felt like this move abroad had dramatically increased the size of the world in my mind. Moving to a new country, to a new home, going to a new school, meeting people who looked very different from me, and having a million other new experiences felt daunting at times, but it mostly felt like an adventure.</p><p>That year-and-a-half felt both infinitely long, and fleetingly short. The memories are etched in my mind in rich&nbsp;detail.</p><p>And then, just when it felt like we were starting to find our rhythm, we left and moved back to India. The transition back to the Indian school system was gruelingly difficult. For starters, the K1&#8211;8 curriculum in the US is substantially easier than the equivalent curriculum in India. While this made the transition from India to the US extremely easy, the transition back was a nightmare, because I had missed the entire Indian grade 3 curriculum, and was playing catch-up through most of grade 4 and&nbsp;5.</p><p>I also had to re-learn reading and writing Hindi. Almost 2 years of no practice reading and writing it at that age, meant I had forgotten it. On top of catching up in general, having to re-learn a language was a recipe for months of tear-filled evenings and after-school work.</p><p>For my sister in Grade 8, this transition was even&nbsp;harder.</p><h4>Returning for Graduate&nbsp;School</h4><p>In 2006, I arrived back in the US after 13 years, on an F1 (student) visa to pursue a Masters Degree in Electrical Engineering at the University of Michigan, Ann&nbsp;Arbor.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/0*qCIur39a7EsEem5J" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/0*qCIur39a7EsEem5J 424w, https://cdn-images-1.medium.com/max/800/0*qCIur39a7EsEem5J 848w, https://cdn-images-1.medium.com/max/800/0*qCIur39a7EsEem5J 1272w, https://cdn-images-1.medium.com/max/800/0*qCIur39a7EsEem5J 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/0*qCIur39a7EsEem5J" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/0*qCIur39a7EsEem5J&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/800/0*qCIur39a7EsEem5J 424w, https://cdn-images-1.medium.com/max/800/0*qCIur39a7EsEem5J 848w, https://cdn-images-1.medium.com/max/800/0*qCIur39a7EsEem5J 1272w, https://cdn-images-1.medium.com/max/800/0*qCIur39a7EsEem5J 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Me, at the University of Michigan Electrical Engineering building (North Campus), Fall&nbsp;2006</figcaption></figure></div><p>Tuition fees as an international student at the University of Michigan weren&#8217;t cheap: $32,000 a year. While I did have admission offers from 3 other US universities, none of them were substantially cheaper. With Michigan being a top school, I wanted to challenge myself by studying with some of the brightest students from around the&nbsp;world.</p><p>And so the choice was&nbsp;made.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/0*tW8Kb5dbbaLwNTZe" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/0*tW8Kb5dbbaLwNTZe 424w, https://cdn-images-1.medium.com/max/800/0*tW8Kb5dbbaLwNTZe 848w, https://cdn-images-1.medium.com/max/800/0*tW8Kb5dbbaLwNTZe 1272w, https://cdn-images-1.medium.com/max/800/0*tW8Kb5dbbaLwNTZe 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/0*tW8Kb5dbbaLwNTZe" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/0*tW8Kb5dbbaLwNTZe&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/800/0*tW8Kb5dbbaLwNTZe 424w, https://cdn-images-1.medium.com/max/800/0*tW8Kb5dbbaLwNTZe 848w, https://cdn-images-1.medium.com/max/800/0*tW8Kb5dbbaLwNTZe 1272w, https://cdn-images-1.medium.com/max/800/0*tW8Kb5dbbaLwNTZe 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>My father paid for my first semester through a bank loan with our house as guaranty. My second semester was paid for with a private loan in the US, for which I had a US citizen co-signer, an ex-colleague of my dad (to whom I will forever be grateful).</p><p>When the house your parents own is on the line, AND you&#8217;re on the hook yourself for the largest amount of money you&#8217;ve ever owed anyone, it lights a fire under you. I wasn&#8217;t even sure where the tuition money for the third semester was going to come&nbsp;from.</p><p>Also, while the bank loan took care of tuition expenses, I was on my own for living expenses, so I took on the full 20 hours of work a week that international students are allowed, to pay for my rent, groceries, utilities etc.</p><p>To meet the 30 credit requirement for graduation, I took 12 credits my first semester, and 17 (SEVENTEEN) credits my second semester. In retrospect, the winter of 2007 was a time where I experienced the lowest of lows, and the most exhilarating highs.</p><h4>Finding a&nbsp;Job</h4><p>In my second semester at school, I landed a co-op at, what I considered, my dream company&#8202;&#8212;&#8202;MathWorks. I had used MathWorks tools like MATLAB, Simulink and Stateflow throughout my coursework and labs during my graduate program, and loved how they opened up the world of scientific computation and analysis.</p><p>I doubt anyone at MathWorks ever knew how much this job offer meant to me. I needed a <strong>paid</strong> co-op to start repaying student&nbsp;loans.</p><p>With my second semester done, In the early summer of 2007, I moved from Ann Arbor, Michigan to Natick, Massachusetts&#8202;&#8212;&#8202;a suburb of Boston, to start out as an co-op at MathWorks. I was able to do this thanks to Curricular Practical Training, CPT for short (Similar to Optional Practical Training&#8202;&#8212;&#8202;OPT which is available after you graduate).</p><p>I had the role of an &#8220;Application Support Engineer&#8221;, working with MathWorks customers via phone / email, helping them solve complex problems and debug issues as they used MathWorks tools to build complex visualization tools, software for embedded systems, complex simulations etc.</p><p>Why was an &#8220;Electrical Engineering&#8221; graduate student doing tech support?&nbsp;Because:</p><ol><li><p>I saw it as a way to connect with some amazing scientists and engineers, and getting a glimpse of the amazing things they were bringing to&nbsp;life</p></li><li><p>It was a way for me to get my foot in the door to a company I&nbsp;admired</p></li><li><p>The tools I was using, and helping customers use, were directly relevant to my coursework at&nbsp;school.</p></li><li><p>I didn&#8217;t know it at the time, but in hindsight, starting out in technical support was one of the best things for my career. It taught me to look at problems and software in a way that was very user-centered, building empathy for our customers.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/935/1*CwapEtes-Rc9e-_wF-QFBg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/935/1*CwapEtes-Rc9e-_wF-QFBg.jpeg 424w, https://cdn-images-1.medium.com/max/935/1*CwapEtes-Rc9e-_wF-QFBg.jpeg 848w, https://cdn-images-1.medium.com/max/935/1*CwapEtes-Rc9e-_wF-QFBg.jpeg 1272w, https://cdn-images-1.medium.com/max/935/1*CwapEtes-Rc9e-_wF-QFBg.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/935/1*CwapEtes-Rc9e-_wF-QFBg.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/935/1*CwapEtes-Rc9e-_wF-QFBg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/935/1*CwapEtes-Rc9e-_wF-QFBg.jpeg 424w, https://cdn-images-1.medium.com/max/935/1*CwapEtes-Rc9e-_wF-QFBg.jpeg 848w, https://cdn-images-1.medium.com/max/935/1*CwapEtes-Rc9e-_wF-QFBg.jpeg 1272w, https://cdn-images-1.medium.com/max/935/1*CwapEtes-Rc9e-_wF-QFBg.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">At a tradeshow, demo&#8217;ing MathWorks tools and capabilities to attendees</figcaption></figure></div><p>3 months into my 6 month co-op, I got a full-time job offer starting in January 2008. With just 1 credit left to graduate, I took an online course at the University of Illinois at Urbana-Champaign over the fall of 2007 while I was still in Boston at my co-op, and transferred the credits back to Michigan to graduate in December&nbsp;2007.</p><p>The timing of it all was sheer luck. I qualified to apply for the H-1B visa for 2008, and was lucky to get the visa in my first try. (My understanding is that most international graduate students follow the path of CPT -&gt; OPT -&gt;&nbsp;H-1B).</p><p>And then&#8230; the recession hit.</p><h4>Wading Through the Recession</h4><p>I had made it into MathWorks just in time. There was a hiring freeze that lasted close to 2 years, and if I had graduated a semester later, I likely would not have had the same job offer waiting for&nbsp;me.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/0*VkP1cDD7dr9Xg64K" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/0*VkP1cDD7dr9Xg64K 424w, https://cdn-images-1.medium.com/max/1024/0*VkP1cDD7dr9Xg64K 848w, https://cdn-images-1.medium.com/max/1024/0*VkP1cDD7dr9Xg64K 1272w, https://cdn-images-1.medium.com/max/1024/0*VkP1cDD7dr9Xg64K 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/0*VkP1cDD7dr9Xg64K" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/0*VkP1cDD7dr9Xg64K&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/0*VkP1cDD7dr9Xg64K 424w, https://cdn-images-1.medium.com/max/1024/0*VkP1cDD7dr9Xg64K 848w, https://cdn-images-1.medium.com/max/1024/0*VkP1cDD7dr9Xg64K 1272w, https://cdn-images-1.medium.com/max/1024/0*VkP1cDD7dr9Xg64K 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">A cold day at the MathWorks&#8202;&#8212;&#8202;Apple Hill&nbsp;campus</figcaption></figure></div><p>I also got married in 2008, and my wife (also an engineer by profession) left her job in India and arrived back with me to Boston. She was on a H4 visa, incredibly restrictive at the time, but we knew what we were getting&nbsp;into.</p><p>She tried to search for a job, and for a year the calls would come, but prospective employers would suddenly disappear when they found out they&#8217;d need to sponsor a visa. In the midst of a recession, it&#8217;s understandably hard for small and mid-sized businesses to afford hiring people who need H1B visas. The cost of the process, especially with attorneys involved, is expensive.</p><p>With the economic recovery in the US struggling to take hold, things weren&#8217;t looking like they&#8217;d pick up soon. She had always wanted to go to grad school and get an MBA, so she began her pursuit to get into grad&nbsp;school.</p><h4>The Road to Permanent Residence</h4><p>A little more than two years into my role in Technical Support, and after a few internal projects with other teams within the company, I switched to being a Software Engineer full time. This was in 2010. I began my career working on an amazing software product called Stateflow.</p><p>Towards the end of 2011, my employer decided to apply for an employment based green card for me. Since I had a Masters degree and some prior work experience, that put me squarely in the EB2 category of green cards. For those of you who don&#8217;t know, EB stands for Employment Based. At some point in the process, once the initial petition is approved, you are given a <strong>priority date</strong>, which effectively says &#8220;get in&nbsp;line&#8221;.</p><p>The <strong>priority date </strong>is interesting because USCIS publishes a visa bulletin periodically that informs the public what priority dates are being processed, depending on your nationality and your Green Card petition category. A fun fact about priority dates is that the USCIS status on them can &#8220;regress&#8221;. What does this mean? USCIS could publish a bulletin saying that they are processing all applications with priority date up to April 2011, and then a few weeks later, they could publish another bulletin that pegs the priority date to June&nbsp;2006.</p><p>It was only at this stage that I started digging into the process some more to understand the different factors at play that might influence the <strong>priority date. </strong>Research aside, it became evident very soon that the wait for a green card in the EB2 category, for an Indian national like me, was going to take a very long time. How long you ask? 54 years according to a recent estimate:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/722/1*MLv3lGgM5kVPHx90jPl5JA.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/722/1*MLv3lGgM5kVPHx90jPl5JA.png 424w, https://cdn-images-1.medium.com/max/722/1*MLv3lGgM5kVPHx90jPl5JA.png 848w, https://cdn-images-1.medium.com/max/722/1*MLv3lGgM5kVPHx90jPl5JA.png 1272w, https://cdn-images-1.medium.com/max/722/1*MLv3lGgM5kVPHx90jPl5JA.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/722/1*MLv3lGgM5kVPHx90jPl5JA.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/722/1*MLv3lGgM5kVPHx90jPl5JA.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/722/1*MLv3lGgM5kVPHx90jPl5JA.png 424w, https://cdn-images-1.medium.com/max/722/1*MLv3lGgM5kVPHx90jPl5JA.png 848w, https://cdn-images-1.medium.com/max/722/1*MLv3lGgM5kVPHx90jPl5JA.png 1272w, https://cdn-images-1.medium.com/max/722/1*MLv3lGgM5kVPHx90jPl5JA.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Source: <a href="https://www.cato.org/publications/policy-analysis/immigration-wait-times-quotas-have-doubled-green-card-backlogs-are-long">https://www.cato.org/publications/policy-analysis/immigration-wait-times-quotas-have-doubled-green-card-backlogs-are-long</a></figcaption></figure></div><h4>Living in Immigration Limbo</h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/0*0iY7mx2WH7YaF-04.jpg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/0*0iY7mx2WH7YaF-04.jpg 424w, https://cdn-images-1.medium.com/max/1024/0*0iY7mx2WH7YaF-04.jpg 848w, https://cdn-images-1.medium.com/max/1024/0*0iY7mx2WH7YaF-04.jpg 1272w, https://cdn-images-1.medium.com/max/1024/0*0iY7mx2WH7YaF-04.jpg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/0*0iY7mx2WH7YaF-04.jpg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/0*0iY7mx2WH7YaF-04.jpg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/0*0iY7mx2WH7YaF-04.jpg 424w, https://cdn-images-1.medium.com/max/1024/0*0iY7mx2WH7YaF-04.jpg 848w, https://cdn-images-1.medium.com/max/1024/0*0iY7mx2WH7YaF-04.jpg 1272w, https://cdn-images-1.medium.com/max/1024/0*0iY7mx2WH7YaF-04.jpg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><a href="https://www.bostonglobe.com/opinion/2014/07/03/editorial-cartoon-statue-liberty/rdQIpiu2WDIWudD8LxTeHO/story.html">Source: https://www.bostonglobe.com/opinion/2014/07/03/editorial-cartoon-statue-liberty/rdQIpiu2WDIWudD8LxTeHO/story.html</a></figcaption></figure></div><p>As I watched the wait times increase, with no end in sight, I remained naively hopeful that a sudden policy change would bring relief. I tried not to think too much about it, and kept doing my best at&nbsp;work.</p><p>I worked hard, because (especially) as an engineer on a H-1B, there&#8217;s no room to become complacent or sloppy. If you lose your job for any reason, you have 60 days to find an equivalent job, or leave the&nbsp;country.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/716/0*tsiPNrD7eexIoRcD" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/716/0*tsiPNrD7eexIoRcD 424w, https://cdn-images-1.medium.com/max/716/0*tsiPNrD7eexIoRcD 848w, https://cdn-images-1.medium.com/max/716/0*tsiPNrD7eexIoRcD 1272w, https://cdn-images-1.medium.com/max/716/0*tsiPNrD7eexIoRcD 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/716/0*tsiPNrD7eexIoRcD" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/716/0*tsiPNrD7eexIoRcD&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/716/0*tsiPNrD7eexIoRcD 424w, https://cdn-images-1.medium.com/max/716/0*tsiPNrD7eexIoRcD 848w, https://cdn-images-1.medium.com/max/716/0*tsiPNrD7eexIoRcD 1272w, https://cdn-images-1.medium.com/max/716/0*tsiPNrD7eexIoRcD 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">My first US&nbsp;patent!</figcaption></figure></div><p>We really wanted our life in the US to work, we wanted to settle down there. I put my head down and gave it my best. Some of that work led to 2 US and 1 international patents.</p><p>In <strong>2014</strong>, we continued hoping, and we bought a&nbsp;house.</p><p>In <strong>2016</strong>, my daughter was born. We kept building our professional network and made friends. We thought we were really putting down&nbsp;roots.</p><p><strong>Between 2010 and 2018</strong>, I kept advancing in my career, becoming a Senior Software Engineer, and then a Software Engineering Team&nbsp;Lead.</p><p>As the years went by, the wait times kept increasing.</p><p>All this time, I realized how much of a pain the H-1B really&nbsp;was:</p><ul><li><p>Since H-1B visas are valid for 3 year stretches at the most, and with my wife and I both on a H1-B by 2012, every year or two when we traveled out of the country, we&#8217;d realize that paperwork for visa renewal would be necessary because one of our visas would have expired. Oh, and it&#8217;s generally &#8220;discouraged&#8221; to apply for a visa renewal anywhere other than your home&nbsp;country.</p></li><li><p>Say you want to switch careers i.e. you&#8217;re a software developer, but you&#8217;ve developed a passion for product management, or marketing&#8202;&#8212;&#8202;you need to tread carefully, particularly if you&#8217;re in the Green Card queue. A H-1B transfer isn&#8217;t guaranteed, and you may lose your place in the &#8220;queue&#8221;, having to go through the Green Card process again, because you&#8217;re in a new&nbsp;role.</p></li><li><p>Even if you don&#8217;t switch roles, or companies, your H1-B renewal isn&#8217;t guaranteed anymore, particularly since Trump took office in&nbsp;2016.</p></li><li><p>When returning to the US after a holiday, or a visit to your home country, the CBP (Customs and Border Patrol) officers at airports will look at your stamped visa and be unpleasant jerks. Once, an officer almost denied me entry after a 17 hour flight, because even though I had a valid visa stamped on my passport, I wasn&#8217;t carrying my I-797 notice of approval document with me. In the 4 visits back to the US before, no CBP officer had ever asked me for that document. I&#8217;ve heard stories of CBP officers asking software engineers questions about programming off wikipedia to verify that the engineer is really a software engineer. &#129318;&#8205;&#9794;</p></li><li><p>Unfortunately, the H-1B visa is sometimes abused (<em>some</em> Indian IT cos come to mind). Also unfortunately, as a H-1B holder working for a company paying you really well, you will get lumped in with the H-1B abusers and be accused of stealing jobs, working for low wages and displacing American&nbsp;workers.</p></li><li><p>The Green Card queue has a per-country quota. It&#8217;s not fair or unfair. It is what it is, and it&#8217;s not great for you if you&#8217;re an Indian national. The fact that you&#8217;ve contributed major tax dollars into social security and medicare (that you likely won&#8217;t ever see a dime of) and have been a law-abiding citizen mean&nbsp;nothing.</p></li></ul><h4>The Choice</h4><blockquote><p>&#8220;In any moment of decision, the best thing you can do is the right thing. The worst thing you can do is nothing.&#8221; <br>&#8213; Theodore Roosevelt</p></blockquote><p>A year into the Trump presidency, we thought we had seen enough. After a decade, it seemed like only a fool&#8217;s hope to assume that things would get&nbsp;better.</p><p>The choice was simple, we&nbsp;either</p><ul><li><p>Stay and face all the issues I&#8217;ve mentioned above,&nbsp;or</p></li><li><p>Exercise the privilege and resources that we have to move somewhere else, where we&#8217;ll be <em><strong>free</strong></em>, while still maintaining or improving the quality of life that we had become accustomed to.</p></li></ul><p><em><strong>Free</strong></em> to travel without being harassed about our visa&nbsp;status.</p><p><em><strong>Free</strong></em> to take on the roles and jobs we&#8217;re passionate about, even if it means taking risks in new roles, or at very small companies.</p><p><em><strong>Free</strong></em> of accusations of being a wage undercutting job&nbsp;stealer.</p><p><em><strong>Free</strong></em> of the deluge of immigration paperwork that always seemed to be coming our way, to continue to stay in the US&nbsp;legally.</p><p>We chose to leave the US. We chose&nbsp;<em><strong>freedom</strong></em>.</p><h4>The Promise of A New&nbsp;Life</h4><p>We had heard about Canada&#8217;s <a href="https://www.canada.ca/en/immigration-refugees-citizenship/services/immigrate-canada/express-entry.html">Express Entry</a> program, that granted permanent residence to applicants with the right mix of job skills, language ability, and work experience.</p><p>It sounded promising in theory, but we wanted to be sure we&#8217;d like our potential new home. In the summer of 2017, we visited the city of Toronto in Canada to get a feel for the&nbsp;city.</p><p>We picked Toronto because, with the high density of opportunities in the Software and Services industry, we wanted to give ourselves the best chance of landing on our feet in a new country, where we had no relatives, and very few friends or professional connections.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*aOg1Ppz27B9ppYBQpHC-Rw.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*aOg1Ppz27B9ppYBQpHC-Rw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*aOg1Ppz27B9ppYBQpHC-Rw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*aOg1Ppz27B9ppYBQpHC-Rw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*aOg1Ppz27B9ppYBQpHC-Rw.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*aOg1Ppz27B9ppYBQpHC-Rw.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*aOg1Ppz27B9ppYBQpHC-Rw.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*aOg1Ppz27B9ppYBQpHC-Rw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*aOg1Ppz27B9ppYBQpHC-Rw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*aOg1Ppz27B9ppYBQpHC-Rw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*aOg1Ppz27B9ppYBQpHC-Rw.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@hermez777?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Hermes Rivera</a> on&nbsp;<a href="https://unsplash.com/s/photos/canada?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>Exploring the city over many days, we enjoyed the energy and diversity we saw, and our minds were made&nbsp;up.</p><h4>Tasting Freedom&nbsp;&#127464;&#127462;</h4><p>We kick-started our application for Express Entry in earnest. The process was surprisingly simple and transparent. We didn&#8217;t need to hire any immigration attorneys, or consultants. It was all self-serve, although it did require us to be thorough in the documentation that we collected.</p><p>The best part was, after being invited to apply for permanent residence, we submitted our application on December 5th 2017, and on December 21st, we had confirmation that we were permanent residents!</p><p>Years of waiting in Limbo in the US vs. 16 days. <strong>Sixteen&nbsp;DAYS</strong>.</p><p>Fast-forward to the fall of 2018, and we sold our home in Newton, Massachusetts and permanently moved north, across the border to&nbsp;Canada.</p><p>Almost two years later, we feel very well settled in our new life here. The few experiences we&#8217;ve already had traveling out of the country and returning back<strong> home</strong> to Canada as permanent residents have been a joy. There&#8217;s so much I want to talk about in our experience of moving to Canada, but I&#8217;ll save that for another&nbsp;post.</p>]]></content:encoded></item><item><title><![CDATA[Building a Fearless Organization]]></title><description><![CDATA[What I took away from Amy Edmondson&#8217;s amazing book on Psychological Safety]]></description><link>https://www.sidshankar.com/p/building-a-fearless-organization-ffa46a766e88</link><guid isPermaLink="false">https://www.sidshankar.com/p/building-a-fearless-organization-ffa46a766e88</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Thu, 16 Apr 2020 21:17:25 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/1024/1*5XkkzGKp9xz9qfqqAJwk4A.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4>What I took away from Amy Edmondson&#8217;s amazing book on Psychological Safety</h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*5XkkzGKp9xz9qfqqAJwk4A.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*5XkkzGKp9xz9qfqqAJwk4A.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*5XkkzGKp9xz9qfqqAJwk4A.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*5XkkzGKp9xz9qfqqAJwk4A.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*5XkkzGKp9xz9qfqqAJwk4A.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*5XkkzGKp9xz9qfqqAJwk4A.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*5XkkzGKp9xz9qfqqAJwk4A.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*5XkkzGKp9xz9qfqqAJwk4A.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*5XkkzGKp9xz9qfqqAJwk4A.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*5XkkzGKp9xz9qfqqAJwk4A.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*5XkkzGKp9xz9qfqqAJwk4A.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@steve_j?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Steve Johnson</a> on&nbsp;<a href="https://unsplash.com/s/photos/safe?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p><strong>This isn&#8217;t a book review! </strong>I just want to make that clear to begin with. &#128581;&#8205;&#9794;&#128213; <strong>Nor is it a book summary</strong>. Well, not&nbsp;exactly!</p><p>Instead, I want to use this space to capture some of the insights from &#8220;<a href="https://fearlessorganization.com/the-fearless-organization">the fearless organization</a>&#8221; by Amy Edmondson.</p><p>Insights can be personal and subjective (what is insightful to me, may not be insightful for you).&nbsp;&#128270;</p><p>Even so, a fair amount of information in the book included the kind of stuff I had never run into before, and I hope you will find it useful&nbsp;too.</p><p>Some of the information is distilled out from the book, some of it is paraphrasing sections of the book.&nbsp;&#128278;</p><h3>About the&nbsp;book</h3><p>&#8220;The fearless organization&#8221; was written by Amy Edmondson&#8202;&#8212;&#8202;currently (As of April 2020) the Novartis Professor of Leadership at Harvard Business&nbsp;School.</p><p>From the book description: &#8220;<em>The Fearless Organization: Creating Psychological Safety in the Workplace for Learning, Innovation, and Growth </em>offers practical guidance for teams and organizations who are serious about success in the modern economy.&nbsp;&#8230; This book explores this culture of psychological safety, and provides a blueprint for bringing it to&nbsp;life.</p><h3>What Psychological safety is NOT&nbsp;&#9876;&#65039;</h3><blockquote><p>&#8220;Psychological safety is not about trust, lowering performance standards, or even a complete absence of&nbsp;fear&#8221;</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*Uz8jXBMf3lVHWcaxrLQFNA.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*Uz8jXBMf3lVHWcaxrLQFNA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*Uz8jXBMf3lVHWcaxrLQFNA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*Uz8jXBMf3lVHWcaxrLQFNA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*Uz8jXBMf3lVHWcaxrLQFNA.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*Uz8jXBMf3lVHWcaxrLQFNA.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*Uz8jXBMf3lVHWcaxrLQFNA.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*Uz8jXBMf3lVHWcaxrLQFNA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*Uz8jXBMf3lVHWcaxrLQFNA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*Uz8jXBMf3lVHWcaxrLQFNA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*Uz8jXBMf3lVHWcaxrLQFNA.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@austindistel?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Austin Distel</a> on&nbsp;<a href="https://unsplash.com/s/photos/office?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>Since the book focuses on psychological safety, it&#8217;s very important to understand what psychological safety is&nbsp;NOT:</p><ol><li><p><strong>Another word for trust</strong>. Psychological safety is experienced at a group level. Trust &#8211; usually between two entities. Psychological safety is usually a temporally immediate experience, trust is an <em>expectation</em> about whether or not the other party can be counted&nbsp;on.</p></li><li><p><strong>About &#8220;lowering performance standards&#8221;.</strong> Wanting to create an environment that is psychologically safe does not imply that people should no longer hold each other accountable.</p></li><li><p><strong>About the absence of fear</strong>. There may be fear present in an organization around long term prospects, ongoing emergencies, anxiety about some endemic issue etc. Individuals may be worried about their performance. Despite all of this, if people are able to engage in constructive dialogue with candour and authenticity, then they are feeling psychologically safe.</p></li><li><p><strong>A personality trait. </strong>Psychological safety is the level of inter-personal risk that people in a group anticipate, or experience i.e. it is very much an experience that plays out between different people, and not an innate personality trait.</p></li></ol><h3>What psychological safety does, and a leaders role in helping to establish it</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*1bZWbDtaVdGg2Bl9z8mBeA.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*1bZWbDtaVdGg2Bl9z8mBeA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*1bZWbDtaVdGg2Bl9z8mBeA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*1bZWbDtaVdGg2Bl9z8mBeA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*1bZWbDtaVdGg2Bl9z8mBeA.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*1bZWbDtaVdGg2Bl9z8mBeA.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*1bZWbDtaVdGg2Bl9z8mBeA.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*1bZWbDtaVdGg2Bl9z8mBeA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*1bZWbDtaVdGg2Bl9z8mBeA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*1bZWbDtaVdGg2Bl9z8mBeA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*1bZWbDtaVdGg2Bl9z8mBeA.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@matthewwaring?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Matthew Waring</a> on&nbsp;<a href="https://unsplash.com/s/photos/safety?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>Amy Edmondson&#8217;s draws an interesting analogy between operating a car and &#8220;team dynamics&#8221;, to describe the role of psychological safety.</p><p>Leaders must carefully use the right amount of <strong>fuel / throttle</strong> &#128640; and <strong>braking</strong> &#128721; to ensure the car runs&nbsp;well.</p><p>Leaders need&nbsp;to:</p><ul><li><p>&#128721; Remove the brakes by building psychological safety to spur learning and avoid preventable failures.</p></li><li><p>&#128640; Set high standards, inspire, and enable people to reach&nbsp;them.</p></li><li><p>&#128640; Share, sharpen and continually emphasize a worthy&nbsp;purpose.</p></li></ul><h3>Why do people fear speaking up to ask questions / raise&nbsp;concerns</h3><p>In situations where a person might speak up, but chooses not to, two most frequently mentioned reasons&nbsp;are:</p><ul><li><p>Fear of being viewed / labeled negatively.</p></li><li><p>Fear of damaging work relationships.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*fek7KRF-LiFv20qx90nKWg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*fek7KRF-LiFv20qx90nKWg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*fek7KRF-LiFv20qx90nKWg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*fek7KRF-LiFv20qx90nKWg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*fek7KRF-LiFv20qx90nKWg.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*fek7KRF-LiFv20qx90nKWg.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*fek7KRF-LiFv20qx90nKWg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*fek7KRF-LiFv20qx90nKWg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*fek7KRF-LiFv20qx90nKWg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*fek7KRF-LiFv20qx90nKWg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*fek7KRF-LiFv20qx90nKWg.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@benwhitephotography?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Ben White</a> on&nbsp;<a href="https://unsplash.com/s/photos/fear?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>On this note, one of my favourite parts of the book was the introduction of the notion of the &#8220;<strong>Asymmetry of voice and silence</strong>&#8221;: &#128483;&nbsp;&#128586;</p><ul><li><p><strong>Voice &#128483; </strong>is <em>effortful</em> and might (but might not) make a real difference in a crucial moment. Most of the time, the potential benefit will take a while to materialize, and might not happen at&nbsp;all.</p></li><li><p><strong>Silence</strong> &#128586; is instinctive and safe. It offers self-protection benefits, and these are both immediate and&nbsp;certain.</p></li></ul><p><em>Unfortunately, since not offering an idea is an invisible act, it is hard to encourage the expression of that idea, and engage in real-time course correction.</em></p><p>In other words, when an opportunity to speak up arrives, there is a cost-benefit analysis running in our minds, weighing the costs and benefits of speaking&nbsp;up.</p><p>Due to the asymmetry of voice and silence, benefits are unclear and delayed, costs may be immediate and tangible, and so this cost-benefit analysis always <em>overweights</em> silence.</p><h3>The two broad sets of learning behaviours in organizations</h3><ul><li><p><strong>Learn-what</strong>: independent activities like learning about the latest best practices and new developments in your profession. &#128218;</p></li><li><p><strong>Learn-How</strong>: Team-based learning that includes sharing knowledge, offering suggestions, and brainstorming better approaches. &#128173;</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*zsrg_pxPMCRJlJQMFoC3mA.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*zsrg_pxPMCRJlJQMFoC3mA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*zsrg_pxPMCRJlJQMFoC3mA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*zsrg_pxPMCRJlJQMFoC3mA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*zsrg_pxPMCRJlJQMFoC3mA.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*zsrg_pxPMCRJlJQMFoC3mA.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*zsrg_pxPMCRJlJQMFoC3mA.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*zsrg_pxPMCRJlJQMFoC3mA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*zsrg_pxPMCRJlJQMFoC3mA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*zsrg_pxPMCRJlJQMFoC3mA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*zsrg_pxPMCRJlJQMFoC3mA.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@neonbrand?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">NeONBRAND</a> on&nbsp;<a href="https://unsplash.com/s/photos/teach?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>Psychological safety results in an uptick in <strong>Learn-How</strong> behaviours, because people feel like they are in an environment where they are able to overcome interpersonal risk to engage in more &#8220;Learn-How&#8221; behaviours.</p><h3>Confidence vs. feeling psychologically safe&nbsp;&#128119;</h3><p>The more confident people were in their knowledge, the more they tend to speak up / raise concerns / ask questions. However, since the merit of an idea and confidence are independent variables&#8202;&#8212;&#8202;<em>just because a person confidently says something, does not necessarily mean the idea / question / concern has merit</em>&#8202;&#8212;&#8202;establishing psychological safety is important for facilitating knowledge sharing, and getting a spectrum of&nbsp;ideas.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*Ro-V1IfXh3mtgcBaIUZRRw.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*Ro-V1IfXh3mtgcBaIUZRRw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*Ro-V1IfXh3mtgcBaIUZRRw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*Ro-V1IfXh3mtgcBaIUZRRw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*Ro-V1IfXh3mtgcBaIUZRRw.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*Ro-V1IfXh3mtgcBaIUZRRw.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*Ro-V1IfXh3mtgcBaIUZRRw.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*Ro-V1IfXh3mtgcBaIUZRRw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*Ro-V1IfXh3mtgcBaIUZRRw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*Ro-V1IfXh3mtgcBaIUZRRw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*Ro-V1IfXh3mtgcBaIUZRRw.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@suicide_chewbacca?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Ashwini Chaudhary</a> on&nbsp;<a href="https://unsplash.com/s/photos/shy?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>That is, we want to create an environment where even those with lower confidence levels can speak up, because it feels safe for them to do&nbsp;so.</p><p>Interestingly, the <em>frequency of communication</em> among co-workers also led to psychological safety. The more we talk to each other, the more comfortable we become doing&nbsp;so.</p><h3>The dynamics of effective teams</h3><p><a href="https://rework.withgoogle.com/print/guides/5721312655835136/">Project Aristotle (at Google)</a> found that even the smartest / high-powered engineers at google needed psychological safety to operate, and contribute their talents. Four other factors explain team performance:</p><ul><li><p>Clear goals&nbsp;&#129349;</p></li><li><p>Dependable colleagues &#129299;</p></li><li><p>Personally meaningful work&nbsp;&#127748;</p></li><li><p>A belief that their work has an impact&nbsp;&#9874;</p></li></ul><p>But <strong>psychological safety was found to be the most important</strong>. Psychological safety is associated with higher work engagement, mental health, and lower turnover.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*_MgpBCISfO6JnO8OTEuXUw.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*_MgpBCISfO6JnO8OTEuXUw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*_MgpBCISfO6JnO8OTEuXUw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*_MgpBCISfO6JnO8OTEuXUw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*_MgpBCISfO6JnO8OTEuXUw.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*_MgpBCISfO6JnO8OTEuXUw.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*_MgpBCISfO6JnO8OTEuXUw.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*_MgpBCISfO6JnO8OTEuXUw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*_MgpBCISfO6JnO8OTEuXUw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*_MgpBCISfO6JnO8OTEuXUw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*_MgpBCISfO6JnO8OTEuXUw.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@manasvita?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Manasvita S</a> on&nbsp;<a href="https://unsplash.com/s/photos/meaningful?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><h3>Fear of failure, and it&#8217;s effect on learning and innovation &#128105;&#8205;&#128300;</h3><p>Success requires constant innovation, fuelled by <strong>expertise, ingenuity, and teamwork</strong>. Without psychological safety, it is difficult for any of those to be put to good&nbsp;use.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*AheK0m2tMkXdZLibZOLzpg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*AheK0m2tMkXdZLibZOLzpg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*AheK0m2tMkXdZLibZOLzpg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*AheK0m2tMkXdZLibZOLzpg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*AheK0m2tMkXdZLibZOLzpg.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*AheK0m2tMkXdZLibZOLzpg.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*AheK0m2tMkXdZLibZOLzpg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*AheK0m2tMkXdZLibZOLzpg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*AheK0m2tMkXdZLibZOLzpg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*AheK0m2tMkXdZLibZOLzpg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*AheK0m2tMkXdZLibZOLzpg.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@loicleray?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Loic Leray</a> on&nbsp;<a href="https://unsplash.com/s/photos/risk?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><ul><li><p>Without the freedom to fail, people will seek to repeat something safe, that&#8217;s been good enough in the past. Their work will be derivative, not innovative. Experimentation, and the inevitable trial and error process are necessary to innovate. &#128104;&#8205;&#128300;</p></li><li><p>From Astro Teller of GoogleX: &#8220;The only way to get people to work on big, risky and audacious ideas, <strong>and</strong> have them run at the all the hardest parts of the problem first, is to make that the path of least resistance, and show them that it&#8217;s OK to fail. &#128170; It&#8217;s natural to fear what other people might think, and about losing our job. That&#8217;s why, unless a leader expressly and actively makes it psychologically safe to do so, people will seek to avoid failure.&#8221; &#128560;</p></li><li><p>From Carol Dweck and her work on the Growth Mindset: &#8220;When people believe their performance is an indication of their ability or intelligence, they are less likely to take risks, for fear of a result that would disconfirm their ability. But, when people believe that performance reflects effort and good strategy, they are eager to try new things and willing to persevere despite adversity and failure.&#8221; &#127947;</p></li></ul><h3>Summary</h3><p>I took a lot away from reading this book. There were some fantastic nuggets of information to be found&#129351;. The book gave me the tools to identify low levels of psychological safety, and tools to improve it in a&nbsp;group.</p><p>The book does an amazing job of driving home the consequences of neglecting psychological safety within a group, and the benefits to be gained from putting in the work to build a culture of safety and comfort around speaking&nbsp;up.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*dAKFR9ww9l_pHdlkm5SEdg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*dAKFR9ww9l_pHdlkm5SEdg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*dAKFR9ww9l_pHdlkm5SEdg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*dAKFR9ww9l_pHdlkm5SEdg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*dAKFR9ww9l_pHdlkm5SEdg.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*dAKFR9ww9l_pHdlkm5SEdg.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*dAKFR9ww9l_pHdlkm5SEdg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*dAKFR9ww9l_pHdlkm5SEdg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*dAKFR9ww9l_pHdlkm5SEdg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*dAKFR9ww9l_pHdlkm5SEdg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*dAKFR9ww9l_pHdlkm5SEdg.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@bamagal?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">&#8220;My Life Through A Lens&#8221;</a> on&nbsp;<a href="https://unsplash.com/s/photos/innovation?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>I hope you get a chance to read it and enjoy it&nbsp;too.</p>]]></content:encoded></item><item><title><![CDATA[View your “dark code” in Rust]]></title><description><![CDATA[And know what your code is really doing]]></description><link>https://www.sidshankar.com/p/view-your-dark-code-in-rust-3b2e9699ea7e</link><guid isPermaLink="false">https://www.sidshankar.com/p/view-your-dark-code-in-rust-3b2e9699ea7e</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Tue, 04 Feb 2020 23:39:14 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/1024/1*AhZJoG91cDsxbS9irPM-fg.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4>And know what your code is really&nbsp;doing</h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*AhZJoG91cDsxbS9irPM-fg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*AhZJoG91cDsxbS9irPM-fg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*AhZJoG91cDsxbS9irPM-fg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*AhZJoG91cDsxbS9irPM-fg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*AhZJoG91cDsxbS9irPM-fg.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*AhZJoG91cDsxbS9irPM-fg.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*AhZJoG91cDsxbS9irPM-fg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*AhZJoG91cDsxbS9irPM-fg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*AhZJoG91cDsxbS9irPM-fg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*AhZJoG91cDsxbS9irPM-fg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*AhZJoG91cDsxbS9irPM-fg.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">&#8220;I can has dark code?&#8221;&#8202;&#8212;&#8202;Photo by <a href="https://unsplash.com/@miklevasilyev?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Mikhail Vasilyev</a> on&nbsp;<a href="https://unsplash.com/s/photos/hide?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p><a href="https://doc.rust-lang.org/1.7.0/book/macros.html">Macros</a> and <a href="https://doc.rust-lang.org/reference/attributes.html">Attributes</a> abound in Rust, and it&#8217;s often useful (nay, important!) to know how they are morphing your source code. This knowledge is important to help&nbsp;you:</p><ol><li><p>Gain a deeper understanding of what your code is&nbsp;doing.</p></li><li><p>Debug your source code more easily and effectively, when using a macro or attribute produces unexpected results.</p></li></ol><p><strong><a href="https://github.com/dtolnay/cargo-expand">cargo-expand</a></strong> is a useful cargo sub-command that can be installed and run to &#8220;expand&#8221; the macros and attributes (hereafter, collectively referred to as &#8220;code shortcuts&#8221;) in your source code, and show you the code being generated.</p><p>Let&#8217;s say you start with the following code, where we have a simple struct called PersonDetails, and we want this type to be printable.</p><p>The code looks like&nbsp;this:</p><p>&lt;a href="https://medium.com/media/b208c68346a222b650025a7b227dbc76/href"&gt;https://medium.com/media/b208c68346a222b650025a7b227dbc76/href&lt;/a&gt;</p><p>I&#8217;ve made PersonDetails <a href="https://doc.rust-lang.org/rust-by-example/hello/print/print_debug.html">printable</a> by using the Derive attribute to derive from the fmt::Debug trait.</p><blockquote><p>But <em>how</em> <em>exactly </em>is the use of this attribute with the fmt::Debug trait making the Struct printable?</p></blockquote><blockquote><p>As it turns out, you can <em><strong>expand</strong></em> the attribute and look at the generated code using the <strong>rust </strong>compiler.</p></blockquote><p>Unfortunately:</p><ol><li><p>The rustc command needed to expand code shortcuts requires you to first install and then switch manually to the rust nightly toolchain.</p></li><li><p>The generated code is printed to the terminal, with <strong>formatting that isn&#8217;t ideal</strong>, and without <strong>syntax highlighting</strong>.</p></li><li><p>You&#8217;ll need to switch back to the non-nightly version of the toolchain once you&#8217;re&nbsp;done.</p></li></ol><p>At my project root, I need to&nbsp;run:</p><p>rustup override set&nbsp;nightly</p><p>then:</p><p>cargo rustc &#8212;-profile=check -- -Zunstable-options --pretty=expanded</p><p>producing the following result:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/973/1*dNVohe6S7YXQLzq0Dwg8Aw.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/973/1*dNVohe6S7YXQLzq0Dwg8Aw.png 424w, https://cdn-images-1.medium.com/max/973/1*dNVohe6S7YXQLzq0Dwg8Aw.png 848w, https://cdn-images-1.medium.com/max/973/1*dNVohe6S7YXQLzq0Dwg8Aw.png 1272w, https://cdn-images-1.medium.com/max/973/1*dNVohe6S7YXQLzq0Dwg8Aw.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/973/1*dNVohe6S7YXQLzq0Dwg8Aw.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/973/1*dNVohe6S7YXQLzq0Dwg8Aw.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Code showing Macros and Attributes expanded by rust compiler&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Code showing Macros and Attributes expanded by rust compiler" title="Code showing Macros and Attributes expanded by rust compiler" srcset="https://cdn-images-1.medium.com/max/973/1*dNVohe6S7YXQLzq0Dwg8Aw.png 424w, https://cdn-images-1.medium.com/max/973/1*dNVohe6S7YXQLzq0Dwg8Aw.png 848w, https://cdn-images-1.medium.com/max/973/1*dNVohe6S7YXQLzq0Dwg8Aw.png 1272w, https://cdn-images-1.medium.com/max/973/1*dNVohe6S7YXQLzq0Dwg8Aw.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Expanded output using rustc with the right&nbsp;flags.</figcaption></figure></div><p>You&#8217;ll see that the formatting is janky in places, especially within the main function.</p><p>Let&#8217;s try the same thing with <a href="https://github.com/dtolnay/cargo-expand">cargo-expand</a>.</p><p>cargo install cargo-expand</p><p>cargo-expand will use the rustfmt tool if it is installed on your system to format / prettify the generated code.</p><p>You can run cargo expand even without rustfmt installed. To install rustfmt&nbsp;run:</p><p>rustup component add&nbsp;rustfmt</p><p>While cargo-expand also uses the nightly build of the rust behind the scenes, it doesn&#8217;t expect you to manually change the default toolchain of the project you&#8217;re working&nbsp;in.</p><p>Expanding the code shortcuts on the same example with cargo-expand produces:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/973/1*aR1VEc8v7Ykv-sUbLP5EcQ.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/973/1*aR1VEc8v7Ykv-sUbLP5EcQ.png 424w, https://cdn-images-1.medium.com/max/973/1*aR1VEc8v7Ykv-sUbLP5EcQ.png 848w, https://cdn-images-1.medium.com/max/973/1*aR1VEc8v7Ykv-sUbLP5EcQ.png 1272w, https://cdn-images-1.medium.com/max/973/1*aR1VEc8v7Ykv-sUbLP5EcQ.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/973/1*aR1VEc8v7Ykv-sUbLP5EcQ.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/973/1*aR1VEc8v7Ykv-sUbLP5EcQ.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Code showing macros and attributes expanded by the cargo-expand crate&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Code showing macros and attributes expanded by the cargo-expand crate" title="Code showing macros and attributes expanded by the cargo-expand crate" srcset="https://cdn-images-1.medium.com/max/973/1*aR1VEc8v7Ykv-sUbLP5EcQ.png 424w, https://cdn-images-1.medium.com/max/973/1*aR1VEc8v7Ykv-sUbLP5EcQ.png 848w, https://cdn-images-1.medium.com/max/973/1*aR1VEc8v7Ykv-sUbLP5EcQ.png 1272w, https://cdn-images-1.medium.com/max/973/1*aR1VEc8v7Ykv-sUbLP5EcQ.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Expanded code output using `cargo&nbsp;expand`</figcaption></figure></div><p>Observe that:</p><ol><li><p>The output makes better use of whitespace when formatting. &#10024;</p></li><li><p>The output is syntax highlighted! &#127881;</p></li></ol><p>Go forth, explore, and try cargo expand on code containing other macros such as vec! or with some of <a href="https://blog.usejournal.com/6-useful-rust-macros-that-you-might-not-have-seen-before-59d1386f7bc5">these super-useful attributes</a>.</p><h3>References</h3><p>cargo-expand: <a href="https://github.com/dtolnay/cargo-expand">https://github.com/dtolnay/cargo-expand</a></p><p>rustup: <a href="https://rustup.rs/">https://rustup.rs/</a></p><p>rustfmt: <a href="https://github.com/rust-lang/rustfmt">https://github.com/rust-lang/rustfmt</a></p><p>Macros: <a href="https://doc.rust-lang.org/1.7.0/book/macros.html">https://doc.rust-lang.org/1.7.0/book/macros.html</a></p><p>Attributes: <a href="https://doc.rust-lang.org/reference/attributes.html">https://doc.rust-lang.org/reference/attributes.html</a></p><p>6 useful Rust macros that you may not have seen before: <a href="https://blog.usejournal.com/6-useful-rust-macros-that-you-might-not-have-seen-before-59d1386f7bc5">https://blog.usejournal.com/6-useful-rust-macros-that-you-might-not-have-seen-before-59d1386f7bc5</a></p>]]></content:encoded></item><item><title><![CDATA[Learning To Use Rust Over a 16-Hour Hackathon]]></title><description><![CDATA[And loving every moment of it]]></description><link>https://www.sidshankar.com/p/learning-to-use-rust-over-a-16-hour-hackathon-4acb8f37247e</link><guid isPermaLink="false">https://www.sidshankar.com/p/learning-to-use-rust-over-a-16-hour-hackathon-4acb8f37247e</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Tue, 21 Jan 2020 14:31:54 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/1024/1*RQ50uLh5v9tfSVWRYG7Bsg.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4>And loving every moment of&nbsp;it</h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*RQ50uLh5v9tfSVWRYG7Bsg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*RQ50uLh5v9tfSVWRYG7Bsg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*RQ50uLh5v9tfSVWRYG7Bsg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*RQ50uLh5v9tfSVWRYG7Bsg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*RQ50uLh5v9tfSVWRYG7Bsg.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*RQ50uLh5v9tfSVWRYG7Bsg.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*RQ50uLh5v9tfSVWRYG7Bsg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*RQ50uLh5v9tfSVWRYG7Bsg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*RQ50uLh5v9tfSVWRYG7Bsg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*RQ50uLh5v9tfSVWRYG7Bsg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*RQ50uLh5v9tfSVWRYG7Bsg.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">Torque! So much Torque!&#8202;&#8212;&#8202;Photo by <a href="https://unsplash.com/@__matthoffman__?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Matt Hoffman</a> on&nbsp;<a href="https://unsplash.com/s/photos/rust?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>We had a year-end hackathon here at <a href="http://www.prodigygame.com/careers">Prodigy Education</a>. Over the last two days of 2019, teams and individuals got together to bring their ideas to&nbsp;life.</p><p>For fun.</p><p>To learn something new.</p><p>Or maybe to prove out a concept or&nbsp;idea.</p><p>I had been passively consuming information and code snippets about <a href="https://www.rust-lang.org/">Rust</a> for the past few weeks and thought the hackathon was the perfect opportunity to get hands-on with the language.</p><p>The time-constrained nature of the hackathon forced me to move and learn quickly, while also solving a real-world problem.</p><h3>Why Rust?</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*-SJyNKujq4teHLlNXcS7rg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*-SJyNKujq4teHLlNXcS7rg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*-SJyNKujq4teHLlNXcS7rg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*-SJyNKujq4teHLlNXcS7rg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*-SJyNKujq4teHLlNXcS7rg.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*-SJyNKujq4teHLlNXcS7rg.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*-SJyNKujq4teHLlNXcS7rg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*-SJyNKujq4teHLlNXcS7rg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*-SJyNKujq4teHLlNXcS7rg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*-SJyNKujq4teHLlNXcS7rg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*-SJyNKujq4teHLlNXcS7rg.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Getting a chance to peek under the hood again&#8202;&#8212;&#8202;Photo by <a href="https://unsplash.com/@timmossholder?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Tim Mossholder</a> on&nbsp;<a href="https://unsplash.com/s/photos/engine?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>I&#8217;ve spent eight of my first 10 years as a software professional using C and&nbsp;C++.</p><p>On a positive note, I&#8217;ve loved the clarity a language like C++ can offer in terms of static typing and the compiler catching errors&nbsp;early.</p><p>My personal opinion of C++ is that&nbsp;it:</p><ul><li><p>Easily allows engineers to shoot themselves in the&nbsp;foot</p></li><li><p>As a language, has become quite bloated and complex, in my&nbsp;opinion</p></li><li><p>Lacked good/standard/widely adopted package management</p></li></ul><p>Since <a href="https://medium.com/@siddharth.shankar/getting-to-know-the-cloud-year-1-7bf60eb04013">my move to building web applications</a>, I&#8217;ve worked exclusively with Python and JavaScript, using frameworks like Django, Flask, and&nbsp;Express.</p><p>My experience so far with modern web application development stacks in Python and JavaScript is they offer good application iteration and delivery speed but can be CPU and memory intensive, sometimes even when&nbsp;idle.</p><p>I do often find myself missing the type safety, speed, and leanness of a (well-written) compiled C++ application.</p><p>I wanted to explore what web-application development might look like with a lean, bare-metal programming language like&nbsp;Rust.</p><p>No runtimes. No garbage collection. Just a binary loaded and run by the&nbsp;kernel.</p><h3>The Goal</h3><p>The goal was to build an application with a Rust back end and a JavaScript + React front end to display the contents of an S3 bucket as an image gallery. Users would be able&nbsp;to:</p><ul><li><p>Browse all the images in the bucket (pagination optional)</p></li><li><p>Upload images</p></li><li><p>Add tags to the image during&nbsp;upload</p></li><li><p>Search and filter by file name or&nbsp;tags</p></li></ul><p>All fun hackathon projects need a name, so I decided to call this&nbsp;one:</p><p>RustIC -&gt; Rust + Image&nbsp;Contents</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*hUItmMX1gdBLya0AwsIW_Q.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*hUItmMX1gdBLya0AwsIW_Q.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*hUItmMX1gdBLya0AwsIW_Q.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*hUItmMX1gdBLya0AwsIW_Q.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*hUItmMX1gdBLya0AwsIW_Q.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*hUItmMX1gdBLya0AwsIW_Q.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*hUItmMX1gdBLya0AwsIW_Q.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*hUItmMX1gdBLya0AwsIW_Q.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*hUItmMX1gdBLya0AwsIW_Q.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*hUItmMX1gdBLya0AwsIW_Q.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*hUItmMX1gdBLya0AwsIW_Q.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Let&#8217;s hack something great&#8202;&#8212;&#8202;Photo by <a href="https://unsplash.com/@clarktibbs?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Clark Tibbs</a> on&nbsp;<a href="https://unsplash.com/s/photos/vision?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>I&#8217;d consider the hackathon a personal success if I walked away with (in descending order of priority):</p><ul><li><p>A basic understanding of Rust, its type system, and memory&nbsp;model</p></li><li><p>Exploring S3 functionality with respect to presigned links for files and arbitrary tags</p></li><li><p>A functioning proof-of-concept application</p></li></ul><p>Since my emphasis was on delivering functionality while balancing that with learning, a lot of the code I wrote necessarily leaned toward being functional&#8202;&#8212;&#8202;i.e., code organization and efficiency were secondary concerns.</p><h3>Principles of&nbsp;Rust</h3><p>Before I began, I was curious to learn the principles the language designers had in mind when creating this new language. I found an <a href="https://doc.rust-lang.org/1.4.0/complement-design-faq.html">abridged (albeit dated) version</a> and a more <a href="https://github.com/dtolnay/rust-faq">detailed&nbsp;one</a>.</p><p>Contrary to what I read on a lot of blogs, it <em>is </em>possible to have memory leaks (through improperly setup <a href="https://doc.rust-lang.org/book/ch15-06-reference-cycles.html">reference cycles</a>) and perform unsafe operations (in an unsafe<em> </em>block) in Rust. As mentioned in the detailed Rust&nbsp;FAQ,</p><blockquote><p>&#8220;We [the language creators] do not intend [for Rust] to be 100% static, 100% safe, 100% reflective.&#8221;</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*wU31RD90to43G-u_-XkXUg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*wU31RD90to43G-u_-XkXUg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*wU31RD90to43G-u_-XkXUg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*wU31RD90to43G-u_-XkXUg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*wU31RD90to43G-u_-XkXUg.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*wU31RD90to43G-u_-XkXUg.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*wU31RD90to43G-u_-XkXUg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*wU31RD90to43G-u_-XkXUg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*wU31RD90to43G-u_-XkXUg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*wU31RD90to43G-u_-XkXUg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*wU31RD90to43G-u_-XkXUg.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Dazzling, intricate, sophisticated&#8202;&#8212;&#8202;like Rust&#8202;&#8212;&#8202;Photo by <a href="https://unsplash.com/@mavinmatt?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Matt Richardson</a> on&nbsp;<a href="https://unsplash.com/collections/3417813/principles-of-design?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><h3>Getting Started on the Back&nbsp;End</h3><p>A Google search for &#8220;Rust web framework&#8221; yielded a top hit for <a href="https://rocket.rs/">Rocket</a>. I dove into the site to find the documentation and examples seem well laid out and thorough.</p><p>One caveat with Rocket is it needs the nightly version of Rust to operate. Not a big deal in th context of a hackathon.</p><p>The GitHub <a href="https://github.com/SergioBenitez/Rocket/tree/v0.4">repo</a> has plenty of examples. Perfect.</p><p>I used <a href="https://doc.rust-lang.org/cargo/">Cargo</a> to set up a new project, added Rocket as a dependency in the TOML file, and following the instructions in the <a href="https://rocket.rs/v0.4/guide/getting-started/">Getting Started</a> guide for Rocket, set up a&nbsp;route:</p><pre><code>#[get("/")]
fn index() -&gt; &amp;'static str {
    "Hello, world!"
}</code></pre><pre><code>fn main() {
    rocket::ignite().mount("/", routes![index]).launch();
}</code></pre><p>For anyone familiar with Django, Flask, Express etc., this should look very readable. As a Rocket user, you use macros as decorators on functions to map a route to a handler function.</p><p>At compile time, the macros are expanded. This will be completely transparent to you. If you&#8217;re curious to look at the expanded code, the <a href="https://github.com/dtolnay/cargo-expand">cargo-expand</a> crate can be leveraged.</p><p>Here are the interesting/challenging highlights of my app-building experience with&nbsp;Rust:</p><h4>Specifying the route&nbsp;response</h4><p>I wanted my contents route to list all the files in the S3 bucket by returning a JSON data structure.</p><p>Notice (in the code below) how you can look at the function handler associated with the route to immediately determine the response&nbsp;shape.</p><p>Crafting the response shape was extremely easy. If you think of the JSON data as a structure with fields, where each of those fields could, in turn, contain its own structure and fields, then this maps well to a Rust&nbsp;struct<em>.</em></p><p>So all you have to do is to define the struct(s) that constitute the response data shape and tag each one&nbsp;with:</p><pre><code>#[derive(Serialize)]</code></pre><p>struct(s) tagged with #[derive(Serialize)]<em> </em>can be passed to the JSON function from rocket_contrib::json::Json<em>, </em>and away we&nbsp;go!</p><p>&lt;a href="https://medium.com/media/88b1f727e5162dbec5fdbe12ae0fd4a3/href"&gt;https://medium.com/media/88b1f727e5162dbec5fdbe12ae0fd4a3/href&lt;/a&gt;</p><h4>Working with multipart uploads</h4><p>I was knee-deep in building the application with Rocket when I realized I&#8217;d likely have a form on the front end that&#8217;d result in a POST with multipart/form-data<em>.</em></p><p>Unfortunately, Rocket (as of v0.4) <a href="https://github.com/SergioBenitez/Rocket/issues/106">doesn&#8217;t have multipart support</a>. This seems to be scheduled for&nbsp;v0.5.</p><p>This meant having to work with the <a href="https://crates.io/crates/multipart">multipart</a> crate and needing to figure out integration with Rocket. The resulting code worked but could&#8217;ve been a lot cleaner with in-built multipart support in&nbsp;Rocket.</p><p>&lt;a href="https://medium.com/media/8b9a7516f14a22786947abfd1b5cfc94/href"&gt;https://medium.com/media/8b9a7516f14a22786947abfd1b5cfc94/href&lt;/a&gt;</p><h4>Configuring CORS</h4><p>Once the routes were in place and I&#8217;d done some testing using curl and Postman, it was time to integrate with the front end. I needed to set the response headers appropriately to avoid CORS&nbsp;issues.</p><p>Again, there&#8217;s no in-built support in&nbsp;Rocket.</p><p>Looking through the issue log on the GitHub repo, I saw some of the building blocks for a solution, which resulted in&nbsp;this:</p><p>&lt;a href="https://medium.com/media/41ac2d5f9106a49375ec1a0c215f5985/href"&gt;https://medium.com/media/41ac2d5f9106a49375ec1a0c215f5985/href&lt;/a&gt;</p><p>Shortly afterward, I discovered <a href="https://crates.io/crates/rocket_cors">rocket_cors</a>, which significantly slimmed things&nbsp;down.</p><p>&lt;a href="https://medium.com/media/6919e30bbd77f905a42e3c632d1cb18c/href"&gt;https://medium.com/media/6919e30bbd77f905a42e3c632d1cb18c/href&lt;/a&gt;</p><h3>Up and&nbsp;running</h3><p>A simple cargo run invocation in the terminal spits out this beautiful output:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*zHfMDgQMODEhl2xH4_LDaA.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*zHfMDgQMODEhl2xH4_LDaA.png 424w, https://cdn-images-1.medium.com/max/1024/1*zHfMDgQMODEhl2xH4_LDaA.png 848w, https://cdn-images-1.medium.com/max/1024/1*zHfMDgQMODEhl2xH4_LDaA.png 1272w, https://cdn-images-1.medium.com/max/1024/1*zHfMDgQMODEhl2xH4_LDaA.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*zHfMDgQMODEhl2xH4_LDaA.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*zHfMDgQMODEhl2xH4_LDaA.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*zHfMDgQMODEhl2xH4_LDaA.png 424w, https://cdn-images-1.medium.com/max/1024/1*zHfMDgQMODEhl2xH4_LDaA.png 848w, https://cdn-images-1.medium.com/max/1024/1*zHfMDgQMODEhl2xH4_LDaA.png 1272w, https://cdn-images-1.medium.com/max/1024/1*zHfMDgQMODEhl2xH4_LDaA.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>The Activity Monitor on my machine is telling me this app is humming along, taking just 2.7MB of&nbsp;memory.</p><p>And that&#8217;s the unoptimized debug&nbsp;version.</p><p>The same app built with the&#8202;&#8212;&#8202;release<em> </em>flag sips 1.6MB of&nbsp;memory.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/834/1*xmEv6rvxaw6X4F8PnQe6wQ.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/834/1*xmEv6rvxaw6X4F8PnQe6wQ.png 424w, https://cdn-images-1.medium.com/max/834/1*xmEv6rvxaw6X4F8PnQe6wQ.png 848w, https://cdn-images-1.medium.com/max/834/1*xmEv6rvxaw6X4F8PnQe6wQ.png 1272w, https://cdn-images-1.medium.com/max/834/1*xmEv6rvxaw6X4F8PnQe6wQ.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/834/1*xmEv6rvxaw6X4F8PnQe6wQ.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/834/1*xmEv6rvxaw6X4F8PnQe6wQ.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/834/1*xmEv6rvxaw6X4F8PnQe6wQ.png 424w, https://cdn-images-1.medium.com/max/834/1*xmEv6rvxaw6X4F8PnQe6wQ.png 848w, https://cdn-images-1.medium.com/max/834/1*xmEv6rvxaw6X4F8PnQe6wQ.png 1272w, https://cdn-images-1.medium.com/max/834/1*xmEv6rvxaw6X4F8PnQe6wQ.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>With the Rust-based back end service up, hitting a /contents<em> </em>route on the service produces:</p><p>&lt;a href="https://medium.com/media/d9210e75df00f46d9c5020727805bf4f/href"&gt;https://medium.com/media/d9210e75df00f46d9c5020727805bf4f/href&lt;/a&gt;</p><p>On the front end, the work was relatively simple.&nbsp;Using:</p><ul><li><p>React</p></li><li><p>React Bootstrap</p></li><li><p><a href="https://www.npmjs.com/package/react-grid-gallery?activeTab=readme">react-grid-gallery</a></p></li><li><p><a href="https://www.npmjs.com/package/react-tags-input">react-tags-input</a></p></li></ul><p>The user sees a page where they can browse images and search/filter by file name or&nbsp;tags.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*L5VXqfciJc39flpndvxxHQ.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*L5VXqfciJc39flpndvxxHQ.png 424w, https://cdn-images-1.medium.com/max/1024/1*L5VXqfciJc39flpndvxxHQ.png 848w, https://cdn-images-1.medium.com/max/1024/1*L5VXqfciJc39flpndvxxHQ.png 1272w, https://cdn-images-1.medium.com/max/1024/1*L5VXqfciJc39flpndvxxHQ.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*L5VXqfciJc39flpndvxxHQ.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*L5VXqfciJc39flpndvxxHQ.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*L5VXqfciJc39flpndvxxHQ.png 424w, https://cdn-images-1.medium.com/max/1024/1*L5VXqfciJc39flpndvxxHQ.png 848w, https://cdn-images-1.medium.com/max/1024/1*L5VXqfciJc39flpndvxxHQ.png 1272w, https://cdn-images-1.medium.com/max/1024/1*L5VXqfciJc39flpndvxxHQ.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>The user can drag and drop to upload files and has the ability to tag files before they&#8217;re submitted for&nbsp;upload.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*L6TsbSnze4TQmtjyooKexw.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*L6TsbSnze4TQmtjyooKexw.png 424w, https://cdn-images-1.medium.com/max/1024/1*L6TsbSnze4TQmtjyooKexw.png 848w, https://cdn-images-1.medium.com/max/1024/1*L6TsbSnze4TQmtjyooKexw.png 1272w, https://cdn-images-1.medium.com/max/1024/1*L6TsbSnze4TQmtjyooKexw.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*L6TsbSnze4TQmtjyooKexw.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*L6TsbSnze4TQmtjyooKexw.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*L6TsbSnze4TQmtjyooKexw.png 424w, https://cdn-images-1.medium.com/max/1024/1*L6TsbSnze4TQmtjyooKexw.png 848w, https://cdn-images-1.medium.com/max/1024/1*L6TsbSnze4TQmtjyooKexw.png 1272w, https://cdn-images-1.medium.com/max/1024/1*L6TsbSnze4TQmtjyooKexw.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h3>What I Loved About Building an App With&nbsp;Rust</h3><ul><li><p><a href="https://doc.rust-lang.org/cargo/guide/why-cargo-exists.html">Cargo</a>, especially for dependency and application management, is&nbsp;amazing</p></li><li><p>The compiler is extremely helpful for compiler errors. Check out this <a href="https://dmerej.info/blog/post/letting-the-compiler-tell-you-what-to-do/">blog post</a> where the author uses the errors from the compiler to guide him toward the right solution. My experience definitely mirrored&nbsp;this.</p></li><li><p>I was pleasantly surprised by the availability of crates for every piece of functionality I needed. <br>&#9675; Web frameworks? <a href="https://rocket.rs/">Check</a>.<br>&#9675; Middleware options for the web framework? <a href="https://crates.io/crates/rocket_cors">Check</a>.<br>&#9675; S3 and other AWS service client libraries? A Redis client library? JSON serialization and deserialization? <a href="https://docs.rs/rusoto_s3/0.42.0/rusoto_s3/index.html">Check</a>, <a href="https://docs.rs/redis/0.13.0/redis/">check</a>, and&nbsp;<a href="https://crates.io/crates/serde">check</a>!</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*CrC5p_hZP48eFAHAcX4nfw.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*CrC5p_hZP48eFAHAcX4nfw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*CrC5p_hZP48eFAHAcX4nfw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*CrC5p_hZP48eFAHAcX4nfw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*CrC5p_hZP48eFAHAcX4nfw.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*CrC5p_hZP48eFAHAcX4nfw.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*CrC5p_hZP48eFAHAcX4nfw.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*CrC5p_hZP48eFAHAcX4nfw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*CrC5p_hZP48eFAHAcX4nfw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*CrC5p_hZP48eFAHAcX4nfw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*CrC5p_hZP48eFAHAcX4nfw.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Crates galore on crates.io!&#8202;&#8212;&#8202;Photo by <a href="https://unsplash.com/@timmossholder?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Tim Mossholder</a> on&nbsp;<a href="https://unsplash.com/s/photos/crate?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><ul><li><p>The online <a href="https://play.rust-lang.org/">Rust Playground</a>, where I could experiment with small code&nbsp;snippets</p></li><li><p>The <a href="https://github.com/rust-lang/rls">Rust language server</a>, which integrated nicely into Visual Studio Code, and is meant to be front-end agnostic, providing live error checking, formatting, symbol lookup, etc. I was able to experiment and make progress for hours without building.</p></li></ul><h3>Inconveniences, Surprises, and&nbsp;Troubles</h3><p>Although Rust documentation itself is fantastic, the documentation for some of the crates I had to depend on left a lot to be desired&#8202;&#8212;&#8202;particularly around usage examples.</p><p>Some crates had well written integration tests, which offered clues on usage. As always, Stack Overflow and Reddit&nbsp;helped.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*lRAAu4ztCpoY0Iim9gJctg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*lRAAu4ztCpoY0Iim9gJctg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*lRAAu4ztCpoY0Iim9gJctg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*lRAAu4ztCpoY0Iim9gJctg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*lRAAu4ztCpoY0Iim9gJctg.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*lRAAu4ztCpoY0Iim9gJctg.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*lRAAu4ztCpoY0Iim9gJctg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*lRAAu4ztCpoY0Iim9gJctg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*lRAAu4ztCpoY0Iim9gJctg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*lRAAu4ztCpoY0Iim9gJctg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*lRAAu4ztCpoY0Iim9gJctg.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">&#8220;Where&#8217;s the documentation?&#8221;&#8202;&#8212;&#8202;Photo by <a href="https://unsplash.com/@benwhitephotography?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Ben White</a> on&nbsp;<a href="https://unsplash.com/s/photos/surprise?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>In addition:</p><ul><li><p>Understanding <a href="https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html">ownership</a>, lifetimes, and borrowing can produce a steep learning curve initially, especially when pushing to deliver functionality over a two-day hackathon. With a little poking, I could draw parallels with C++ and figure things out, but I still found myself scratching my head at&nbsp;times.</p></li><li><p>Of all the things, Strings tripped me up for a few minutes. String vs. &amp;str was confusing&#8202;&#8212;&#8202;until I took the time to understand ownership, lifetimes, and borrowing. Then, it all makes&nbsp;sense.</p></li></ul><h3>Other Observations About the&nbsp;Language</h3><ul><li><p>There&#8217;s no real null type in <em>safe</em> Rust (although there&#8217;s a notion of a <a href="https://doc.rust-lang.org/std/ptr/fn.null.html">null raw pointer</a>). What you&#8217;ll typically see is the liberal use of <a href="https://doc.rust-lang.org/std/option/">Option</a> types. which may evaluate to Some or None, with <a href="https://doc.rust-lang.org/book/ch18-00-patterns.html">pattern matching</a> frequently coming into&nbsp;play.</p></li><li><p>Pattern matching is awesome. It&#8217;s one of my favorite features in Scala, and I love that Rust has it too. The code looks expressive and allows the compiler to flag unhandled cases.</p></li></ul><p>&lt;a href="https://medium.com/media/494bd7088bb2efbb89ef00d0882e875f/href"&gt;https://medium.com/media/494bd7088bb2efbb89ef00d0882e875f/href&lt;/a&gt;</p><ul><li><p>Speaking of s<em>afe </em>and<em> unsafe, </em>you<em> </em>can still do lower-level programming, for say, interfacing with languages like C using <a href="https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html">unsafe</a> blocks of code. While a lot of correctness checks don&#8217;t go away, you&#8217;re allowed to do things like dereference raw pointers within unsafe blocks. Seeing an unsafe block is informative for anyone reading the code,&nbsp;too.</p></li><li><p>Allocation on the heap is done via Box, as opposed to using new and delete. This feels strange at first but is easy to get used to. There are also other <a href="https://doc.rust-lang.org/book/ch15-00-smart-pointers.html">smart pointer options</a> in the standard library if you need to do, say, reference counting or you need to hold onto weak references.</p></li><li><p>Exceptions are interesting in Rust, in that it doesn&#8217;t have any. Your options are either a Result&lt;T, E&gt; for recoverable errors or using the panic! macro to signal an unrecoverable error.</p></li></ul><p>&lt;a href="https://medium.com/media/2d8fe06f475991e1201ce0f90e6aa759/href"&gt;https://medium.com/media/2d8fe06f475991e1201ce0f90e6aa759/href&lt;/a&gt;</p><p><a href="https://doc.rust-lang.org/book/ch09-00-error-handling.html">The guide&nbsp;states</a>:</p><blockquote><p>&#8220;In many cases, Rust requires you to acknowledge the possibility of an error and take some action before your code will compile. This requirement makes your program more robust by ensuring that you&#8217;ll discover errors and handle them appropriately before you&#8217;ve deployed your code to production!&#8221;</p></blockquote><h3>Key Takeaways and&nbsp;Lessons</h3><ul><li><p>John Carmack once described the feeling of writing Rust code as &#8220;<a href="https://mobile.twitter.com/ID_AA_Carmack/status/1094419108781789184">very wholesome</a>.&#8221; I&#8217;d agree with that sentiment. This hackathon felt a lot more like opening doors to constantly discover and learn new things, rather than an indiscriminate code-cobbling effort.</p></li><li><p>In hindsight, I should&#8217;ve chosen my web framework a little more carefully. With a little more thought, I may have gone a different route (no pun intended). Web framework options are discussed and compared <a href="https://github.com/flosse/rust-web-framework-comparison">here</a>. I may consider <a href="http://ironframework.io/">iron</a>, <a href="https://actix.rs/">actix-web</a>, or even <a href="https://github.com/tiny-http/tiny-http">tiny-http</a> for my next&nbsp;project.</p></li><li><p>I&#8217;ve only scratched the surface as far as truly learning Rust goes&#8202;&#8212;&#8202;a 16-hour hackathon does not make a Rustacean, although my efforts here have got me curious to dig a lot deeper into the language. I&#8217;m excited for the future of Rust. I think it brings a lot of discipline to application building, is a very powerful and expressive language, and already offers runtime speed and memory performance on par with&nbsp;C++.</p></li></ul><p>Thank you for reading, I hope you learned something new about Rust or Rocket. Happy&nbsp;hacking!</p><h3>Resources</h3><p><a href="https://github.com/sidshank/rustic-backend">RustIC back-end&nbsp;code</a></p><p><a href="https://github.com/sidshank/rustic-frontend">RustIC front-end code</a></p><p><a href="https://github.com/dtolnay/rust-faq">Rust FAQ</a></p><p><a href="https://rocket.rs/">The Rocket web framework for&nbsp;Rust</a></p><p><a href="https://www.rusoto.org/">Rusoto: An AWS SDK for&nbsp;Rust</a></p><p><em>The Engineering team at Prodigy believes in using the right tool for the right job. We actively use Javascript, Python and Ruby, and are always willing to experiment with new technologies if we see a compelling use&nbsp;case.</em></p><p><em>The views and opinions expressed in this post are those of the author and don&#8217;t necessarily reflect the view of Prodigy Education or the engineering organization within Prodigy Education.</em></p><p><em>This post was originally published on January 10th, 2020 on the Better Programming publication.</em></p><div><hr></div><p><a href="https://medium.com/prodigy-engineering/learning-to-use-rust-over-a-16-hour-hackathon-4acb8f37247e">Learning To Use Rust Over a 16-Hour Hackathon</a> was originally published in <a href="https://medium.com/prodigy-engineering">Prodigy Engineering</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded></item><item><title><![CDATA[Software Engineering: 2030]]></title><description><![CDATA[Knowledge and Skill Investments for the Decade Ahead]]></description><link>https://www.sidshankar.com/p/software-engineering-2030-d81b98beb69c</link><guid isPermaLink="false">https://www.sidshankar.com/p/software-engineering-2030-d81b98beb69c</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Sun, 15 Dec 2019 04:24:02 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/1024/1*W1SNw5tyhT9srUFRAi5LRA.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4>Knowledge and Skill Investments for the Decade&nbsp;Ahead</h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*W1SNw5tyhT9srUFRAi5LRA.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*W1SNw5tyhT9srUFRAi5LRA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*W1SNw5tyhT9srUFRAi5LRA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*W1SNw5tyhT9srUFRAi5LRA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*W1SNw5tyhT9srUFRAi5LRA.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*W1SNw5tyhT9srUFRAi5LRA.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*W1SNw5tyhT9srUFRAi5LRA.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*W1SNw5tyhT9srUFRAi5LRA.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*W1SNw5tyhT9srUFRAi5LRA.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*W1SNw5tyhT9srUFRAi5LRA.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*W1SNw5tyhT9srUFRAi5LRA.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@baciutudor?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Tudor Baciu</a> on&nbsp;<a href="https://unsplash.com/s/photos/trend?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>Do you invest in the stock&nbsp;market?</p><p>If so, what are the principles you apply when deciding how to invest your hard earned&nbsp;money?</p><p>Do you:</p><ol><li><p>Look exclusively at past performance?</p></li><li><p>Follow your close circle of friends, and invest in the same&nbsp;things?</p></li><li><p>Follow the market? You trust the masses, most of them are probably right&#8230;&nbsp;right?</p></li><li><p>Not see the need to invest? You have enough money for your current expenses, and the money you are saving in a low interest account is good enough. But what about the falling purchasing power of that capital over&nbsp;time?</p></li><li><p>Carefully research company fundamentals, look at the price-equity ratio, consider future direction etc., assuming you either have some knowledge of the domain, or rely on trusted experts who&nbsp;do?</p></li><li><p>Look at broad social, economic and industrial trends, spot areas of promise, and find investments that fit these&nbsp;areas?</p></li></ol><p>If you&#8217;ve ever had money to invest, you&#8217;ve given this some thought (hopefully).</p><p>Now let me ask you&nbsp;this:</p><blockquote><p>Have you given as much thought to your knowledge and skill investments, as your monetary investments?</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*5v2HiSCo0jpzoduHAfEtLg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*5v2HiSCo0jpzoduHAfEtLg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*5v2HiSCo0jpzoduHAfEtLg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*5v2HiSCo0jpzoduHAfEtLg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*5v2HiSCo0jpzoduHAfEtLg.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*5v2HiSCo0jpzoduHAfEtLg.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*5v2HiSCo0jpzoduHAfEtLg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*5v2HiSCo0jpzoduHAfEtLg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*5v2HiSCo0jpzoduHAfEtLg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*5v2HiSCo0jpzoduHAfEtLg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*5v2HiSCo0jpzoduHAfEtLg.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@jaredd_craig?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Jaredd Craig</a> on&nbsp;<a href="https://unsplash.com/s/photos/knowledge?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>If you&#8217;re a Software Engineer like me, you are a <strong>knowledge worker</strong>. You invest your time, energy and money acquiring knowledge. You expect these knowledge investments will pay dividends, and increase your value to the market (Aside from the satisfaction of constant growth from learning).</p><p>Look back at the 6 broad strategies above, they&#8217;re all equally applicable to making knowledge investment choices.</p><p>What has your strategy been? What are some of the areas you&#8217;ll want to invest in over the next few&nbsp;years?</p><p>Here are <strong>some</strong> of the big trends I anticipate. Emphasis on <strong>some, </strong>because I won&#8217;t call out the ones that seem obvious to me (e.g. Artificial Intelligence) or ones I am not personally interested in investing in right&nbsp;now.</p><h3>The rise of the socially and environmentally conscious engineer</h3><p>The standout challenges of the coming decade will likely be in the areas&nbsp;of</p><ul><li><p>Clean energy&nbsp;tech</p></li><li><p>Economic empowerment and social&nbsp;mobility</p></li><li><p>Equal access to quality education</p></li><li><p>Food technology for a growing population and,</p></li><li><p>Health technology for an ageing&nbsp;one</p></li></ul><p>All while building products and services that have a low environmental impact.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*INymnXQhRXpxFLmwo9Cl6w.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*INymnXQhRXpxFLmwo9Cl6w.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*INymnXQhRXpxFLmwo9Cl6w.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*INymnXQhRXpxFLmwo9Cl6w.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*INymnXQhRXpxFLmwo9Cl6w.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*INymnXQhRXpxFLmwo9Cl6w.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*INymnXQhRXpxFLmwo9Cl6w.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*INymnXQhRXpxFLmwo9Cl6w.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*INymnXQhRXpxFLmwo9Cl6w.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*INymnXQhRXpxFLmwo9Cl6w.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*INymnXQhRXpxFLmwo9Cl6w.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@jeisblack?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Jason Blackeye</a> on&nbsp;<a href="https://unsplash.com/s/photos/clean-energy?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><blockquote><p>It&#8217;s going to be a unique time in the short history of software engineers, as we have the opportunity to engage in deeply meaningful and valuable work, and a responsibility to be a defining force for good in all of these&nbsp;areas.</p></blockquote><p><strong>Actions for&nbsp;Impact</strong>:</p><ol><li><p>As of December 2019, Angellist shows 250+ startups in <a href="https://angel.co/clean-energy/jobs">clean energy tech</a>, and 1400+ startups in <a href="https://angel.co/education/jobs">education tech</a>. And those are just the startups! Have you explored their mission and vision? What about the other areas mentioned above?</p></li><li><p>As a software engineer, have you thought about the role you can play in the climate crisis? The energy crisis? Or helping to level the playing field for those vastly less fortunate than&nbsp;you?</p></li><li><p>What diverse sources of information can you tap, to educate yourself about global issues and the ways in which some people / organizations are tackling the&nbsp;problem?</p></li></ol><h3>A demand-supply tension for systems programmers</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*S0Jg9Nu0K-jpnf_IrZiCvg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*S0Jg9Nu0K-jpnf_IrZiCvg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*S0Jg9Nu0K-jpnf_IrZiCvg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*S0Jg9Nu0K-jpnf_IrZiCvg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*S0Jg9Nu0K-jpnf_IrZiCvg.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*S0Jg9Nu0K-jpnf_IrZiCvg.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*S0Jg9Nu0K-jpnf_IrZiCvg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*S0Jg9Nu0K-jpnf_IrZiCvg.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*S0Jg9Nu0K-jpnf_IrZiCvg.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*S0Jg9Nu0K-jpnf_IrZiCvg.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*S0Jg9Nu0K-jpnf_IrZiCvg.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@zanilic?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Zan</a> on&nbsp;<a href="https://unsplash.com/s/photos/iot?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>Hundreds of millions of devices are online with more coming online every second. We know this as the Internet of Things&nbsp;(IoT).</p><p>5G is almost here, which means a lot of these devices, now and in the future, won&#8217;t be constrained to a WiFi connection to talk to each&nbsp;other.</p><p>This is going to further&nbsp;enable</p><ul><li><p>Robotics (everything from drones, to warehouse bots)</p></li><li><p>Autonomous systems</p></li><li><p>Augmented reality&nbsp;systems</p></li><li><p>Data gathering and transmitting sensors&nbsp;etc.</p></li></ul><p>We&#8217;ll all be living on the &#8220;edge&#8221;. (Sorry, I couldn&#8217;t resist!).</p><blockquote><p>The complexity of &#8220;edge&#8221; devices is dramatically scaling up with every passing year. I expect this to lead to a spike in demand for Systems engineers and programmers.</p></blockquote><p>On the supply side, we have numerous&nbsp;issues:</p><ol><li><p>Formal computer science course enrollment seems to be <a href="http://www.exploringcs.org/archives/resources/cs-statistics">dropping</a> year-over-year, all the way from secondary school to college, at least in the&nbsp;US.</p></li><li><p>I suspect languages like Python and Javascript are becoming the lingua franca of programming courses, with an increased emphasis on application building, and a reduced emphasis on deep computer science concepts.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*d90IFfumJV7zznF8FYvGRw.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*d90IFfumJV7zznF8FYvGRw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*d90IFfumJV7zznF8FYvGRw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*d90IFfumJV7zznF8FYvGRw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*d90IFfumJV7zznF8FYvGRw.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*d90IFfumJV7zznF8FYvGRw.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*d90IFfumJV7zznF8FYvGRw.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*d90IFfumJV7zznF8FYvGRw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*d90IFfumJV7zznF8FYvGRw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*d90IFfumJV7zznF8FYvGRw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*d90IFfumJV7zznF8FYvGRw.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@stem_t4l?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">stem.T4L</a> on&nbsp;<a href="https://unsplash.com/s/photos/robotic?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>The silver lining here is that a lot more children are being exposed to robotics and hardware-software interfaces through school, or coding / robotics&nbsp;camps.</p><p>I should add that a lot of systems programming, particularly for complex applications (think industries like industrial automation, automotive and aerospace) is also done via &#8220;Model-Based Design&#8221;. High-level block diagrams created in software result in auto-generated code for embedded&nbsp;devices.</p><p>Even here, having a solid knowledge of low-level programming languages and hardware fundamental is inescapable.</p><p><strong>Actions for&nbsp;impact</strong>:</p><ol><li><p>Learn a systems / low-level programming language like C or C++, or a more modern systems programming language like&nbsp;Rust.</p></li><li><p>Work towards building an awareness of low-level / deeper computer science concepts. You don&#8217;t necessarily need a computer science degree for&nbsp;this.</p></li><li><p>Buy an Arduino, or maybe a Raspberry Pi. Understand the hardware-software interface, make a few LEDs light up, then do something bigger and&nbsp;cooler.</p></li><li><p>Learn about Model-Based Design, and explore some tools that allow you to model your system and generate code from the&nbsp;model.</p></li></ol><blockquote><p>Full Disclosure: Model-Based Design Tools like <a href="https://www.mathworks.com/products/simulink.html">Simulink</a> and <a href="https://www.mathworks.com/products/stateflow.html">Stateflow</a> are close to my heart, since I spent a good chunk of my early career on Stateflow development.</p></blockquote><h3>Emotional Intelligence in an era of low&nbsp;empathy</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*GX7K9MFTo7yWeP2hRUiYyQ.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*GX7K9MFTo7yWeP2hRUiYyQ.png 424w, https://cdn-images-1.medium.com/max/1024/1*GX7K9MFTo7yWeP2hRUiYyQ.png 848w, https://cdn-images-1.medium.com/max/1024/1*GX7K9MFTo7yWeP2hRUiYyQ.png 1272w, https://cdn-images-1.medium.com/max/1024/1*GX7K9MFTo7yWeP2hRUiYyQ.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*GX7K9MFTo7yWeP2hRUiYyQ.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*GX7K9MFTo7yWeP2hRUiYyQ.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*GX7K9MFTo7yWeP2hRUiYyQ.png 424w, https://cdn-images-1.medium.com/max/1024/1*GX7K9MFTo7yWeP2hRUiYyQ.png 848w, https://cdn-images-1.medium.com/max/1024/1*GX7K9MFTo7yWeP2hRUiYyQ.png 1272w, https://cdn-images-1.medium.com/max/1024/1*GX7K9MFTo7yWeP2hRUiYyQ.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Image by <a href="https://pixabay.com/users/DamianNiolet-7379422/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=3017071">DAMIAN NIOLET</a> from&nbsp;<a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=3017071">Pixabay</a></figcaption></figure></div><p>My last suggestion is not a tech-skill, but a collection of soft-skills. The term &#8220;soft-skills&#8221; doesn&#8217;t do it justice. I&#8217;m referring to Emotional Intelligence and everything it signifies, such as excellent communication, the ability to have difficult but candid conversations, demonstrating grit, motivating others, being mindful of mental health&nbsp;etc.</p><blockquote><p>All of these skills are only &#8220;soft&#8221; in that they are not as tangible as learning a technology. In reality, there&#8217;s nothing soft or easy about&nbsp;them.</p></blockquote><blockquote><p>Add to this the fact that we live in an era of low and divided attention spans, lower empathy and lower social interconnectedness.</p></blockquote><blockquote><p>Sadly, emotional intelligence runs the risk of becoming rare at a time when we need it the&nbsp;most.</p></blockquote><p>Emotional Intelligence has always been necessary, but it&#8217;s especially important now as the decade brings an economy that is becoming increasingly knowledge based.</p><p>An economy that rewards innovation, creativity and working well with others. Exhibiting emotional intelligence is going to be a hard pre-requisite, as opposed to a &#8220;nice to&nbsp;have&#8221;.</p><p><strong>Actions for&nbsp;impact:</strong></p><ol><li><p>How well do you <em>truly </em>know yourself? Have you taken something like a briggs-meyers personality assessment test to get a rough sense for how you operate in most scenarios? How <em>self-aware</em> are&nbsp;you?</p></li><li><p>The World Health Organization says that Depression is one of the leading causes of disability worldwide. What do you know about mental health in general? Do you know how to spot the signs of a mental health issue in yourself, or others? If you did, would you know how to intervene?</p></li></ol>]]></content:encoded></item><item><title><![CDATA[Give and Take: a journey of self-awareness towards building better teams]]></title><description><![CDATA[I recently finished reading Give and Take by Adam Grant [1].]]></description><link>https://www.sidshankar.com/p/give-and-take-a-journey-of-self-awareness-towards-building-better-teams-6aab41f494a8</link><guid isPermaLink="false">https://www.sidshankar.com/p/give-and-take-a-journey-of-self-awareness-towards-building-better-teams-6aab41f494a8</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Tue, 05 Nov 2019 17:07:58 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/1024/1*sNLJDJCteCGuEh45RoL2Lw.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*sNLJDJCteCGuEh45RoL2Lw.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*sNLJDJCteCGuEh45RoL2Lw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*sNLJDJCteCGuEh45RoL2Lw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*sNLJDJCteCGuEh45RoL2Lw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*sNLJDJCteCGuEh45RoL2Lw.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*sNLJDJCteCGuEh45RoL2Lw.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*sNLJDJCteCGuEh45RoL2Lw.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*sNLJDJCteCGuEh45RoL2Lw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*sNLJDJCteCGuEh45RoL2Lw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*sNLJDJCteCGuEh45RoL2Lw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*sNLJDJCteCGuEh45RoL2Lw.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@timmossholder?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Tim Mossholder</a> on&nbsp;<a href="https://unsplash.com/s/photos/generous?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>I recently finished reading <a href="https://www.betterworldbooks.com/product/detail/Give-and-Take--Why-Helping-Others-Drives-Our-Success-9781780224725">Give and Take by Adam Grant</a> [1]. It&#8217;s rare to find a book that gives you interesting insights, while also holding up a mirror for you to see yourself in a new light. This was one such&nbsp;book.</p><p>In essence, Give and Take describes three primary behaviour profiles:</p><ol><li><p><strong>Givers</strong> &#8211; Generously giving their time, energy and resources to help others succeed. In this category, there are also &#8220;Altruistic Givers&#8221; who often forego success by putting the needs of others before themselves, and &#8220;Otherish&#8221; givers who are equally motivated in finding their own success as they are in making others successful.</p></li><li><p><strong>Matchers</strong> &#8211; Who believe strongly in reciprocity and only offering resources to those from whom they can expect something in return,&nbsp;and</p></li><li><p><strong>Takers</strong> &#8211; Low on empathy towards others, their primary focus is their own&nbsp;success.</p></li></ol><p>As expected, people don&#8217;t always neatly slot into these three&nbsp;buckets.</p><p>Reflecting on my past behaviour and actions, I can honestly say that I have found myself toggling between Giving and Matching over the years, and I was definitely in situations where I tended towards being a Taker early in my&nbsp;career.</p><p>To me, that was the biggest personal insight &#8211; <em>Giving, Matching and Taking behaviours can be very situational</em>.</p><p>Apart from an insight related to the primary focus of the book, I wanted to share some excerpts from this book that raised my awareness levels, <em>particularly in the context of teams in a professional work environment</em>.</p><h3><strong>Build Self-Awareness in Failure and&nbsp;Success</strong></h3><p>Generally speaking, it&#8217;s important to recognise that a lot of your success at work, comes with the support of others on your team. They are a part of your successes, just as you should be a part of&nbsp;theirs.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*kqKpvAkbHl-Efq84dzKk6w.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*kqKpvAkbHl-Efq84dzKk6w.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*kqKpvAkbHl-Efq84dzKk6w.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*kqKpvAkbHl-Efq84dzKk6w.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*kqKpvAkbHl-Efq84dzKk6w.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*kqKpvAkbHl-Efq84dzKk6w.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*kqKpvAkbHl-Efq84dzKk6w.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*kqKpvAkbHl-Efq84dzKk6w.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*kqKpvAkbHl-Efq84dzKk6w.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*kqKpvAkbHl-Efq84dzKk6w.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*kqKpvAkbHl-Efq84dzKk6w.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@miinyuii?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Duy Pham</a> on&nbsp;<a href="https://unsplash.com/s/photos/together?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>Adam Grant mentions a study (with professors Robert Huckman and Gary Pisano of Harvard Businss School) that wanted to discover whether surgeons get better with practice.</p><blockquote><p><strong>Overall, the surgeons didn&#8217;t get better with practice</strong>. They only got better at the specific hospital where they practised. For every procedure they handled at a given hospital, the risk of patient mortality dropped by 1 percent. But the risk of mortality stayed the same at other hospitals. <strong>The surgeons couldn&#8217;t take their performance with them</strong>. They weren&#8217;t getting better at performing coronary artery bypass grafts. They were becoming more familiar with particular nurses and anaesthesiologists, learning about their strengths and weaknesses, habits, and styles. This familiarity helped them avoid patient deaths, but it didn&#8217;t carry over to other hospitals. To reduce the risk of patient mortality, the surgeons needed relationships with specific surgical team&nbsp;members.</p></blockquote><p>Your outcomes at work, especially your successes, are as much a function of your work environment and the team you work with, as they are a function of your own skill and attitude. This <strong>should not </strong>be used as a crutch or excuse in failure, and it absolutely <strong>should</strong> be kept in mind when achieving success on a&nbsp;team.</p><blockquote><p><em>Regardless of success or failure, there is a need to reflect on the circumstances that led there</em>. In failure, taking ownership of shortcomings; and in success, examining the ways in which the team worked together to kick&nbsp;ass.</p></blockquote><p>This sort of postmortem is necessary to stay grounded and raise self-awareness. In the absence of this, it&#8217;s going to be hard to replicate success or avoid failures, especially if you&#8217;re looking to find success with another team or organisation.</p><h3>Your Team Wants to Help&nbsp;You</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*PDs_19JwUCLc_0eG_380pw.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*PDs_19JwUCLc_0eG_380pw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*PDs_19JwUCLc_0eG_380pw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*PDs_19JwUCLc_0eG_380pw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*PDs_19JwUCLc_0eG_380pw.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*PDs_19JwUCLc_0eG_380pw.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*PDs_19JwUCLc_0eG_380pw.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*PDs_19JwUCLc_0eG_380pw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*PDs_19JwUCLc_0eG_380pw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*PDs_19JwUCLc_0eG_380pw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*PDs_19JwUCLc_0eG_380pw.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@anniespratt?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Annie Spratt</a> on&nbsp;<a href="https://unsplash.com/s/photos/help?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>Do you remember your first job, working on a team where everyone was likely more experienced than you? After a few years of experience, do you remember the last time you started on a new team at a new organisation?</p><p>I bet there were plenty of times you thought &#8211; &#8220;I can&#8217;t ask for too much help, it&#8217;ll annoy my teammates&#8221;. Even if it meant spinning your wheels on a task you had no idea how to move forward&nbsp;with?</p><p>&#9995; I&#8217;ve definitely been guilty of&nbsp;this.</p><p>For anyone else who raised their hand or nodded their head while reading this, here&#8217;s some food for&nbsp;thought:</p><blockquote><p>When people assume that others aren&#8217;t givers, they act and speak in ways that discourage others from giving, creating a self fulfilling prophecy.</p></blockquote><blockquote><p>Research shows that at work,<strong> the vast majority of giving that occurs between people is in response to direct requests for help</strong>. In one study, managers described times when they gave and received help. Of all the giving exchanges that occurred, roughly 90 percent were initiated by the recipient asking for help. Yet when we have a need, we&#8217;re often reluctant to ask for&nbsp;help.</p></blockquote><blockquote><p><strong>Much of the time, we&#8217;re embarrassed: we don&#8217;t want to look incompetent or needy, and we don&#8217;t want to burden&nbsp;others</strong>.</p></blockquote><blockquote><p>As one Wharton dean explains, &#8220;<strong>The students call it Game Face: they feel pressured to look successful all the time. There can&#8217;t be any chinks in their armour, and opening up would make them vulnerable.&#8221;</strong></p></blockquote><blockquote><p>Psychologically safe working environments make it easier to be vulnerable, eliminating the barriers and friction that prevent people from asking for or giving help. In a new team or new workplace, hold on to your giver mindset, and start by assuming that everyone else feels the same&nbsp;way.</p></blockquote><h3>Help Yourself With&nbsp;Grit</h3><p>As I look back on my career so far, and think about all the teams I have been a part of, the successful ones were the ones with grit. These were teams where grit was weaved into the culture, and was often catalysed into new members joining the&nbsp;team.</p><p>Team members enjoyed working with each other, and weren&#8217;t afraid to challenge each other while setting a high&nbsp;bar.</p><p>In <em>Give and Take</em>, Adam Grant mentions:</p><blockquote><p>Research shows that above and beyond intelligence and aptitude, gritty people&#8202;&#8212;&#8202;by virtue of their interest, focus, and drive&#8202;&#8212;&#8202;achieve higher performance. <strong>This is why givers focus on gritty people: it&#8217;s where givers have the greatest return on their investment, the most meaningful and lasting impact</strong>. And along with investing their time in motivating gritty people, cultivating Grit is about setting high expectations, getting people to stretch, and getting them to do more than they thought they were capable&nbsp;of.</p></blockquote><blockquote><p>It struck me that these teams with &#8220;high grit&#8221; were also teams where there was a culture of generously sharing time and resources, to help each other succeed. Because of this, these teams tended to foster a culture of mentoring and giving, while also attracting mentors and givers from outside the&nbsp;team.</p></blockquote><p>I can confidently say that this book has raised my self-awareness and given me another lens with which to examine the dynamics of the teams I work with. It&#8217;s an engrossing and well written book&#8202;&#8212;&#8202;I would highly recommend it.</p><h3>Footnotes</h3><p>[1] This link is to betterworldbooks.com&#8202;&#8212;&#8202;they &#8220;<em><a href="https://www.betterworldbooks.com/info.aspx?f=our_impact">have raised millions of dollars for literacy, saved millions of books from landfills, created jobs for hundreds of people, and provided wonderful books to millions of readers worldwide</a>&#8221;&#8202;&#8212;&#8202;I&#8217;m a huge fan of their mission, please consider buying your next book from&nbsp;them</em></p>]]></content:encoded></item><item><title><![CDATA[Getting to know the cloud: Year 1]]></title><description><![CDATA[When I was 6 years old, I remember asking my father what he did when he routinely vanished every day, for a good part of the day, to this mysterious place called &#8220;the office&#8221;.]]></description><link>https://www.sidshankar.com/p/getting-to-know-the-cloud-year-1-7bf60eb04013</link><guid isPermaLink="false">https://www.sidshankar.com/p/getting-to-know-the-cloud-year-1-7bf60eb04013</guid><dc:creator><![CDATA[Sid Shankar]]></dc:creator><pubDate>Sun, 29 Sep 2019 02:59:44 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/1024/0*FXY-wllLHczXMipK" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/0*FXY-wllLHczXMipK" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/0*FXY-wllLHczXMipK 424w, https://cdn-images-1.medium.com/max/1024/0*FXY-wllLHczXMipK 848w, https://cdn-images-1.medium.com/max/1024/0*FXY-wllLHczXMipK 1272w, https://cdn-images-1.medium.com/max/1024/0*FXY-wllLHczXMipK 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/0*FXY-wllLHczXMipK" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/0*FXY-wllLHczXMipK&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/0*FXY-wllLHczXMipK 424w, https://cdn-images-1.medium.com/max/1024/0*FXY-wllLHczXMipK 848w, https://cdn-images-1.medium.com/max/1024/0*FXY-wllLHczXMipK 1272w, https://cdn-images-1.medium.com/max/1024/0*FXY-wllLHczXMipK 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>When I was 6 years old, I remember asking my father what he did when he routinely vanished every day, for a good part of the day, to this mysterious place called &#8220;the office&#8221;. I remember him telling me that he worked with &#8220;software&#8221;. That word seemed so funny at the time. The 6-year-old me heard it as &#8220;soft wear&#8221; and immediately thought: &#8220;Hmm&#8230; my dad makes clothes for a&nbsp;living&#8221;.</p><p>Odd and obscure anecdotes aside, when I first started building software as a hobby, and then professionally, I had no idea where the journey would take me. I just assumed that all software engineers eventually became as good as <a href="https://en.wikipedia.org/wiki/The_C_Programming_Language">Kernighan and Ritchie</a>, able to create new programming languages at will, and that they had read every page of the &#8220;<a href="https://en.wikipedia.org/wiki/Introduction_to_Algorithms">Introduction to Algorithms</a>&#8221; book, with absolute mastery of the algorithms and data structures defined in&nbsp;there.</p><p>Yes, I grew up in the age of the internet, but from my experience with it in the early 2000s, I didn&#8217;t consider statically served pages, and a smattering of online shopping portals as &#8220;real software&#8221;. My ideas around how google and Amazon worked were naive, and I had given little to no thought to the complexities these services had to deal with, and how neatly it was all hidden away behind the simple pages I ultimately saw in my browser&nbsp;window.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/960/0*lCwE5q4rA6iYKG0y.jpg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/960/0*lCwE5q4rA6iYKG0y.jpg 424w, https://cdn-images-1.medium.com/max/960/0*lCwE5q4rA6iYKG0y.jpg 848w, https://cdn-images-1.medium.com/max/960/0*lCwE5q4rA6iYKG0y.jpg 1272w, https://cdn-images-1.medium.com/max/960/0*lCwE5q4rA6iYKG0y.jpg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/960/0*lCwE5q4rA6iYKG0y.jpg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/960/0*lCwE5q4rA6iYKG0y.jpg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/960/0*lCwE5q4rA6iYKG0y.jpg 424w, https://cdn-images-1.medium.com/max/960/0*lCwE5q4rA6iYKG0y.jpg 848w, https://cdn-images-1.medium.com/max/960/0*lCwE5q4rA6iYKG0y.jpg 1272w, https://cdn-images-1.medium.com/max/960/0*lCwE5q4rA6iYKG0y.jpg 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>I spent the first 8&#8211;10 years of my career as a software engineer building desktop-bound applications. I worked on device drivers for data acquisition and instrument control, built compiler features for model-based design tools, and developed user interfaces and workflows for software that was destined to be installed and operated on a&nbsp;desktop.</p><p>On this journey, I learned the tools and techniques to develop, maintain and debug software of this nature, and found ways to write code that would treat processor and memory resources on the host computer with care, like the scarce resources that they&nbsp;were.</p><p>In those same 10 years of my career, Software as a Service (SaaS) has exploded in terms of the number of software solutions and services deployed in that manner, as well as the complexity and sophistication of those solutions. There&#8217;s probably enough material to write a book (or a few) about that. As I see it, some of the catalysts for this&nbsp;are:</p><ul><li><p><strong>Massive increases in network bandwidth</strong>, and how easy internet access has become in most parts of the world. Many of us are fortunate enough to be able to access the internet as easily as turning on a tap of&nbsp;water.</p></li><li><p>The precipitous drop in the <strong>cost per unit of processing power, storage, and memory</strong> in the cloud, and the ubiquity of cloud service providers.</p></li><li><p>An <strong>explosion of open-source software tools and frameworks</strong> that have allowed applications and services to be built rapidly, making the ability to quickly build out an idea and offering it as a service, a lot more accessible. In other words, you don&#8217;t need to be an accomplished software engineer with a four year degree to approach this work anymore. A lot of the complexity is hidden away (for better or worse), allowing high level thoughts and ideas to be easily and quickly expressed, and then made available equally quickly because of the above mentioned factors. Anyway, I&nbsp;digress.</p></li></ul><p>After a few years of desktop application building, I had this nagging feeling that I was missing out on entire categories of software engineering challenges, by not working on large scale SaaS. Outside of work, building a few small applications for my own learning, and experimenting in my own time is one thing. However, I was convinced that immersing myself in problems like this as part of my full-time job was the way to go, if I really wanted to learn how to build and operate software that was resilient and malleable, and that played / orchestrated well with other services.</p><p>It&#8217;s been a year since I started working on software in the cloud, and I wanted to share some of the differences (and similarities) I have observed, when developing software for the desktop (I&#8217;ll refer to this as &#8220;desktop software&#8221;) vs. a service or application hosted in the cloud (I&#8217;ll refer to this as&nbsp;&#8220;SaaS&#8221;).</p><p><strong>A few&nbsp;notes:</strong></p><ol><li><p>This isn&#8217;t meant to be an exhaustive list of differences between developing for desktop applications vs. engineering SaaS. These are just my personal (and subjective) experiences with&nbsp;them.</p></li><li><p>This isn&#8217;t about espousing one way of doing things, or another. It&#8217;s just a compilation of observations in the short time that I have been building things on the &#8220;other side of the fence&#8221;.&nbsp;:)</p></li></ol><h4><strong>Debugging application logic</strong></h4><p>From a software engineering perspective, debugging the applications I was building using C++, Java, MATLAB etc. especially for applications where I either owned or had access to the source code, was as simple&nbsp;as:</p><ol><li><p>Set a breakpoint in the source&nbsp;code</p></li><li><p>Attach to process (if already running) or run the application in debug&nbsp;mode,</p></li><li><p>Land at the breakpoint by executing the appropriate functionality, and start investigating.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/300/0*Qs3aeCxU5yCC-yvS" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/300/0*Qs3aeCxU5yCC-yvS 424w, https://cdn-images-1.medium.com/max/300/0*Qs3aeCxU5yCC-yvS 848w, https://cdn-images-1.medium.com/max/300/0*Qs3aeCxU5yCC-yvS 1272w, https://cdn-images-1.medium.com/max/300/0*Qs3aeCxU5yCC-yvS 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/300/0*Qs3aeCxU5yCC-yvS" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/300/0*Qs3aeCxU5yCC-yvS&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/300/0*Qs3aeCxU5yCC-yvS 424w, https://cdn-images-1.medium.com/max/300/0*Qs3aeCxU5yCC-yvS 848w, https://cdn-images-1.medium.com/max/300/0*Qs3aeCxU5yCC-yvS 1272w, https://cdn-images-1.medium.com/max/300/0*Qs3aeCxU5yCC-yvS 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Debugging, because who doesn&#8217;t love a good Heisenbug? Source: <a href="https://thedailyomnivore.net/2012/11/30/heisenbug/">https://thedailyomnivore.net/2012/11/30/heisenbug/</a></figcaption></figure></div><p>For SaaS&#8202;&#8212;&#8202;The first time I had to investigate a bug in the Javascript based frontend locally, I spent hours trying to figure out (on my own, and asking colleagues) how to setup and launch all the right services locally, since the bug was in a part of the application which could only be accessed by performing a workflow that required the interaction of all those micro-services. At least in this case, the saving grace was that browsers come with developer interfaces to inspect and set breakpoints on Javascript code.</p><p>A few days later, I had to investigate a bug in Python source code in a Django based system that was containerized, and soon had the sinking realization that there was no out-of-the-box &#8220;Set a breakpoint in an IDE and hit Run&#8221; workflow, to stop at a breakpoint to inspect things. Yes, it is possible, and I figured it out, but it still takes more setup and preparation than I was used&nbsp;to.</p><p>The positive side of this is that I got much better at eyeballing code to find possible issues, and instrumenting code I wrote with logs and metrics to make sure that any bugs I introduced in my code could be found a lot faster by following the presence / absence of messages in our logging and metric collection services.</p><h4>Determining usage and error issues via metrics and&nbsp;logging</h4><p>Speaking of logging usage and errors, enterprise software running on a desktop needs to phone home, at least intermittently, to transmit anonymized usage statistics, crash reports or error logs. That is, if the user of that software isn&#8217;t behind a network and firewall that prevents this information from being sent back, or, even gave you the permission to phone back home in the first&nbsp;place.</p><p>For SaaS, my experience so far has been that at least for services and applications that aren&#8217;t in a private cloud environment, the provider of the service is free to make calls to a logging and metrics services to continually log information, as long as it pertains to the functioning of that application.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/0*sBMC1hbckYFz1mGa" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/0*sBMC1hbckYFz1mGa 424w, https://cdn-images-1.medium.com/max/1024/0*sBMC1hbckYFz1mGa 848w, https://cdn-images-1.medium.com/max/1024/0*sBMC1hbckYFz1mGa 1272w, https://cdn-images-1.medium.com/max/1024/0*sBMC1hbckYFz1mGa 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/0*sBMC1hbckYFz1mGa" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/0*sBMC1hbckYFz1mGa&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/0*sBMC1hbckYFz1mGa 424w, https://cdn-images-1.medium.com/max/1024/0*sBMC1hbckYFz1mGa 848w, https://cdn-images-1.medium.com/max/1024/0*sBMC1hbckYFz1mGa 1272w, https://cdn-images-1.medium.com/max/1024/0*sBMC1hbckYFz1mGa 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Why is the ability to log errors and usage metrics over the network so important? In desktop applications that are missing this functionality, especially in major / critical enterprise software, the only way you find out about major issues and bugs that were missed by multiple rounds of QA, is through a sudden influx of support tickets to your frontline support team. Ideally, you want to be finding out about these issues as they happen, and have a fix ready (or have a team working on it) before the first support call even comes&nbsp;in.</p><p>Leaving aside errors and crashes for a moment, in the absence of metrics, it&#8217;s hard to see how your user base is using new and existing features, assuming they have even discovered those features you spent months working&nbsp;on.</p><p>In the SaaS world, services like Sentry, Datadog, New Relic etc. make the tracking of logs and metrics a joy. Similarly, services like Optimizely integrated into your web application or service, allow you to run and track A/B experiments in real-time, enable or disable different experiments, or react to user issues in real time. The tight feedback loops of SaaS can be hard or impossible to replicate in desktop software, preventing access to quick user feedback around the usage of features.</p><h4>Continuous Integration &amp; Continuous Deployment (CI /&nbsp;CD)</h4><p>Of course, those tight feedback &#8220;loops&#8221; I just referred to wouldn&#8217;t be possible without CI/CD. When I worked on desktop applications, producing a &#8220;release&#8221; was usually a major cross-team effort within the organization.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/960/0*tt-LVi1EKxOFLdf6.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/960/0*tt-LVi1EKxOFLdf6.png 424w, https://cdn-images-1.medium.com/max/960/0*tt-LVi1EKxOFLdf6.png 848w, https://cdn-images-1.medium.com/max/960/0*tt-LVi1EKxOFLdf6.png 1272w, https://cdn-images-1.medium.com/max/960/0*tt-LVi1EKxOFLdf6.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/960/0*tt-LVi1EKxOFLdf6.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/960/0*tt-LVi1EKxOFLdf6.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/960/0*tt-LVi1EKxOFLdf6.png 424w, https://cdn-images-1.medium.com/max/960/0*tt-LVi1EKxOFLdf6.png 848w, https://cdn-images-1.medium.com/max/960/0*tt-LVi1EKxOFLdf6.png 1272w, https://cdn-images-1.medium.com/max/960/0*tt-LVi1EKxOFLdf6.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Planned releases often occurred months apart. There may be no process in place for &#8220;unplanned&#8221; releases, which means you&#8217;re forced to offer inconvenient workarounds for issues, or no solution if a workaround doesn&#8217;t exist. Even if there is a process for unplanned releases, it can take days, or even weeks to get the pieces in place necessary to produce a new release that fixes a critical bug, or an issue that&#8217;s causing a major inconvenience.</p><p>While some of this is a function of the organizational processes, size and culture, my experience was that for the development of desktop software, continuous integration was the best you could do. You could of course &#8220;continuously deploy&#8221; internally for QA or other internal uses, but without being able to continually deploy new bug fixes, enhancements and features to end-users, you didn&#8217;t reap the benefits of true&nbsp;CD.</p><h4>Scalability in the face of unpredictable compute&nbsp;loads</h4><p>I spent a great deal of time squeezing every bit of <strong>CPU and memory performance</strong> I could out of applications I worked on. Processor clock speeds have more or less plateaued, and there&#8217;s a limit to the number of cores you can squeeze onto a processor.</p><p>Besides, your software needs to be built to be able to take advantage of the parallelism that multi-core processors might offer, and that often isn&#8217;t the case. If you want performant software that doesn&#8217;t bog down a system, then you can&#8217;t play fast and loose with CPU and memory consumption. Therefore, when developing desktop applications, benchmarking for performance is particularly important.</p><p>In the SaaS world, you&#8217;re free to spin up multiple instances of your services when faced with a surge in load, and you can run select CPU or memory intensive services on compute resources with superior processor and memory capabilities.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/982/0*goiaoFF4bRQP-MFM" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/982/0*goiaoFF4bRQP-MFM 424w, https://cdn-images-1.medium.com/max/982/0*goiaoFF4bRQP-MFM 848w, https://cdn-images-1.medium.com/max/982/0*goiaoFF4bRQP-MFM 1272w, https://cdn-images-1.medium.com/max/982/0*goiaoFF4bRQP-MFM 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/982/0*goiaoFF4bRQP-MFM" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/982/0*goiaoFF4bRQP-MFM&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/982/0*goiaoFF4bRQP-MFM 424w, https://cdn-images-1.medium.com/max/982/0*goiaoFF4bRQP-MFM 848w, https://cdn-images-1.medium.com/max/982/0*goiaoFF4bRQP-MFM 1272w, https://cdn-images-1.medium.com/max/982/0*goiaoFF4bRQP-MFM 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Even so, <strong>performance benchmarkin</strong>g shouldn&#8217;t be losing its importance for SaaS. Once these services are in production, the automatic scaling (up or down) of these compute resources often masks runtime speed and memory consumption issues. I have seen cases of memory leaks going undetected for a lot longer than they would have, had those same services been running on a desktop. All because killing and spinning up new instances happened so automatically and&nbsp;easily.</p><p>It does take more discipline to design and implement for low resource utilization, especially for non-critical applications with no *hard* latency requirements, where it may not feel necessary.</p><h4>Data Considerations</h4><p>The storage and security of data had never been a concern for me, until now. Of course, this was unique to the application I was building. If I were working on, say, the desktop version of a software like TurboTax, that works with sensitive personal and financial information, having solid <strong>access controls</strong> in place would be necessary. In that case, protecting data access from malicious actors (both human, and other programs) would be the primary challenge.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/960/0*5ykUnwBN1Kyuj4iy.jpg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/960/0*5ykUnwBN1Kyuj4iy.jpg 424w, https://cdn-images-1.medium.com/max/960/0*5ykUnwBN1Kyuj4iy.jpg 848w, https://cdn-images-1.medium.com/max/960/0*5ykUnwBN1Kyuj4iy.jpg 1272w, https://cdn-images-1.medium.com/max/960/0*5ykUnwBN1Kyuj4iy.jpg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/960/0*5ykUnwBN1Kyuj4iy.jpg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/960/0*5ykUnwBN1Kyuj4iy.jpg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/960/0*5ykUnwBN1Kyuj4iy.jpg 424w, https://cdn-images-1.medium.com/max/960/0*5ykUnwBN1Kyuj4iy.jpg 848w, https://cdn-images-1.medium.com/max/960/0*5ykUnwBN1Kyuj4iy.jpg 1272w, https://cdn-images-1.medium.com/max/960/0*5ykUnwBN1Kyuj4iy.jpg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>In the cloud, many other degrees of freedom (to borrow a term from mathematics) open up when it comes to Data. Take for example<strong> data residency</strong>&#8202;&#8212;&#8202;the requirement for data to be localized to a specific geographical region. Systems and infrastructure need to be setup and configured to ensure these residency requirements are met. Failing to meet these requirements can result in serious compliance violations.</p><p>Similarly, for software solutions of a certain type, or in certain industries, clients may insist on <strong>physical separation or isolation of their data</strong>. There may be concerns around data leakage, or a desire to protect themselves from malicious tenants sharing the same physical infrastructure. This needs to be accounted for when designing the&nbsp;system.</p><p><strong>Managing data access </strong>feels exponentially harder. At least when your software resided completely on the end user&#8217;s machine, apart from the due diligence access controls your application needed, the rest was up to the end user. On the other hand, for your software solution hosted in the cloud, all it takes is the production database or application credentials falling into the wrong hands. A rogue (ex?) employee, maybe a careless one, or the misfortune of being targeted by a sophisticated criminal could all lead to serious problems. In addition to all the technical steps you take to secure your data, there is a need for strong processes and a system of audits, checks and balances to ensure the security and integrity of&nbsp;data.</p><h4>Wrapping up</h4><p>There&#8217;s been a ton of learning over the past year. To be clear, I&#8217;m not &#8220;picking sides&#8221; or preaching one way of building software over the other. I chose to move over to building software in the cloud because I wanted to experience the engineering challenges that came with building resilient and scalable applications that were served this way. As an engineer who loves building user-centered software products, I&#8217;ve been enjoying the quick iteration cycles and tight feedback loops that seem to come with the territory on this side of the fence. There&#8217;s SO much more to learn, and I&#8217;m excited to see where that takes&nbsp;me.</p>]]></content:encoded></item></channel></rss>