Benji Weber's Avatar

Benji Weber

@benjiweber.com

Tech Leader & Software Engineer • Tech and Teams, Extreme Programming, Java • CTO & Co-founder @ Geordie.ai • Previously Snyk, Unruly • Writes things at http://benjiweber.com/blog

1,128
Followers
531
Following
192
Posts
03.07.2023
Joined
Posts Following

Latest posts by Benji Weber @benjiweber.com

More brains are needed more than ever, with the rate the genies can churn out code. Typing was never the bottleneck and now it's just more extreme.

03.03.2026 22:23 👍 2 🔁 0 💬 0 📌 0
Preview
Agentic swarms are an org-chart delusion The "agentic swarm" vision of productivity is comfortingly familiar. Which should be an immediate red flag... You take the existing corporate hierarchy, you replace the bottom layers with a swarm of AI agents, and you keep humans around as supervisors. It's an org chart with robots instead of interns. The

The “swarm of agents” model assumes work naturally splits into roles: marketing, sales, support, development = basically mirroring human job titles.

But those titles and siloes are a byproduct of org scaling, not a universal truth about work.

www.joanwestenberg.com/agentic-swa...

24.02.2026 01:09 👍 8 🔁 5 💬 0 📌 1

XP practices have never been more helpful than with all the speed that agents provide.

More brains, tighter feedback loops, quality & safety let us take full advantage of the speed.

Never has "uncovering better ways of developing software by doing it and helping others do it" felt more relevant.

23.02.2026 19:09 👍 1 🔁 2 💬 0 📌 0
Preview
Nobody knows what programming will look like in two years Kent Beck doesn't know what programming will look like in two years, and he's been thinking about this longer than most of us.

Excellent article (more reminders from history)

21.02.2026 09:23 👍 6 🔁 2 💬 1 📌 0
Preview
Poor Deming never stood a chance This post is an elaboration of a shorter post I wrote about five years ago. The two management giants of the mid-twentieth century were Peter Drucker and W. Edwards Deming. Ironically, while Drucke…

Whenever the topic of OKRs comes up, I think about Drucker vs Deming. Not a particularly topical thing to write about, but I think it's evergreen.

surfingcomplexity.blog/2026/02/16/p...

16.02.2026 19:48 👍 26 🔁 9 💬 0 📌 2

It gets worse every week bsky.app/profile/benj...

16.02.2026 18:38 👍 1 🔁 0 💬 0 📌 0
How Generative and Agentic AI Shift Concern from Technical Debt to Cognitive Debt This piece by Margaret-Anne Storey is the best explanation of the term cognitive debt I've seen so far. Cognitive debt, a term gaining traction recently, instead communicates the notion that …

Short musings on "cognitive debt" - I'm seeing this in my own work, where excessive unreviewed AI-generated code leads me to lose a firm mental model of what I've built, which then makes it harder to confidently make future decisions simonwillison.net/2026/Feb/15/...

15.02.2026 05:22 👍 465 🔁 88 💬 42 📌 20

We optimized for ultra individualistic velocity measures defining DevEx at EXACTLY the wrong time no wonder everyone is exhausted and scared

10.02.2026 18:42 👍 19 🔁 2 💬 1 📌 0

The continung computing cycle from thin to thick clients and back. Round and round.

01.02.2026 20:14 👍 0 🔁 0 💬 0 📌 1
Road with a cycle path and a horse path, with "Horse Lane Closed" on a sign.

Road with a cycle path and a horse path, with "Horse Lane Closed" on a sign.

#London things

28.01.2026 20:54 👍 1 🔁 0 💬 0 📌 0
Preview
Because coordination is expensive If you’ve ever worked at a larger organization, stop me if you’ve heard (or asked!) any of these questions: “Why do we move so slowly as an organization? We need to figure out how…

New blog post on the high costs of coordination and the implications for large organizations: surfingcomplexity.blog/2026/01/24/b...

25.01.2026 01:30 👍 14 🔁 7 💬 1 📌 0
Preview
Claude Code - Ollama

Ooh. Ollama just released Anthropic API impersonation, meaning you can set the endpoint to a local port and be off to the races! docs.ollama.com/integrations...

18.01.2026 05:48 👍 110 🔁 11 💬 4 📌 2
Video thumbnail

