<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jo Rhett</title>
    <description>The latest articles on DEV Community by Jo Rhett (@jorhett).</description>
    <link>https://dev.to/jorhett</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1453928%2F1f06735e-c819-41ab-b267-9c612c4db64e.jpg</url>
      <title>DEV Community: Jo Rhett</title>
      <link>https://dev.to/jorhett</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jorhett"/>
    <language>en</language>
    <item>
      <title>Keys to Success: Reduce Cognitive Load</title>
      <dc:creator>Jo Rhett</dc:creator>
      <pubDate>Mon, 19 May 2025 18:27:00 +0000</pubDate>
      <link>https://dev.to/jorhett/keys-to-success-reduce-cognitive-load-18ei</link>
      <guid>https://dev.to/jorhett/keys-to-success-reduce-cognitive-load-18ei</guid>
      <description>&lt;p&gt;Reducing cognitive load is perhaps one of the most important things we do, both for our co-workers and for our customers.&lt;/p&gt;

&lt;p&gt;What is cognitive load? Simply put, &lt;a href="https://en.wikipedia.org/wiki/Cognitive_load" rel="noopener noreferrer"&gt;cognitive load is the effort being used in the working memory&lt;/a&gt;. This working memory can be overwhelmed when processing large amounts of new or complex information, leading to reduced comprehension and retention.&lt;/p&gt;

&lt;p&gt;It would be hard to show this better than was done by &lt;a href="https://github.com/zakirullin/cognitive-load/blob/main/LICENSE" rel="noopener noreferrer"&gt;Artem Zakirullin at github.com/zakirullin/cognitive-load&lt;/a&gt;&lt;br&gt;&lt;br&gt;
 &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4au6g5x1nyyhebk93qbn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4au6g5x1nyyhebk93qbn.png" alt="Stairway to mental overload" width="800" height="590"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I review pull requests, effort taken to reduce cognitive load for a future reader is one of my primary targets. If your pull request description is so unclear that a person has to read the code to understand it, you aren’t helping your coworkers (who will end up maintaining it) or your customers, who are impacted by the speed and accuracy of the cognition of your work.&lt;/p&gt;

&lt;p&gt;If the person who has to maintain or interact with your code later has to spend almost as much time understanding it as you did writing it, then what you did has very limited, and arguably negative value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So how do we reduce cognitive load?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our goal should always be to reduce cognitive load for the reader, allowing them to make use of the primary knowledge without having to go through the entire learning process on their own. You found the way up this mountain, leave a clear trail to make the process easier for the person behind you.&lt;/p&gt;

&lt;p&gt;1. Remove noise – &lt;strong&gt;Don’t ask someone else to expend effort to identify what is important.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What you submit for review should be focused and high quality. Remove any:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;inactive pieces of code&lt;/li&gt;
&lt;li&gt;junk or obviously wrong values&lt;/li&gt;
&lt;li&gt;personal notes or obtuse comments that would confuse someone from outside&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A code reviewer should never be required to identity and discard pieces of unused code that aren’t applicable to what they are reviewing.&lt;/p&gt;

&lt;p&gt;2. Describe the change clearly. Make clear to the reader &lt;strong&gt;What&lt;/strong&gt; changed and &lt;strong&gt;Why&lt;/strong&gt; , as the &lt;em&gt;How&lt;/em&gt; should visible in the code itself.&lt;/p&gt;

&lt;p&gt;Speak only to the change and how it works. Don’t include references to other efforts unless they are necessary to the topic, and never, ever refer offhand to something only a person with current context will understand. You’d be surprised how fast context degrades even in closed, tight teams.&lt;/p&gt;

&lt;p&gt;3. A pull request ready for review should have all commit messages squashed down to a clear definition of the changes. Under no circumstances should a PR contain commit messages speaking to the progress of the development.&lt;/p&gt;

&lt;p&gt;There’s a tremendous load put on the reader by seeing dozens of commits that go back and forth on minor changes. Squash your development process down to make it easier for the reviewer.&lt;/p&gt;

</description>
      <category>geekery</category>
    </item>
    <item>
      <title>Hiring — Yer doin’ it wrong.</title>
      <dc:creator>Jo Rhett</dc:creator>
      <pubDate>Thu, 11 Apr 2019 19:18:33 +0000</pubDate>
      <link>https://dev.to/jorhett/hiring-yer-doin-it-wrong-2i70</link>
      <guid>https://dev.to/jorhett/hiring-yer-doin-it-wrong-2i70</guid>
      <description>&lt;p&gt;Effective earlier this month, I’ve decided to start rejecting requests for whiteboard coding not actually related to my job. I think you should too, and here’s why:&lt;/p&gt;

&lt;p&gt;I think we’ve all faced it. The request to code up and optimize an algorithm on a whiteboard. While these can be fun and once in a while lead to interesting discussions with the interviewer, unless you are an engineer being hired to work on algorithmic work, &lt;strong&gt;this is a waste of time&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.&lt;/p&gt;

&lt;p&gt;— Max Howell (&lt;a class="mentioned-user" href="https://dev.to/mxcl"&gt;@mxcl&lt;/a&gt;) &lt;a href="https://twitter.com/mxcl/status/608682016205344768?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;June 10, 2015&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ll explain why in my experience with Google. Time and again I’d get offered a great role there… and then get interviewed for some completely different role. No matter how dead on my skills are for the job, my technical interview is variably with someone from a totally different team that knows nothing about my job. So they interview me about theirs.&lt;/p&gt;

&lt;p&gt;After getting through a few of these interviews at other jobs, I’ve realized that it’s more than annoying–it’s actively harmful to your team. Yes, I said &lt;strong&gt;actively harmful&lt;/strong&gt;. Here’s why:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Good at simple algorithms does not mean having the skills relevant for the role.&lt;/li&gt;
&lt;li&gt;You’re missing out on time to interview the candidate on real needs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you put both of these together, you have two scenarios:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You have difficulty hiring people with experience appropriate for the job.&lt;/li&gt;
&lt;li&gt;You will hire people who have the wrong experience for the job.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I’m going to put this straight on it’s nose as relates to my own DevOps / SRE roles. Most of the time we don’t want someone who will try to go code up a new data structure algorithm for a small infrastructure management task. When you are managing infrastructure at scale, having a bunch of individual hand-crafted one-off automation implementations isn’t ideal– &lt;strong&gt;it’s your worst nightmare&lt;/strong&gt;. You should be interviewing for someone who:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can identify and classify risks around any given implementation&lt;/li&gt;
&lt;li&gt;Knows existing tools and libraries applicable to a given need&lt;/li&gt;
&lt;li&gt;Is aware of and can recommend best practices related to a given scenario&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To make it clear, what you want is an automation engineer who can reuse and adapt existing tooling to create as many hand-crafted, one-off instances as necessary &lt;strong&gt;without creating a new set of tools for each one&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Yes, the ability to create new tools when the existing tools are insufficient is important. But I’d rather hire someone who understands the ongoing cost and investment of doing that, and can weigh the costs and benefits.&lt;/p&gt;

</description>
      <category>opinion</category>
    </item>
  </channel>
</rss>
