<?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: Brendan Devenney</title>
    <description>The latest articles on DEV Community by Brendan Devenney (@brendandevenney).</description>
    <link>https://dev.to/brendandevenney</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%2F53082%2Ff58b1ed6-8b54-40a1-9575-482cbbd76ee3.jpg</url>
      <title>DEV Community: Brendan Devenney</title>
      <link>https://dev.to/brendandevenney</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/brendandevenney"/>
    <language>en</language>
    <item>
      <title>One Year</title>
      <dc:creator>Brendan Devenney</dc:creator>
      <pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/brendandevenney/one-year-gbc</link>
      <guid>https://dev.to/brendandevenney/one-year-gbc</guid>
      <description>&lt;p&gt;A year ago today, I started at Approov.&lt;/p&gt;

&lt;p&gt;A hundred days in, I wrote about the transition: leaving management, the refreshing day-to-day feedback loop, the strange experience of relearning a craft I thought I'd lost. I stand by most of it. But a hundred days is enough to notice a change; it takes a year to understand it.&lt;/p&gt;

&lt;p&gt;So here is what a year taught me that a hundred days couldn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rust that mattered
&lt;/h2&gt;

&lt;p&gt;At a hundred days I called myself rusty. I was. I reached for patterns that no longer fit and looked up syntax I once knew by heart.&lt;/p&gt;

&lt;p&gt;I expected that to be the hard part. It wasn't.&lt;/p&gt;

&lt;p&gt;The rust came off faster than I feared, and somewhere along the way I realised I'd been worried about the wrong thing entirely. The agentic era arrived in earnest this year, and it quietly rewrote the job description. The premium skill is no longer how fast you can produce code from memory. It's whether you can write a precise specification and make a strong architectural decision, then judge honestly whether what comes back is any good.&lt;/p&gt;

&lt;p&gt;Those are not new skills for me. They are the exact skills that years of reviewing architecture and mentoring engineers had been sharpening the whole time.&lt;/p&gt;

&lt;p&gt;The craft I sat down to relearn was not the craft that turned out to matter.&lt;/p&gt;

&lt;p&gt;I spent years assuming management had pulled me away from engineering. It hadn't. It had been quietly preparing me for the version of engineering that was coming.&lt;/p&gt;

&lt;p&gt;Charity Majors has a name for the shape of this: the engineer/manager pendulum. The idea that a healthy career swings between the two, rather than treating management as a one-way door you walk through once and never come back. I didn't choose when mine swung back. But it swung the right way, and the years spent on the other side weren't lost. They were compounding.&lt;/p&gt;

&lt;h2&gt;
  
  
  A secure transaction is a secure transaction
&lt;/h2&gt;

&lt;p&gt;The work itself has been a homecoming of a different kind.&lt;/p&gt;

&lt;p&gt;I spent years in payments. Now I work in mobile and API security. On paper those are different worlds, but the longer I sit with them the more they rhyme. Strip away the vocabulary and you find the same problem underneath: a secure transaction is a secure transaction. It has to go fast enough that the user never notices, and securely enough that there is never any danger. Get the balance wrong in either direction and you've failed.&lt;/p&gt;

&lt;p&gt;There is one difference, though, and it changes everything.&lt;/p&gt;

&lt;p&gt;In bank-to-bank payments you can largely trust both ends of the wire. Both sides are regulated, identified, accountable. In mobile security you can trust nothing. The client is in the hands of someone who may be actively trying to deceive you, running on a device you don't control, talking to an API that has no way of knowing, without help, whether the thing on the other end is your real app or a clever imitation of it.&lt;/p&gt;

&lt;p&gt;Trust is the whole game. In payments you mostly start with it. In mobile security you have to earn it, every single request.&lt;/p&gt;

&lt;p&gt;That single shift in assumption has been the most interesting thing I've learned all year.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pulling in the same direction
&lt;/h2&gt;

&lt;p&gt;For years I sat in a strange middle layer. I didn't fully understand the decisions being made above me, and I couldn't always explain to the people below me why we were doing what we were doing. I translated in both directions and was fluent in neither.&lt;/p&gt;

&lt;p&gt;That layer is gone, and it might be the best part of the whole year. I pull in the same direction as the people next to me now. We talk, we decide, we build. When something needs heavier process we add it; otherwise we don't. It is the inversion of the corporate default, and a year in I'm convinced it's the right one. Not because process is bad, but because most of it is inertia wearing a calendar invite.&lt;/p&gt;

