<?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: Bjørn Nordlund</title>
    <description>The latest articles on DEV Community by Bjørn Nordlund (@bjornno).</description>
    <link>https://dev.to/bjornno</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%2F3914446%2F06291509-1323-43f1-807d-809f7fcf3dc1.jpeg</url>
      <title>DEV Community: Bjørn Nordlund</title>
      <link>https://dev.to/bjornno</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bjornno"/>
    <language>en</language>
    <item>
      <title>We get feedback too late</title>
      <dc:creator>Bjørn Nordlund</dc:creator>
      <pubDate>Tue, 16 Jun 2026 22:15:27 +0000</pubDate>
      <link>https://dev.to/bjornno/we-get-feedback-too-late-3kap</link>
      <guid>https://dev.to/bjornno/we-get-feedback-too-late-3kap</guid>
      <description>&lt;p&gt;We talk a lot about shipping faster now, but I think the more interesting question is how fast we learn that we are building the wrong thing.&lt;/p&gt;

&lt;p&gt;Most teams do get feedback. They do beta tests, they invite a few customers, they open a channel somewhere, and then they can say the feature was validated before GA. But if we are honest, a lot of the time the feedback comes after the important decisions are already made.&lt;/p&gt;

&lt;p&gt;You work on something for six months. Architecture is decided, workflows are decided, the internal demo has gone well, the release date is starting to feel real. Then you run a beta for a couple of weeks, collect a handful of comments, fix the obvious bugs, maybe polish one screen, and ship. The beta was there, but it was too late to change the shape of the thing.&lt;/p&gt;

&lt;p&gt;That pattern is everywhere. I have done it plenty of times. We call it feedback, but often it is closer to release insurance.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem is not that we do not ask
&lt;/h2&gt;

&lt;p&gt;The problem is that we ask when the cost of listening is already too high.&lt;/p&gt;

&lt;p&gt;When you are early, feedback is useful because you can still throw things away. When you are late, feedback becomes uncomfortable because every real answer implies rework. So we naturally start filtering for what can fit into the plan we already have.&lt;/p&gt;

&lt;p&gt;This is why I am interested in feedback loops that happen while the idea is still soft. Not more surveys. Not more dashboards. Just faster contact with reality.&lt;/p&gt;

&lt;p&gt;Before you spend months building the feature, can you show someone the workflow? Before you decide what needs documentation, can you watch where people get lost? Before you argue about what users will do, can you compare your guesses with a few real attempts?&lt;/p&gt;

&lt;p&gt;That sounds obvious, but it is surprisingly hard in normal product work. The actual product is messy. The knowledge is split between PMs, designers, support, engineers, sales, and users. A lot of the discussion happens around screenshots, remembered demos, old tickets, and whatever someone can describe in a meeting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I am building Cartographer
&lt;/h2&gt;

&lt;p&gt;Cartographer started from a simple idea: show the system how an application works by using it, then let it build a map of screens, actions, and flows.&lt;/p&gt;

&lt;p&gt;The AI part is useful when it can help us get to criticism earlier. Not friendly generic feedback like "this looks good, maybe improve onboarding", but more realistic reviews grounded in how the product actually works. What would a busy admin notice? Where would a new user get stuck? What would someone misunderstand because the current flow teaches the wrong thing?&lt;/p&gt;

&lt;p&gt;That is different from asking a model to review a screenshot or a static mockup. If the system has seen the real product, the review can be about the product in context. It can see the screens before and after, the actions that are available, the paths people need to take, and the awkward places where the product says one thing but behaves like another.&lt;/p&gt;

&lt;p&gt;This is also where I think it can be faster and in some ways more real than starting with a Figma prototype. Figma is great, and I want Cartographer to integrate with it, because teams already design and test there. But a Figma prototype often starts as an idealized version of the product. Cartographer starts from the actual thing users are already fighting with. The old flows, the weird naming, the missing empty states, the settings page nobody wants to touch. That context matters if you want critical feedback instead of design feedback only.&lt;/p&gt;

