<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:webfeeds="http://webfeeds.org/rss/1.0" version="2.0">
  <channel>
    <title>Darren Dooley</title>
    <link>http://localhost/</link>
    <atom:link href="http://localhost/feed.xml" rel="self" type="application/rss+xml"/>
    <description>Personal website and blog of Darren Dooley</description>
    <lastBuildDate>Sun, 03 May 2026 22:31:01 GMT</lastBuildDate>
    <language>en</language>
    <generator>Lume v3.1.4</generator>
    <item>
      <title>Reading code is the skill</title>
      <link>http://localhost/blog/reading-code-is-the-skill/</link>
      <guid isPermaLink="false">http://localhost/blog/reading-code-is-the-skill/</guid>
      <content:encoded>
        <![CDATA[Most advice for new developers is about writing code. Practice problems, build projects, ship side projects. The implicit message is that programming is a generative skill, and the way to get better is to generate more.

I think this is backwards. The harder, more valuable skill is reading code.

## The ratio nobody talks about

In any real job, you read far more code than you write. A small feature might be fifty lines of new code, but those fifty lines sit inside a codebase of fifty thousand. To know where they go, what they touch, what they break, you have to read.

Even within your own work, the ratio holds. You write a line, then read the surrounding function to check it fits. You read the test, run it, read the failure, read the code again. The keyboard is mostly idle. The eyes are not.

## What good readers do

Watch a strong engineer drop into an unfamiliar codebase and you'll notice they don't try to understand everything. They form a hypothesis, then look for the smallest piece of evidence that confirms or kills it. They follow the data, not the file tree. They read the tests before the implementation, because tests describe intent and implementation describes mechanism.

They are also patient with not knowing. A weaker reader sees an unfamiliar pattern and either skims past it or spirals into a documentation hole. A stronger reader notes it, keeps going, and lets the meaning fill in from context. Most code, like most prose, is comprehensible from surrounding signal even when individual words are opaque.

## How to practice

Pick a project you use and don't understand. Open the entry point. Trace one feature from the user-facing surface down to where the work actually happens. Don't try to memorise. Just follow the thread until you can answer one specific question: when I click this button, what happens?

Do that a few times and the codebase stops feeling like a wall and starts feeling like a map. Do it across enough codebases and you build an intuition for where things tend to live, which is most of what senior engineers actually have over junior ones.

The compounding is real. Every codebase you read makes the next one faster. Writing doesn't compound in the same way, because the problems are always new. But the shapes of code repeat.

## The unglamorous part

Reading code is harder to show off than writing it. There is no commit, no demo, no green checkmark. You spend an afternoon understanding something and have nothing to put in the standup except "I read the auth module." It feels unproductive in a way that writing never does.

That feeling is the tax on the skill. Pay it anyway.
]]>
      </content:encoded>
      <pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Welcome to my site</title>
      <link>http://localhost/blog/hello-world/</link>
      <guid isPermaLink="false">http://localhost/blog/hello-world/</guid>
      <content:encoded>
        <![CDATA[Welcome to my blog. This is my first post where I share thoughts on software development, technology, and what I'm learning along the way.

## Why Start a Blog?

Writing helps clarify thinking. By putting ideas into words, I can better understand the problems I'm solving and share solutions with others who might face similar challenges.

## What to Expect

I plan to write about:

- **Software engineering** - patterns, practices, and lessons learned
- **Technology** - tools, frameworks, and interesting developments
- **Learning** - books, courses, and concepts I'm exploring

Stay tuned for more posts.
]]>
      </content:encoded>
      <pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>