&lt;p&gt;What surprised me is how well the scale-up instincts I thought I'd left behind have aged. Approov is maturing, adding the enterprise capabilities that bigger customers need, without losing the punch that makes a focused product company worth working for. You can see it in the open in something like the &lt;a href="https://approov.io/blog/approov-3-6-release-preview" rel="noopener noreferrer"&gt;3.6 release preview&lt;/a&gt;. Knowing how to grow up without slowing down turns out to be a rarer skill than I gave it credit for.&lt;/p&gt;

&lt;p&gt;Predictable where it counts; fast everywhere else.&lt;/p&gt;

&lt;h2&gt;
  
  
  Full circle
&lt;/h2&gt;

&lt;p&gt;I'd love to end this neatly. I can't, because I'm still figuring it out.&lt;/p&gt;

&lt;p&gt;I can say with confidence that this was a good move, for my career and for my happiness. But I'd be lying if I said the ground feels stable. More than half of internet traffic is agentic now. Before long, more than half of the code will be too. I genuinely don't know what that makes an individual contributor in five years. I think about it most when I think about the junior engineers I'm responsible for. What exactly am I preparing them for?&lt;/p&gt;

&lt;p&gt;I don't have the answer. But I have found something that feels like the right response to the uncertainty.&lt;/p&gt;

&lt;p&gt;This year I became a placement host, mentoring students on their year in industry. That is precisely how I arrived here myself, years ago, when Approov was still CriticalBlue and I was the one who didn't know anything yet. Someone took a chance on a placement student and built him up. Now I get to do the same, and there is a symmetry to that I didn't go looking for and am very grateful to have found.&lt;/p&gt;

&lt;p&gt;Maybe that's the answer to the agentic question, or at least the start of one. The tools will keep changing. What we owe the next person coming up behind us doesn't.&lt;/p&gt;

&lt;p&gt;If you've made a leap like this, out of management, into something new, or back to something you'd left, I'd love to hear how it landed for you. Reach out.&lt;/p&gt;

</description>
      <category>career</category>
      <category>devjournal</category>
      <category>learning</category>
      <category>management</category>
    </item>
    <item>
      <title>Rebuilding devenney.io with Claude and Cloudflare Pages</title>
      <dc:creator>Brendan Devenney</dc:creator>
      <pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/brendandevenney/rebuilding-devenneyio-with-claude-and-cloudflare-pages-36d0</link>
      <guid>https://dev.to/brendandevenney/rebuilding-devenneyio-with-claude-and-cloudflare-pages-36d0</guid>
      <description>&lt;p&gt;Every few years, I rebuild this site.&lt;/p&gt;

&lt;p&gt;This one happened over a weekend, between World Cup matches.&lt;/p&gt;

&lt;p&gt;The pattern is consistent: new technology arrives, I wait until the guilt about the old stack becomes unbearable, and I redo the whole thing. The previous site was webpack and Handlebars, which tells you roughly how long it had been sitting there. I have been busy. I also jumped straight past whatever the intermediate era is supposed to be (pick your flavour of React framework) and landed directly in the Claude and Astro 6 era. I did manage to keep Tailwind, as I love that framework.&lt;/p&gt;

&lt;p&gt;The honest context: most of this rewrite was done by &lt;a href="https://claude.ai/code" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt;. The workflow was: write a spec, hand it to Claude, review the output, iterate. I contributed the judgment; Claude contributed the typing. That is a workflow you can fit between matches.&lt;/p&gt;

&lt;p&gt;The reason I want to write about this is not the AI angle. It is the stack. Each technology I picked had the same criterion: does it remove a category of problem from my personal time, or add one? Every step closer to that answer being "remove" is a step closer to being able to focus on the things that are actually worth my time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Astro
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://astro.build" rel="noopener noreferrer"&gt;Astro&lt;/a&gt; is a static site framework with a simple idea: build once, serve flat files, no runtime. For a personal site it is the right default. Content collections give you typed and validated blog posts without a CMS. The island architecture means interactive pieces do not pull in JavaScript you do not need.&lt;/p&gt;

