<?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: Jeff Sheffield</title>
    <description>The latest articles on DEV Community by Jeff Sheffield (@jeffield).</description>
    <link>https://dev.to/jeffield</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3705912%2F6574ec89-5b4b-46e9-933e-bf967cbd1db1.jpeg</url>
      <title>DEV Community: Jeff Sheffield</title>
      <link>https://dev.to/jeffield</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jeffield"/>
    <language>en</language>
    <item>
      <title>Claude Strangelove or: How I Learned to Stop Worrying and Love Coding with AI</title>
      <dc:creator>Jeff Sheffield</dc:creator>
      <pubDate>Mon, 27 Apr 2026 22:16:14 +0000</pubDate>
      <link>https://dev.to/jeffield/claude-strangelove-or-how-i-learned-to-stop-worrying-and-love-coding-with-ai-43m0</link>
      <guid>https://dev.to/jeffield/claude-strangelove-or-how-i-learned-to-stop-worrying-and-love-coding-with-ai-43m0</guid>
      <description>&lt;p&gt;The other day I told my boss I was going to get another Google Certification in AI:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I am going to go get that Generative AI Leader course certificate from Google Cloud Certification, as that course is super popular right now.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I thought this made me sound really smart, proactive and a forward thinker. To my surprise his response was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;That's fine, whatever works for you, but make sure you are using the tooling.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;He was right, and it stung a little, because I'd been studying AI more than I'd been shipping with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The reframe
&lt;/h2&gt;

&lt;p&gt;I have been writing code for more than 20 years. My primary takeaway from coding with Claude Code is that I am moving faster with more confidence than I have in a very long time. Claude Code isn't perfect, it's far from it, but it's getting better daily. I like to think about Claude Code in two ways which shifted the narrative for me.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Think about coding with Claude Code as a modern twist on pair programming. This is about guiding Claude who is really booksmart to the finish line of solving real world problems. Read along with all of the steps that Claude is doing, because there are some genuinely creative things happening.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My second takeaway which is the one that has me very excited is that&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Claude Code is the key that unlocks gates that would normally stop you cold in your tracks and require you to go learn a new skill to keep moving forward. Completely robbing a project of its forward momentum.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&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%2Frtt9f0t2yvz31voqwrde.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%2Frtt9f0t2yvz31voqwrde.png" alt=" " width="800" height="570"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The yellow gate at Frozen Head State Park. Start and finish of the Barkley Marathons, a race designed to be unfinishable.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Most projects die at gates like these: not the code, but the pypi packaging, the CI pipeline, the schema migration, authentication architecture, the deploy config. Or one thousand other things that are required pieces to finish a project but are not necessarily the code piece of the puzzle.&lt;/p&gt;

&lt;p&gt;Claude Code is the key for those gates.&lt;/p&gt;

&lt;p&gt;Stop worrying about the hurdles. I now tackle problems with a larger scope with great confidence that I won't get bogged down along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The receipts
&lt;/h2&gt;

&lt;p&gt;I have written more code... &lt;em&gt;"sorry Claude, we have written more code"&lt;/em&gt; in the last 4 months than I did all of last year. To that end, here are a few of the public things&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Released Functional things:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/jsheffie/django-schematic" rel="noopener noreferrer"&gt;django-schematic&lt;/a&gt;: I'd wanted an interactive schema viz for years; the gates were always the frontend D3 work, packaging a django project, packaging a pypi module. Claude Code helped break through those barriers&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/jsheffie/gh-to-slack" rel="noopener noreferrer"&gt;gh-to-slack&lt;/a&gt;: gh-clippy and gh-syms I was a linux guy for years, and have written more shell scripts than I care to think about, I wanted something that would summarize what I was working on and paste it to slack formatted with state emojis and I built these scripts, but how was I going to deliver them to my co-workers on Macs? Claude Code helped me build the required brew installs for the helper scripts.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/jsheffie/homebrew-tap" rel="noopener noreferrer"&gt;homebrew-tap&lt;/a&gt;: Homebrew tap for my tools. I had always wanted to know how to do this, and never even tried to set one up. Not because of fear, but just because of time. I figured Claude Code would knock down this barrier in no time and it delivered.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://quiz-app-74d9f.web.app/" rel="noopener noreferrer"&gt;quiz-app&lt;/a&gt;: which I used to study for my Professional Cloud Developer cert. Note: This one was built with &lt;a href="https://geminicli.com/" rel="noopener noreferrer"&gt;gemini-cli&lt;/a&gt;. I mention it here, because this is where this chapter of my journey started.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I got oriented
&lt;/h2&gt;

&lt;p&gt;If you want to start:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Claude Code
&lt;code&gt;curl -fsSL https://claude.ai/install.sh | bash&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://code.claude.com/docs/en/overview#get-started" rel="noopener noreferrer"&gt;Sign up for Pro or Max&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Work through &lt;a href="https://anthropic.skilljar.com/" rel="noopener noreferrer"&gt;Anthropic Academy&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;One good beginner video is &lt;a href="https://www.youtube.com/watch?v=kddjxKEeCuM" rel="noopener noreferrer"&gt;How to Set Up Claude Code in 2026&lt;/a&gt; (Beginner Tutorial).&lt;/li&gt;
&lt;li&gt;For ongoing reading, I keep a running list of Reddit threads &lt;a href="https://jeffield.net/blog/claude-daily-reading/" rel="noopener noreferrer"&gt;Claude Daily Reading&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Keep Grinding ( skunkworks )
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;claude mcp server for a github issues/prs related feature w/ Claude Code