&lt;p&gt;If a team can record the current product in a few minutes, they have something concrete to look at together. If they can generate a proposed flow or prototype from that map, they have something to review before committing months to it. If they can ask for critical persona reviews and then compare those expectations with real user feedback, the conversation becomes less about who sounds most convincing in the room.&lt;/p&gt;

&lt;p&gt;I want the team to be able to say: this is how the product works today, this is the change we think matters, this is where different users are likely to struggle, this is what the AI review warned us about, and this is what actually happened when someone tried it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quality is not slow
&lt;/h2&gt;

&lt;p&gt;When the tools get faster it is easy to just make more of everything. More prototypes, more docs, more tickets, more code, more ideas to look at. I get why that feels useful, and I do it too, but I do not think more output is the thing most teams are missing.&lt;/p&gt;

&lt;p&gt;But I do not think quantity is the interesting part. A team drowning in half finished ideas does not need ten more. It needs a faster way to find the one thing that matters and a safer way to stop doing the rest.&lt;/p&gt;

&lt;p&gt;For me, quality means the important problems are visible early. It means feedback is not a ceremony near the end, but part of how the work moves. It means you can ship a small slice, learn something real, and let that change the next slice.&lt;/p&gt;

&lt;p&gt;It also means working more like a team. Not one person disappearing into Cursor for a week and coming back with a mountain of plausible code. More shared context, more discussion, more disagreement before the thing hardens.&lt;/p&gt;

&lt;p&gt;That is the part I want Cartographer to help with. Not replace the people. Not automate the product judgement. Just make the thing in front of us concrete enough that we can talk about it properly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I want to test
&lt;/h2&gt;

&lt;p&gt;The current version lets you record an application with a Chrome extension, build a map, edit it, generate documentation, create prototypes, run persona reviews, and collect real feedback from testers.&lt;/p&gt;

&lt;p&gt;That is a lot of pieces, and some of them are rough. I am not trying to pretend this is a finished product. What I am trying to find out is whether this kind of workflow can make feedback feel closer to the work, instead of something that happens after everyone has already moved on.&lt;/p&gt;

&lt;p&gt;The useful version of Cartographer is not the one with the longest feature list. It is the one where a team can look at the product as it is, try an idea early, get a critical read on it, and still have time to change direction.&lt;/p&gt;

&lt;p&gt;I do not see this as competing with user testing based on Figma. I think it should connect to it. Sometimes the right thing is a Figma prototype and a structured user test. Sometimes the fastest useful thing is to record the existing product, generate a rough version of the change, and ask for criticism before design work gets too polished. The important part is not which artifact wins. The important part is that feedback happens while it can still change the work.&lt;/p&gt;

&lt;p&gt;That is the direction I want to take it. If you try it, I would love to hear what feels useful, what feels like noise, and where this could fit into how your team already works.&lt;/p&gt;




&lt;p&gt;Web app: &lt;a href="https://cartographer-six.vercel.app" rel="noopener noreferrer"&gt;cartographer-six.vercel.app&lt;/a&gt; | &lt;a href="https://github.com/bjornno/cartographer" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>product</category>
      <category>feedback</category>
      <category>devtools</category>
      <category>beta</category>
    </item>
    <item>
      <title>Your agent writes code fast. But who challenges the decisions?</title>
      <dc:creator>Bjørn Nordlund</dc:creator>
      <pubDate>Wed, 06 May 2026 10:31:55 +0000</pubDate>
      <link>https://dev.to/bjornno/your-agent-writes-code-fast-but-who-challenges-the-decisions-21l4</link>
      <guid>https://dev.to/bjornno/your-agent-writes-code-fast-but-who-challenges-the-decisions-21l4</guid>
      <description>&lt;p&gt;A user reports the dashboard is slow. The spec says "improve dashboard load time." In twenty minutes your agent has built a caching layer, a new read-optimized table, and a background job system. The code looks clean, PR looks good, it gets approved. Nobody asks if this could just be an unindexed query.&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%2Ffk150s2dynawz1u1yt12.jpeg" 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%2Ffk150s2dynawz1u1yt12.jpeg" alt="Architecture review" width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  You're sitting alone with your agent
&lt;/h2&gt;