&lt;p&gt;The previous stack was webpack and Handlebars. Getting a blog post onto the page required a build pipeline, a template, and enough manual wiring that I avoided touching it. The content schema for this blog is about as simple as it gets:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;blog&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;defineCollection&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;loader&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;glob&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;pattern&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;**/[^_]*.md&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;base&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./src/content/blog&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
  &lt;span class="na"&gt;schema&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;object&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;optional&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="p"&gt;}),&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Write a markdown file, push, done. No templates, no build configuration to maintain.&lt;/p&gt;

&lt;p&gt;One category of problem removed: I no longer have to think about the build system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloudflare Pages
&lt;/h2&gt;

&lt;p&gt;This is the part worth writing about.&lt;/p&gt;

&lt;p&gt;Here is what deploying used to look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Build → S3 sync → CloudFront invalidate → check DNS → hope

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three AWS services, IAM policies that needed to be exactly right, and a mental overhead that meant I avoided shipping unless I had a good reason.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pages.cloudflare.com" rel="noopener noreferrer"&gt;Cloudflare Pages&lt;/a&gt; is configured with two fields:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Build &lt;span class="nb"&gt;command&lt;/span&gt;: npm run build
Output &lt;span class="nb"&gt;dir&lt;/span&gt;: dist

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the entire configuration. Every pull request gets a preview deployment automatically, so before merging anything I can click a URL and check it looks right. When I merge, CI has already confirmed there are no broken links and accessibility has not regressed. Cloudflare deploys the result. GitHub Actions tags the release. I do nothing else.&lt;/p&gt;

&lt;p&gt;I have been running things on AWS for years and I know how to navigate it. But there is a real difference between infrastructure you can use and infrastructure that stays out of your way. One category of problem removed: I no longer have to think about deployment.&lt;/p&gt;

&lt;p&gt;It is also free.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lighthouse CI
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/GoogleChrome/lighthouse" rel="noopener noreferrer"&gt;Lighthouse&lt;/a&gt; is Google's tool for auditing accessibility, SEO, and performance. Running it in CI means any regression fails the build before it ships.&lt;/p&gt;

&lt;p&gt;The configuration lives in &lt;code&gt;.lighthouserc.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"ci"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"collect"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"staticDistDir"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"./dist"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"assert"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"assertions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"categories:accessibility"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"minScore"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.9&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"categories:seo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"minScore"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.9&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"upload"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"temporary-public-storage"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key detail for a statically built site: use &lt;code&gt;staticDistDir&lt;/code&gt; rather than pointing Lighthouse at a live URL. Astro builds flat HTML files you can audit locally without a server. The &lt;code&gt;upload&lt;/code&gt; block is optional but gives you a shareable report URL for every CI run at no cost.&lt;/p&gt;

&lt;p&gt;It caught several accessibility issues I would not have noticed manually. One category of problem removed: quality regressions that used to slip through now do not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lychee
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://lychee.cli.rs" rel="noopener noreferrer"&gt;Lychee&lt;/a&gt; checks every link in the built site. It is one step in the CI workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Serve dist for link check&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npx --yes serve dist -l 4321 &amp;amp;&lt;/span&gt;

&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Wait for server&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npx --yes wait-on http://localhost:4321 --timeout &lt;/span&gt;&lt;span class="m"&gt;15000&lt;/span&gt;

&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Check links&lt;/span&gt;
  &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;lycheeverse/lychee-action@v2&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;args&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;--verbose --no-progress --exclude 'linkedin\.com' http://localhost:4321/&lt;/span&gt;
    &lt;span class="na"&gt;fail&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The non-obvious thing: Lychee cannot resolve root-relative links (like &lt;code&gt;/blog/&lt;/code&gt; or &lt;code&gt;/rss.xml&lt;/code&gt;) from static HTML files directly. The fix is to serve &lt;code&gt;dist/&lt;/code&gt; on a local port first and point Lychee at the running server. Two extra steps, but it means broken links fail the build.&lt;/p&gt;

&lt;p&gt;One category of problem removed: I no longer ship broken links without noticing.&lt;/p&gt;




&lt;p&gt;The full flow, from writing to live: open a PR, CI runs lint and type check and Lighthouse and Lychee, Cloudflare Pages builds a preview, I check it looks right, I merge. Cloudflare deploys. GitHub Actions tags the release. That is it.&lt;/p&gt;