Shame that @intellijidea.com can't complete this refactoring itself.

Not ideal that the refactoring takes compiling code and creates code that fails to compile. #java

10.01.2026 12:00 👍 1 🔁 1 💬 1 📌 0
Bird of prey against a mountain backdrop

Bird of prey against a mountain backdrop

Trying to identify this bird. LLMs like insisting it's various varieties of Californian bird but this is taken in Scotland. White Tailed Eagle? Buzzard? Osprey?

02.01.2026 12:10 👍 1 🔁 1 💬 1 📌 0
Road with snow

Road with snow

It was at this moment I realised that slick tyres may not have been the optimal choice this morning #cycling

02.01.2026 09:07 👍 7 🔁 0 💬 0 📌 0
Otter on a rock off a snowy stony beach

Otter on a rock off a snowy stony beach

Sea otter

28.12.2025 16:29 👍 1 🔁 0 💬 0 📌 0
Robin with outstretched wings on frosty ground.

Robin with outstretched wings on frosty ground.

Frost on berrys

Frost on berrys

Frost on holly

Frost on holly

Robin perched in stone above frosty ground

Robin perched in stone above frosty ground

It's not bad out

27.12.2025 17:47 👍 2 🔁 0 💬 0 📌 0
Here Comes Jeffrey Combs
Here Comes Jeffrey Combs YouTube video by John C. Worsley

And we're back. Again! Happy Holiday Trek 2025. 🎄🖖🏻🎄 #HolidayCombs

www.youtube.com/watch?v=26H_...

21.12.2025 18:47 👍 15 🔁 10 💬 3 📌 1
Preview
Why I don’t like “Correction of Error” Like many companies, AWS has a defined process for reviewing incidents. They call their process Correction of Error. For example, there’s a page on Correction of Error in their Well-Architect…

I wrote a post about why I don't like the name that Amazon uses for their post-incident review process: "Correction of Error". surfingcomplexity.blog/2025/12/20/w...

21.12.2025 00:27 👍 18 🔁 4 💬 1 📌 2

Cars are much safer now, except in the US www.cdc.gov/mmwr/volumes...

20.12.2025 19:09 👍 1 🔁 0 💬 1 📌 0

I want to see daylight again, Gandalf, daylight.

16.12.2025 08:27 👍 0 🔁 0 💬 0 📌 0
Intellij options When the current tab is closed, activate: [ * The tab on the left , ( ) the tab on the right, ( ) Most recently opened tab ]

Intellij options When the current tab is closed, activate: [ * The tab on the left , ( ) the tab on the right, ( ) Most recently opened tab ]

Discovered there's a setting to change #intellij 's default infuriating behaviour of opening seemingly random tab when you drag/split editor views.

I really wonder why "Most recently opened tab" is not the default.

13.12.2025 15:48 👍 1 🔁 0 💬 0 📌 0
 public record MyTestData(String name, Integer age) {}
        static class MyTestDataValues implements SourceOf<MyTestData> {
          public List<MyTestData> values() {
            return List.of(
              new MyTestData("foo", 5),
              new MyTestData("bar", 10)
            );
          }
        }
        @ParameterizedTest(name="{0} - {1}")
        @ArgumentsSource(MyTestDataValues.class)
        public void exampleTest(String name, Integer age) {
          System.out.println(name + " " + age);
          assertEquals(0, age % 5);
          assertEquals(3, name.length());
        }

public record MyTestData(String name, Integer age) {} static class MyTestDataValues implements SourceOf<MyTestData> { public List<MyTestData> values() { return List.of( new MyTestData("foo", 5), new MyTestData("bar", 10) ); } } @ParameterizedTest(name="{0} - {1}") @ArgumentsSource(MyTestDataValues.class) public void exampleTest(String name, Integer age) { System.out.println(name + " " + age); assertEquals(0, age % 5); assertEquals(3, name.length()); }

public interface SourceOf<T extends Record> extends ArgumentsProvider {
    List<T> values();
    default Stream<? extends Arguments> provideArguments(ExtensionContext context) {
      return values().stream().map(
        v -> Arrays.stream(v.getClass().getRecordComponents())
          .map(rc -> {
            try {
              return rc.getAccessor().invoke(v);
            } catch (Exception e) {
              throw new RuntimeException(e);
            }
          })
          .toArray()
      ).map(Arguments::of);
    }
  }