&lt;p&gt;You're sitting there with Cursor or whatever, building fast, you are in the flow, and there's nobody pushing back. No PM going "wait, that's not what the customer asked for." No teammate saying "didn't we agree on something different last week?" Just you and the agent, and the agent does what you tell it to. The specs live in Jira or someone's head and you're not checking it while you code. The features drift, and nobody notices until it has shipped.&lt;/p&gt;

&lt;p&gt;Code reviews don't always help. So much AI generated code, we see the diff and maybe a PR description. But by the time code is in a PR you've already kind of agreed that the thing should exist, so nobody questions "are we building the right thing?".&lt;/p&gt;

&lt;h2&gt;
  
  
  Specs next to your code
&lt;/h2&gt;

&lt;p&gt;Keeping specs close to the code isn't a new idea. There's been executable specs and living documentation forever. Spec-driven development is &lt;a href="https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html" rel="noopener noreferrer"&gt;getting more attention&lt;/a&gt; now with AI agents. Whether you vibe code, write specs first or code first, it doesn't matter that much. The point is to have something that says what you're building and why.&lt;/p&gt;

&lt;p&gt;I (or Cursor and I) built a skill for this. A few markdown files per feature in a specs/ folder: who it's for, why it exists, what counts as done. It works like a kind of agent memory that lives in your repo instead of disappearing in a chat thread. The agent maintains it as part of normal coding, reads the specs before making changes, and keeps them in sync when you change direction.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add bjornno/skills &lt;span class="nt"&gt;--skill&lt;/span&gt; storyline
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Getting people to confront the hard questions
&lt;/h2&gt;

&lt;p&gt;But specs nobody challenges are just documentation. What I wanted to solve is how do you get people to confront the hard questions while there is still time to change direction.&lt;/p&gt;

&lt;p&gt;The skill has a review mode. Say "start review" and the agent reads your specs and diff. It finds the most important risk and confronts you with it. Yes, No, or Unsure. Then it walks you through the discussion.&lt;/p&gt;

&lt;p&gt;This works best when it's not just you. Get the team around a screen, pull in the PM, designer, whoever. Start the review, share your screen, and let it drive. The agent asks, the team decides.&lt;/p&gt;

&lt;p&gt;Here's how it could look:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Premature implementation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The spec says "improve load time" but there's no evidence the root cause was identified. A caching layer, a new table, and a job system were built before anyone checked if it's just one unindexed query.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are you comfortable investing in this architecture without profiling the actual bottleneck first?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes / No / Unsure&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Maybe someone says: "wait, did anyone run EXPLAIN on that query?" Or the PM says "the user only complained about one page, not the whole dashboard." It will ask follow-up questions based on what you answered, until there's an actual decision. The decision is added back to the specs in &lt;code&gt;specs/reviews/&lt;/code&gt; so you keep the history, instead of a Slack thread nobody will find again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hosted reviews
&lt;/h2&gt;

&lt;p&gt;Sometimes you can't get everyone around a screen. Different timezones, or you just want a review on every PR automatically. I built a &lt;a href="https://storyline-review.vercel.app" rel="noopener noreferrer"&gt;hosted version&lt;/a&gt; for that with the same review logic but as a Web App and a GitHub Action. Log in with your GitHub account.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tell me what's missing
&lt;/h2&gt;

&lt;p&gt;If you know of something that does this better, I want to hear about it. I've looked around and haven't found this combination of "agent maintains specs and then uses them to challenge decisions" but I might have missed it. Try it and tell me if this actually helps or if this is just me deep down in my AI rabbit hole together with Cursor. The point is getting people to think and talk, not to use more tokens.&lt;/p&gt;




&lt;p&gt;Install: &lt;code&gt;npx skills add bjornno/skills --skill storyline&lt;/code&gt; | &lt;a href="https://github.com/bjornno/skills/tree/main/skills/storyline" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
Hosted Reviews: &lt;code&gt;npx storyline-review create&lt;/code&gt; | &lt;a href="https://storyline-review.vercel.app" rel="noopener noreferrer"&gt;storyline-review.vercel.app&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>codereview</category>
      <category>devtools</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