&lt;p&gt;Every step in this stack was chosen because it removed something from my mental overhead. Personal time is finite. I would rather spend mine watching Scotland win the world cup.&lt;/p&gt;

&lt;p&gt;The source is &lt;a href="https://github.com/devenney/devenney.io" rel="noopener noreferrer"&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>claude</category>
      <category>cloud</category>
      <category>webdev</category>
      <category>website</category>
    </item>
    <item>
      <title>100 Days</title>
      <dc:creator>Brendan Devenney</dc:creator>
      <pubDate>Sun, 26 Oct 2025 00:00:00 +0000</pubDate>
      <link>https://dev.to/brendandevenney/100-days-54ba</link>
      <guid>https://dev.to/brendandevenney/100-days-54ba</guid>
      <description>&lt;p&gt;A hundred days ago, I left management.&lt;/p&gt;

&lt;p&gt;That wasn't how it felt at the time; I'd just been made redundant after several years in leadership.&lt;/p&gt;

&lt;p&gt;But when the dust settled, I realised this was something I'd been quietly wanting for a while: a return to building things myself.&lt;/p&gt;

&lt;p&gt;I've tried to be open about how this transition has been good for me. Friends in similar positions have found the insight useful - either to inform a decision or to temper expectations once it's made.&lt;/p&gt;

&lt;p&gt;So what are the big differences 100 days in?&lt;/p&gt;

&lt;h2&gt;
  
  
  The feedback loop is refreshing
&lt;/h2&gt;

&lt;p&gt;The feedback loop in management plays out over quarters or years. A conversation you have with a direct report has immediate impact, but the &lt;em&gt;feedback&lt;/em&gt; comes far down the line. Someone applies for a promotion and gets it because you gave them good advice; or someone resigns because they have been quietly harbouring negative feelings due to a decision you made.&lt;/p&gt;

&lt;p&gt;In a traditional engineering role, the feedback loop is day-to-day. You write unit tests that intentionally fail, you code your feature change until those tests pass, and you ship it for review. The code either works or it doesn't. If you missed something, it pops when it hits production. Even then your response is obvious: return to the start of the loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scale-up habits die hard
&lt;/h2&gt;

&lt;p&gt;Years in fintech and management shape you in subtle ways. You start to think exclusively in terms of frameworks, alignment, and stakeholders. Every task becomes a project, every project needs a doc, and every decision requires a meeting.&lt;/p&gt;

&lt;p&gt;Some of that remains necessary in a focused product company. There is still compliance and customers expect a stable service. These things should remain consistent. Predictable is powerful.&lt;/p&gt;

&lt;p&gt;But when you return to a more focused, specialised engineering organisation, you see how much of the corporate framework is just inertia. How often we mistake coordination for progress.&lt;/p&gt;

&lt;p&gt;Here, we talk, we decide, we build. If it needs heavy process then we implement it. Efficiency is the default, process is case-by-case. It's an inversion of the corporate approach.&lt;/p&gt;

&lt;h2&gt;
  
  
  Relearning the craft
&lt;/h2&gt;

&lt;p&gt;Coming back to hands-on engineering after years in leadership has been humbling. I was, and am, rusty. I reach for patterns that don't quite fit anymore. I look up syntax I once knew instinctively.&lt;/p&gt;

&lt;p&gt;But I'm also sharper in other ways. Years of reviewing architecture and mentoring engineers have rewired how I think about design and clarity. The output might be slower, but the intent is stronger.&lt;/p&gt;

&lt;p&gt;And the best part is the camaraderie. I bring context; my teammates bring modern fluency and technical depth. Together, we meet in the middle. They make me faster; I help them see the bigger picture. It's a better loop than I expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ego and perspective
&lt;/h2&gt;

&lt;p&gt;Stepping down from "Head of Engineering" to "Staff Engineer" looks like a demotion on paper. And yes, it messes with your identity for a bit.&lt;/p&gt;

&lt;p&gt;There's a part of you that misses being in every conversation, influencing strategy, managing people. But then you start delivering again - and you realise how much lighter it feels to just do the work.&lt;/p&gt;

&lt;p&gt;I'm not delegating problems anymore. I'm solving them. My code runs. And I still get to mentor, guide, and shape decisions - just without the meetings, frameworks, and dotted lines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rediscovering impact
&lt;/h2&gt;