public interface SourceOf<T extends Record> extends ArgumentsProvider { List<T> values(); default Stream<? extends Arguments> provideArguments(ExtensionContext context) { return values().stream().map( v -> Arrays.stream(v.getClass().getRecordComponents()) .map(rc -> { try { return rc.getAccessor().invoke(v); } catch (Exception e) { throw new RuntimeException(e); } }) .toArray() ).map(Arguments::of); } }

I like parameterised tests but find #junit 's EnumSource/MethodSource etc dissatisfying.

Here's how you can parameterize tests with #java records

gist.github.com/benjiman/e9f...

06.12.2025 08:08 👍 4 🔁 2 💬 0 📌 0

Today I'm grumpy at Chrome putting "split view" where open in new window has been in every browser, building muscle memory for decades…for a feature that everyone's window manager already has.

06.12.2025 06:15 👍 1 🔁 0 💬 0 📌 0
Preview
Ruby Was Ready From The Start Notes and expanded thoughts on eXtreme Programming, AI agents, and the soul of Ruby from my SF Ruby Conference Keynote 2025 talk

And here’s an excellent post on how to apply them (most of this is not Ruby-specific):
obie.medium.com/ruby-was-rea...

27.11.2025 20:09 👍 8 🔁 2 💬 0 📌 0
Adversarial Poetry as a Universal Single-Turn Jailbreak Mechanism in Large Language Models 1 Introduction

Hilarious and terrifying: jailbreak LLMs using poetry

"These findings demonstrate that stylistic variation alone can circumvent contemporary safety mechanisms, suggesting fundamental limitations in current alignment methods and evaluation protocols."

arxiv.org/html/2511.15...

22.11.2025 14:50 👍 3 🔁 4 💬 2 📌 0
Tank next to pret a manger kings cross

Tank next to pret a manger kings cross

Tank next to pret a manger kings cross

Tank next to pret a manger kings cross

SUVs in London are really getting out of hand.

20.11.2025 20:46 👍 4 🔁 1 💬 1 📌 0
Preview
TDD is more important than ever Lately, I've been reminded of the heady days of my agile (https://en.wikipedia.org/wiki/Agile_software_development) youth by how often I've found myself asking, "how will we test this?" As I've mentioned frequently on podcasts and recent Q&As about AI, an odd paradox has emerged in the software industry: 1. Developers experienced in agile engineering practices like test-driven development tend to be among the most skeptical of AI code generation, often citing fears that software quality is being thrown out the window 2. Developers experienced in agile engineering practices like test-driven development tend to be among the most successful at building great software with coding agents, often citing creative techniques enabling agents to verify the correctness of their work In the late 2000s, I always knew I was talking to a solid programmer if their first question upon being handed a complex task was to ask, "how will we test this?" Agile developers learned back then that literally everything hinged on establishing a fast, reliable, automated way to verify your code fulfilled its intended purpose. Without tests, you can't refactor aggressively, deploy frequently, or delete safely. Over the 2010s, many of us learned patterns and heuristics that allowed us to take shortcuts and tone down our testing zeal in the name of pragmatism and efficiency, but the underlying skill of concocting ways to verify our code never stopped being valuable. Well, here we are again. In 2025, the only thing that matters when it comes to coding agents like Claude Code and Codex CLI is to ensure they are equipped with the tools they need to independently verify the correctness of their work.

TDD is more important than ever

18.11.2025 22:05 👍 14 🔁 10 💬 1 📌 1
Preview
The Seven Deadly Sins of “Go Faster” Things that will make your dev team take longer to deliver worse software:1. Adding more people to the team2. Making them work longer hours3. Cutting down on work that “slows them down”…

The most common things engineering leaders think will make dev teams go faster actually have the opposite effect.

codemanship.wordpress.com/2025/11/13/t...

13.11.2025 06:42 👍 32 🔁 15 💬 4 📌 5

Microsoft: Operation failed, X is unlicensed, good luck figuring out what licence you need, (won't be called X).

Google: Operation failed, you've hit a hard quota, good luck contacting a human to fix.

Amazon: Everything worked, but good luck figuring out why you're paying 10x what you expected.

31.10.2025 08:53 👍 5 🔁 2 💬 0 📌 1