&lt;ul&gt;
&lt;li&gt;gh-related: Claude Code command and skill to show related issues and prs&lt;/li&gt;
&lt;li&gt;fatbrainmap: A visual mindmap with links of the output of the previous commands.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>python</category>
      <category>opensource</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Your Models Know Their Own Schema. Let Them Show You.</title>
      <dc:creator>Jeff Sheffield</dc:creator>
      <pubDate>Tue, 21 Apr 2026 07:14:08 +0000</pubDate>
      <link>https://dev.to/jeffield/your-models-know-their-own-schema-let-them-show-you-5552</link>
      <guid>https://dev.to/jeffield/your-models-know-their-own-schema-let-them-show-you-5552</guid>
      <description>&lt;p&gt;Django already knows every model in your project, every field, every relationship — down to the last on_delete. So why are you drawing it by hand?&lt;/p&gt;

&lt;p&gt;You know the drill. Sprint planning is tomorrow and someone asks "can you send over the schema?" So you open your diagramming tool, spend two hours dragging boxes and drawing arrows, get it looking presentable — and three days later a migration lands and it's already wrong.&lt;/p&gt;

&lt;p&gt;That's not a documentation problem. That's a tooling problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;django-schematic exists because your Django project already knows its own schema.&lt;/strong&gt; Every model, every field, every relationship — it's all sitting in the model registry right now, precisely defined, perfectly up to date. The only question is why you'd ever draw that information by hand.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;django-schematic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add it to &lt;code&gt;INSTALLED_APPS&lt;/code&gt;, mount the URL, open your browser. In under two minutes you're looking at a live, interactive graph of your entire data model — every &lt;code&gt;ForeignKey&lt;/code&gt;, every &lt;code&gt;ManyToManyField&lt;/code&gt;, every abstract base class, laid out automatically and ready to explore.&lt;/p&gt;

&lt;p&gt;Not a screenshot. Not a PDF you'll forget to update. A living diagram that re-generates from your actual code every time you load it.&lt;/p&gt;

&lt;h2&gt;
  
  
  For the moments that actually matter
&lt;/h2&gt;

&lt;p&gt;When you're onboarding a new developer and they need to understand how &lt;code&gt;User&lt;/code&gt; connects to &lt;code&gt;SocialAccount&lt;/code&gt; which in turn connects to &lt;code&gt;Token&lt;/code&gt;, and &lt;code&gt;SocialApp&lt;/code&gt; — you don't send them a Notion page that was accurate in Q2. You send them a &lt;a href="https://storage.googleapis.com/jeffield-media/images/schematic2.original.png" rel="noopener noreferrer"&gt;PNG schema drawing&lt;/a&gt;.&lt;/p&gt;

&lt;p&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%2Fe0wo5jo5aax3tntah9ck.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%2Fe0wo5jo5aax3tntah9ck.png" alt="Example User Schema" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But this is no ordinary PNG. Embedded invisibly inside the image file are the model names, positions, and layout configuration from the exact view you were looking at. When your co-worker drops it into django-schematic, the app restores that view — same positions, same visible models, same layout. And here's the important part: it reads the &lt;code&gt;current&lt;/code&gt; model definitions from their own running Django project to populate the attributes. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The PNG carries the &lt;code&gt;where&lt;/code&gt;, your codebase supplies the &lt;code&gt;what&lt;/code&gt;. The diagram is always accurate, even if the schema has moved on since you exported it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That means you can attach schema PNGs directly to pull requests and GitHub issues, right alongside your code. Reviewers see a clear picture of the data model changes at a glance. And when the next PR lands and things shift, updating the diagram is trivial: import the PNG, show or hide any new relationships, adjust the layout if needed, and export again. Thirty seconds, not two hours.&lt;/p&gt;

&lt;p&gt;When you're mid-refactor and you need to see whether that cascade delete is going to ripple in three directions or ten — you don't reconstruct the graph in your head. You switch to Auto-Layout and see it.&lt;/p&gt;

&lt;p&gt;When a teammate asks "wait, does &lt;code&gt;UserProfile&lt;/code&gt; proxy &lt;code&gt;User&lt;/code&gt; or extend it?" — you don't dig through migrations. You glance at the schema, where proxy models are marked distinctly from abstract ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  It gets out of your way
&lt;/h2&gt;

&lt;p&gt;Filter down to just the billing app when the full graph is too noisy. Switch between hierarchical layout (for tracing relationships) and force-directed (for seeing which models cluster naturally). Export a PNG, share it, import it back — it restores your exact view. And by default, none of this is visible in production: &lt;code&gt;DEBUG=False&lt;/code&gt; and the route returns 404, no configuration required.&lt;/p&gt;

&lt;p&gt;The whole point is that you shouldn't have to think about it. It's there when you need it, accurate because it reads your code directly, and gone (from production) because you'd never expose it there anyway.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stop drawing. Start seeing.
&lt;/h2&gt;

&lt;p&gt;Your models change frequently. Your understanding of them should too. django-schematic means you're always looking at the truth — not a drawing of what the truth used to be.&lt;/p&gt;

&lt;p&gt;See it for yourself at the &lt;a href="https://jeffield.net/schema/" rel="noopener noreferrer"&gt;live demo&lt;/a&gt;, or jump in and &lt;a href="https://github.com/jsheffie/django-schematic" rel="noopener noreferrer"&gt;contribute on GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>django</category>
      <category>python</category>
      <category>devtools</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