&lt;p&gt;One thing I've learned at &lt;a href="https://approov.io" rel="noopener noreferrer"&gt;Approov&lt;/a&gt; is that focus scales. You can be lean and still serious. You can be efficient and still ambitious. You can do meaningful work without fifty people in the room.&lt;/p&gt;

&lt;p&gt;When something breaks, you fix it. When something works, you build on it. Things happen for a reason, rather than everything happening because it's prescribed by the internal literature.&lt;/p&gt;

&lt;p&gt;You can literally see your impact in the metrics, the customer attitude, and the day-to-day operations. Your perspective shifts toward what customers actually care about. These combine to prove the viability of a product without the need for an internal committee.&lt;/p&gt;

&lt;p&gt;It's energising.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pendulum swings
&lt;/h2&gt;

&lt;p&gt;Charity Majors has discussed the &lt;a href="https://charity.wtf/2017/05/11/the-engineer-manager-pendulum/" rel="noopener noreferrer"&gt;Engineer/Manager Pendulum&lt;/a&gt; for many years. As sage as her wisdom is, it's often hard to relate until you've lived it.&lt;/p&gt;

&lt;p&gt;This experience has proven to me that careers aren't linear. They oscillate. You take a position of leadership for influence and people skills. You make individual contributions for clarity and sharpness. Neither of those is actually tied to a role.&lt;/p&gt;

&lt;p&gt;Both skill sets are valid. Both skill sets matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  In conclusion
&lt;/h2&gt;

&lt;p&gt;To my friends who were made redundant from leadership roles or are simply considering a change of pace: I know that shift can feel like failure. But it isn't. It's a recalibration.&lt;/p&gt;

&lt;p&gt;You're not going backwards. You're rediscovering what brought you here. Sharpening the old tools to augment everything you learned at cruise altitude. You will be better for your experience.&lt;/p&gt;

&lt;p&gt;A hundred days in, I can say it plainly: I should have done this sooner.&lt;/p&gt;

</description>
      <category>career</category>
      <category>devjournal</category>
      <category>leadership</category>
      <category>management</category>
    </item>
    <item>
      <title>On Mental Health as a Manager</title>
      <dc:creator>Brendan Devenney</dc:creator>
      <pubDate>Tue, 25 Oct 2022 00:00:00 +0000</pubDate>
      <link>https://dev.to/brendandevenney/on-mental-health-as-a-manager-41b8</link>
      <guid>https://dev.to/brendandevenney/on-mental-health-as-a-manager-41b8</guid>
      <description>&lt;p&gt;I'm in the very privileged position of having a work environment which fosters personal growth. A generous budget combined with paid learning days provides opportunities which would otherwise be impossible. So, given I stepped into a management position 18 months ago, these resources should clearly be dedicated to management courses - right? Project management, promoting synergy, reading social cues to manipulate your team into productivity. These are the skills you need to thrive as a manager by corporate standards, and we work with really big banks so it's a no brainer.&lt;/p&gt;

&lt;p&gt;Don't worry, what you're currently thinking is correct: that's complete nonsense.&lt;/p&gt;

&lt;p&gt;Yes, we have to care about timelines, deadlines, capacity, velocity, and everything else which keeps a project moving forward. I know this is a bit of a hot take in the management world, but messing those things up is low-risk. You missed the deadline, the customer is angry... so what? It's not the end of the world; the sun is still going to rise tomorrow. But then what should we be focusing on as managers? In my opinion this is quite obvious: as managers of people, we should be focusing on people skills rather than management skills.&lt;/p&gt;

&lt;p&gt;Let me capture a little bit of that journey - hopefully it inspires you to do the same.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mental Health First Aid
&lt;/h2&gt;

&lt;p&gt;When I took my first steps into management, my biggest fear was not being able to help my team with the mental wellbeing issues which plague the engineering world: stress, anxiety, and burnout. While it's important to remember that a manager is not solely responsible for the mental wellbeing of their team, you cannot avoid the fact that managers often have the most insight into an individual's life. You are, through one-to-ones and daily interactions, perfectly positioned to notice the warning signs of poor mental wellbeing. In addition to that, you are likely to be the first port of call for any employee who needs to voice their problems (be those personal or professional).&lt;/p&gt;

&lt;p&gt;Are you ready to handle those situations? I wasn't.&lt;/p&gt;

