<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Ryan on Mart&#39;s blog</title>
    <link>https://blog.martdegraaf.nl/tags/ryan/</link>
    <description>Recent content in Ryan on Mart&#39;s blog</description>
    <webfeeds:analytics id="G-ZFQGR29JJQ" engine="GoogleAnalytics"/>
    <webfeeds:accentColor>0078D3</webfeeds:accentColor>
    <webfeeds:related layout="card" target="browser"/>
    <webfeeds:icon>https://gravatar.com/userimage/91624600/fb51d6d9172e5043a1e59d59f3f84e62.jpeg?v=1666815123000&amp;size=200</webfeeds:icon>
    <generator>Hugo -- 0.160.1</generator>
    <language>en-us</language>
    <managingEditor>blog@martdegraaf.nl (Mart de Graaf)</managingEditor>
    <webMaster>blog@martdegraaf.nl (Mart de Graaf)</webMaster>
    <copyright>Mart de Graaf</copyright>
    <lastBuildDate>Wed, 14 Jan 2026 07:39:14 +0100</lastBuildDate>
    <atom:link href="https://blog.martdegraaf.nl/tags/ryan/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Meet Ryan and Eric</title>
      <link>https://blog.martdegraaf.nl/posts/meet-ryan-and-eric/</link>
      <pubDate>Fri, 21 Nov 2025 21:41:58 +0100</pubDate><author>blog@martdegraaf.nl (Mart de Graaf)</author>
      <guid>https://blog.martdegraaf.nl/posts/meet-ryan-and-eric/</guid>
      <description><![CDATA[Meet Ryan and Eric, two software developers but completely different.]]></description>
      <enclosure url="https://blog.martdegraaf.nl/posts/meet-ryan-and-eric/cover.png" type="image/png" />
      <media:content url="https://blog.martdegraaf.nl/posts/meet-ryan-and-eric/cover.png" medium="image" type="image/png">
        <media:title>Ryan</media:title>
      </media:content><content:encoded><![CDATA[<img src="https://blog.martdegraaf.nl/posts/meet-ryan-and-eric/cover.png" alt="Ryan" /><br/><br/><p>For my presentation &ldquo;Visual Studio Code: One Tool to Rule Them All?&rdquo; I created two fictional characters: Ryan and Eric. Both are software developers, but they take very different approaches to their work.</p>
<p>A colleague of mine suggested I write a blog post to introduce them properly. Everyone who heard my story about them immediately recognized these two archetypes. Even presenters who spoke after my session started using Ryan and Eric in their talks. So let&rsquo;s give them the spotlight they deserve, right?</p>
<h2 id="meet-ryan">Meet Ryan</h2>
<p>Have you met Ryan? Ryan is a young developer, fresh out of college. He has a couple of core qualities: he learns fast, is curious and loves new technologies. Ryan probably has more unfinished projects on his laptop than finished ones.</p>
<blockquote>
<p>&#x1f916; The images of Ryan and Eric are AI-generated using Sora, by providing my own image as input and describing the character traits.</p>
</blockquote>
<figure class="align-center ">
    <img loading="lazy" src="/posts/meet-ryan-and-eric/Ryan.png#center"
         alt="Ryan - fast, experimental, shortcut-obsessed" height="300"/> <figcaption>
            <p>Ryan - fast, experimental, shortcut-obsessed</p>
        </figcaption>
</figure>

<p>Ryan is the kind of person who uses hip IDEs like Visual Studio Code, because it is lightweight and fast. Ideally Ryan would like to use his phone to code on the go, while watching his favorite series on Netflix.</p>
<blockquote>
<p>“Move fast and fix things later.” - Ryan</p>
</blockquote>
<p>When you have a Ryan on your team, you will notice that he will run before thinking his actions through. He will push fast to production, only to find out later that something is broken. But hey, at least he tried, right? And if he is just as fast to fix it again, everything is fine.</p>
<h2 id="meet-eric">Meet Eric</h2>
<p>Eric is a seasoned developer with years of experience. He is pragmatic, values stability and prefers to stick to tried-and-true tools. Eric will start Notepad++ to quickly format his XML or JSON or compare files. He has been using and running projects in Visual Studio for years. He jokes that you cannot write any good code in Visual Studio Code, because where is the &ldquo;Play&rdquo; button to start the project? Not to mention how do you debug without it?</p>
<figure class="align-center ">
    <img loading="lazy" src="/posts/meet-ryan-and-eric/Eric.png#center"
         alt="Eric - stable, cautious, prefers proven tools" height="300"/> <figcaption>
            <p>Eric - stable, cautious, prefers proven tools</p>
        </figcaption>
</figure>

<p>When you have an Eric on your team, you will notice that he will take his time to think things through. He will criticize decisions beforehand knowing that changing things later will be costly. Why change when you have worked this way for years?</p>
<blockquote>
<p>“If it ain&rsquo;t broke, don&rsquo;t fix it.” - Eric</p>
</blockquote>
<h2 id="a-conversation-between-ryan-and-eric">A conversation between Ryan and Eric</h2>
<p>If Ryan and Eric were to have a conversation, it might go something like this:</p>
<h3 id="having-multiple-prs-open">Having multiple PR&rsquo;s open</h3>
<blockquote>
<p><strong>Context:</strong> Eric leans back.</p>
</blockquote>
<div class="chat">

<div class="chat-row left">
  <div class="chat-bubble eric">
    <div class="chat-name">Eric</div>
    We’re going to make some rules. Ready?
  </div>
</div>

<div class="chat-row right">
  <div class="chat-bubble ryan">
    <div class="chat-name">Ryan</div>
    Is “no” an acceptable answer?
  </div>
</div>

<div class="chat-row left">
  <div class="chat-bubble eric">
    <div class="chat-name">Eric</div>
    No.<br>
<strong>Rule 1:</strong> No more than two open PRs at a time.
  </div>
</div>

<div class="chat-row right">
  <div class="chat-bubble ryan">
    <div class="chat-name">Ryan</div>
    What if I have three great ideas?
  </div>
</div>

<div class="chat-row left">
  <div class="chat-bubble eric">
    <div class="chat-name">Eric</div>
    Write them down. Ship two. The third can wait.
  </div>
</div>

</div>

<h3 id="writing-an-adr">Writing an ADR</h3>
<blockquote>
<p><strong>Context:</strong> A new framework is being discussed. Ryan is already prototyping.</p>
</blockquote>
<div class="chat">

<div class="chat-row left">
  <div class="chat-bubble eric">
    <div class="chat-name">Eric</div>
    Before we change the framework, we write an ADR.
  </div>
</div>

<div class="chat-row right">
  <div class="chat-bubble ryan">
    <div class="chat-name">Ryan</div>
    Can&rsquo;t we just try it first and see what happens?
  </div>
</div>

<div class="chat-row left">
  <div class="chat-bubble eric">
    <div class="chat-name">Eric</div>
    We can try it. But we still write an ADR.
  </div>
</div>

<div class="chat-row right">
  <div class="chat-bubble ryan">
    <div class="chat-name">Ryan</div>
    What do you even want in there? &ldquo;Ryan had a feeling&rdquo;?
  </div>
</div>

<div class="chat-row left">
  <div class="chat-bubble eric">
    <div class="chat-name">Eric</div>
    No.<br/>
<strong>ADR Rule 1:</strong> Capture the problem, the options, and why we picked this one.
  </div>
</div>

<div class="chat-row right">
  <div class="chat-bubble ryan">
    <div class="chat-name">Ryan</div>
    That sounds like homework.
  </div>
</div>

<div class="chat-row left">
  <div class="chat-bubble eric">
    <div class="chat-name">Eric</div>
    It&rsquo;s future-you cheating on future-homework. You won&rsquo;t remember why you did this in six months.
  </div>
</div>

<div class="chat-row right">
  <div class="chat-bubble ryan">
    <div class="chat-name">Ryan</div>
    Fine. I&rsquo;ll write the ADR. Short one.
  </div>
</div>

<div class="chat-row left">
  <div class="chat-bubble eric">
    <div class="chat-name">Eric</div>
    Short is okay. Undocumented is not.
  </div>
</div>

</div>

<h3 id="setting-up-sql-server">Setting up SQL Server</h3>
<blockquote>
<p><strong>Context:</strong> Eric is setting up his new development machine and needs SQL Server.</p>
</blockquote>
<div class="chat">

<div class="chat-row left">
  <div class="chat-bubble eric">
    <div class="chat-name">Eric</div>
    I&rsquo;m downloading the SQL Server installer. This should take about an hour to set up properly.
  </div>
</div>

<div class="chat-row right">
  <div class="chat-bubble ryan">
    <div class="chat-name">Ryan</div>
    An hour? Just run <code>docker run -d -p 1433:1433 mcr.microsoft.com/mssql/server</code>
  </div>
</div>

<div class="chat-row left">
  <div class="chat-bubble eric">
    <div class="chat-name">Eric</div>
    I don&rsquo;t trust containers for database work. What if something goes wrong?
  </div>
</div>

<div class="chat-row right">
  <div class="chat-bubble ryan">
    <div class="chat-name">Ryan</div>
    <em>types command</em> Done. SQL Server is running. Took 30 seconds.
  </div>
</div>

<div class="chat-row left">
  <div class="chat-bubble eric">
    <div class="chat-name">Eric</div>
    Wait, my installer failed. Compatibility issues with my Windows version.
  </div>
</div>

<div class="chat-row right">
  <div class="chat-bubble ryan">
    <div class="chat-name">Ryan</div>
    That&rsquo;s why I use containers. Same environment everywhere.
  </div>
</div>

<div class="chat-row left">
  <div class="chat-bubble eric">
    <div class="chat-name">Eric</div>
    Fine. But what happens when I need to upgrade? Or backup? Or configure security?
  </div>
</div>

<div class="chat-row right">
  <div class="chat-bubble ryan">
    <div class="chat-name">Ryan</div>
    Docker Compose file. Version control your entire database setup.
  </div>
</div>

<div class="chat-row right">
  <div class="chat-bubble ryan">
    <div class="chat-name">Ryan</div>
    Plus, you can automate the whole thing in your CI/CD pipeline. Database provisioning becomes part of your deployment process.
  </div>
</div>

<div class="chat-row left">
  <div class="chat-bubble eric">
    <div class="chat-name">Eric</div>
    <em>sighs</em> Show me this Docker thing. But I&rsquo;m keeping the installer just in case.
  </div>
</div>

</div>

<h2 id="ryan-and-eric">Ryan and Eric</h2>
<p>These two fictional characters represent two very different behavior patterns in software development teams. Ryan pushes for speed and experimentation; Eric optimizes for stability and predictability. Most of us have both inside us, and the trick is to know when to lean into which.</p>
<p>Let&rsquo;s introduce an example I myself encounter often: My colleague acts like Eric. He locks his computer using <code>Ctrl+Alt+Del</code> and selects &lsquo;Lock&rsquo; from the menu. I think he should use Ryan to optimize his workflow. I, on the other hand, use <code>Windows+L</code> to lock my computer instantly. The same pattern shows up in formatting code, switching screens, or running builds: you can click your way through, or you can invest in shortcuts and automation. Ryan would use <code>Windows+P</code> to extend his screen while Eric would right click on his desktop and select &lsquo;Display settings&rsquo; to do the same.</p>
<p>The tension between Ryan and Eric is useful. Ryan pulls the team toward new tools and faster workflows; Eric stops us from breaking production every week. Healthy teams make space for both.</p>
<h2 id="conclusion-and-discussion">Conclusion and discussion</h2>
<p>Ryan and Eric are two fictional characters that represent two extremely different behavior patterns in software development teams. You can act like Ryan or Eric, but you should use both to balance innovation and stability. I hope Ryan and Eric will return in future blog posts as well. If you want to refer to them, you are welcome to do so. Please link back to this post.</p>
<p>Let&rsquo;s set the mode accordingly:</p>
<div class="codecontainer" hi="mart"><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">mode</span> <span class="o">=</span> <span class="nx">DeadlineIsToday</span> <span class="o">?</span> <span class="nx">Ryan</span> <span class="o">:</span> <span class="nx">Eric</span><span class="p">;</span></span></span></code></pre></td></tr></table>
</div>
</div></div><blockquote>
<p>What about you? Are you more like Ryan or Eric? Or do you have another archetype in mind? Let me know in the comments!</p>
</blockquote>
<h3 id="further-reading">Further reading</h3>
<p>I wrote an Ryan-like article before read it here: <a href="https://blog.martdegraaf.nl/posts/marts-cheatsheet/">Mart&rsquo;s Cheatsheet</a></p>
]]></content:encoded>
      <category>Ryan</category>
      <category>Eric</category>
      <category>keyboard-shortcuts</category>
      <category>visual-studio-code</category>
      <category>developer-archetypes</category>
    </item>
  </channel>
</rss>