&lt;p&gt;My first goal was to give myself the skillset required to deal with a team member in crisis. Your team looks to you not for micromanagement and deadlines, but for guidance and support. Technical guidance is easy, translating product requirements takes time, but providing emotional support requires care. When someone is in crisis you need to handle the situation correctly; a misplaced comment or a bad assumption can turn an individual's situation from bad to worse. Becoming a certified Mental Health First Aider (MHFA), if nothing else, gives you concrete evidence that you have this skillset.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Mental Health
&lt;/h2&gt;

&lt;p&gt;So you're a people manager with an MHFA qualification. You can help to triage a team member's emotional crisis. That's fantastic, but there's no ignoring the fact that this individual fell into crisis in your charge. Please don't get me wrong; by no means am I suggesting that you can protect your team members from poor mental health in all cases. However, it goes without saying that it is your responsibility as their leader to safeguard them from the professional factors which can contribute to a crisis.&lt;/p&gt;

&lt;p&gt;The next step for me was to build a deeper understanding of how the human mind works. This ranged from the factors which affect wellbeing to the long-term treatment of diagnosed mental health conditions. Unfortunately, this is not something you can learn from a two-day workshop. The only option is real study.&lt;/p&gt;

&lt;p&gt;I set myself the goal of achieving a college certificate related to mental health, and the course I settled on was Understanding Mental Health (Level 3). This provided a strong foundation of mental wellbeing awareness, an overview of the most prevalent mental health conditions in today's society, and a deep dive into the support systems, treatment plans, and interventions which exist to combat these conditions.&lt;/p&gt;

&lt;p&gt;The outcome? I now feel confident that I can identify the early warning signs of poor mental wellbeing - and that I can empathise with an individual who is undergoing treatment for such a condition.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;Unfortunately, I don't yet know my next step on this learning journey. The only way to really solidify all of this knowledge is to apply it in the real world, and of course I hope that this never happens. Perhaps you have a good suggestion for me here? I would love to hear your thoughts on what forms of personal growth have worked well for you as a people manager - so please reach out!&lt;/p&gt;

</description>
      <category>career</category>
      <category>leadership</category>
      <category>management</category>
      <category>mentalhealth</category>
    </item>
    <item>
      <title>1,000 Days</title>
      <dc:creator>Brendan Devenney</dc:creator>
      <pubDate>Mon, 21 Feb 2022 00:00:00 +0000</pubDate>
      <link>https://dev.to/brendandevenney/1000-days-3obb</link>
      <guid>https://dev.to/brendandevenney/1000-days-3obb</guid>
      <description>&lt;p&gt;One thousand days is a long time.&lt;/p&gt;

&lt;p&gt;Life has changed immeasurably for everyone on the planet. As some of you know, I decided to go for the grand slam of life changing events as a global pandemic clearly wasn't enough for me. For once, I'm going to take the path of least resistance and list what hasn't changed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I work at Form3.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm not going to sit here and tell you it's because everything is perfect here - it's absolutely not - but a wise woman once told me, "it doesn't have to be perfect, son, it just has to be worth it." Hopefully there's something useful in this article whether you're going through similar turbulence or simply need something to read with your coffee.&lt;/p&gt;

&lt;h2&gt;
  
  
  Day Zero
&lt;/h2&gt;

&lt;p&gt;The most interesting thing about my arrival at Form3 was the onboarding process. It was handled almost entirely by our People Lead who had been at the company for approximately a month. To this day, I have no idea how she managed to spin so many plates at once without dropping them all in spectacular fashion. What I do know is that it's a good indicator of how young the company was: our onboarding, background checks, right to work, equipment procurement, travel advice, office access, and so much more were handled by one person who barely had time to settle in herself.&lt;/p&gt;

&lt;p&gt;If you have any Agile certifications, look away now - it gets worse.&lt;/p&gt;

&lt;p&gt;Every day we had an Engineering stand-up. Yes, an Engineering stand-up with a capital 'e'. The whole business function. At first it was almost a full page on Zoom... then it was a page and a bit. At about this point we quickly realised that what we were doing was nonsensical. Can you imagine fifty engineers giving their daily updates in fifteen minutes? I know some people who would be apoplectically angry about this, and they'd be right - it doesn't work.&lt;/p&gt;

&lt;p&gt;Perhaps worst of all from a human perspective was how this translated to on-call. Spoiler: not well. Being on-call meant you were on-call for the entire platform. That's great when the platform is small but the stress grows exponentially with the number of microservices.&lt;/p&gt;

&lt;p&gt;Architecting perfectly for scale is impossible - adapting is key.&lt;/p&gt;

&lt;h2&gt;
  
  
  Growing Up
&lt;/h2&gt;

&lt;p&gt;Within a few months of me joining the company, we were in a whirlwind of change. The teams which already existed - Euro, Platform, UK - were given complete autonomy over their ways of working. The on-call rota was chunked up in a similar way to ensure that: a) engineers were on-call only for their area of expertise; b) engineers could call in expertise if the incident appeared to be caused by an adjacent team's service; and c) the average workload of an on-call shift was stable.&lt;/p&gt;

&lt;p&gt;The impact was immediate. We were working faster than ever due to the new focus; quality of life changes for on-call were being prioritised due to the increased frequency of shifts; and teams were adapting ways of working which suited their people, projects and workload.&lt;/p&gt;

&lt;p&gt;Autonomy is powerful in the hands of the right people.&lt;/p&gt;

&lt;p&gt;One thing of note here is that we did not enforce a framework on the teams. The only standing meeting was our tech town hall for knowledge sharing. At this growth breakpoint most companies go all-in on Agile or SAFe without really thinking it through. You end up with a bunch of Scrum meetings in your calendar which the teams join and tolerate like robots. Don't get me wrong, all of the above are good solutions to the right problem. The important thing is that they aren't a silver bullet for scaling problems. You have to understand which problems you have, which solutions to try, and which solutions simply aren't working.&lt;/p&gt;

&lt;p&gt;Fix real problems before presumed ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gateways and Grandmothers
&lt;/h2&gt;

&lt;p&gt;The worst thing about software engineering for me has always been trying to explain what I do. Imagine sitting down to have a coffee with an eighty year old woman, telling her what you're going to be building for the next few years, being met with a completely blank stare, then hearing a confused, "oh... that's nice, son." The things I have worked on in my life simply aren't relatable to the average person: nobody knows what an API is, let alone why it needs to be secured; clouds are fluffy things in the sky; and tracing is a thing you do with a pencil.&lt;/p&gt;

&lt;p&gt;I cannot tell you how nice it was to be able to sit her down and say, "when someone transfers money to their friend, it's handled by the thing I made." To see genuine understanding in those wise old eyes. To have her finally believe that I'm making the world a better place. My career has always felt a bit like the maths problems you get in school; when a problem is academic or speculative, it doesn't feel so real.&lt;/p&gt;

&lt;p&gt;Having real-world impact is motivating.&lt;/p&gt;

&lt;h2&gt;
  
  
  People-People
&lt;/h2&gt;

&lt;p&gt;One thing which fascinates me about Form3 is the People Team. As you transition from a scale-up to a well established company, there are so many factors pulling in so many different directions. Most of these, despite being necessary, are undesirable as an employee: compliance, information security, legal, offboarding, post-mortems, regulations. In my experience this is where a company's claim to be "people-centric" falls to pieces. This has not been the case at Form3.&lt;/p&gt;

&lt;p&gt;Our People Team are somehow capable of simultaneously doing everything an established business has to do and caring about our people. Based on meeting them I can only assume this is sheer stubbornness and refusal to compromise. Whatever the reason, it's a beautiful thing (just like my RH Mereo 220).&lt;/p&gt;

&lt;p&gt;We call organisations "companies" for a reason: it's all about the people.&lt;/p&gt;

&lt;h2&gt;
  
  
  Onwards
&lt;/h2&gt;

&lt;p&gt;I would love to wrap this up with a paragraph about where Form3 is heading. You know what, though? I really don't know and I love that; I trust that our ethos will keep us right whatever happens. So, in summary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architecting perfectly for scale is impossible - adapting is key.&lt;/li&gt;
&lt;li&gt;Autonomy is powerful in the hands of the right people.&lt;/li&gt;
&lt;li&gt;Fix real problems before presumed ones.&lt;/li&gt;
&lt;li&gt;Having real-world impact is motivating.&lt;/li&gt;
&lt;li&gt;We call organisations "companies" for a reason: it's all about the people.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>career</category>
      <category>devjournal</category>
      <category>watercooler</category>
    </item>
  </channel>
</rss>
