<?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: Rotem Hermon</title>
    <description>The latest articles on DEV Community by Rotem Hermon (@rorehe).</description>
    <link>https://dev.to/rorehe</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%2F3813520%2Fabc3b3e8-0ef5-429b-9a40-6b14f68684d1.jpg</url>
      <title>DEV Community: Rotem Hermon</title>
      <link>https://dev.to/rorehe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rorehe"/>
    <language>en</language>
    <item>
      <title>Is It My Project?</title>
      <dc:creator>Rotem Hermon</dc:creator>
      <pubDate>Tue, 17 Mar 2026 13:21:53 +0000</pubDate>
      <link>https://dev.to/rorehe/is-it-my-project-2g28</link>
      <guid>https://dev.to/rorehe/is-it-my-project-2g28</guid>
      <description>&lt;p&gt;In my last post I introduced my side project, &lt;a href="https://github.com/rore/bear-cli" rel="noopener noreferrer"&gt;BEAR&lt;/a&gt; - a tool that tries to show how agentic development may be done in a safer way, by creating boundaries for agents as they develop, and allowing humans to be alerted when agents try to expand these boundaries.&lt;/p&gt;

&lt;p&gt;But I want to focus on something else in my project. I want to focus on the “my”.&lt;/p&gt;

&lt;p&gt;Because while “I” was “developing”, I kept asking myself - is it “my” project?&lt;/p&gt;

&lt;p&gt;This new world of agent-assisted development creates some discomfort for those of us who still remember the time when we wrote code by hand. But it’s more than writing code. The whole process - brainstorming, designing, defining tasks, managing the roadmap, all of it was done using my team of agents.&lt;/p&gt;

&lt;p&gt;Now, it’s not that this process is new to me. I have been working for years as a software architect, so my day-to-day has for a long time been about talking to people and not writing code. This is what I do. I talk to people to brainstorm, design, manage the roadmap, plan, and review implementation.&lt;/p&gt;

&lt;p&gt;So you can say - people, agents, what’s the difference?&lt;/p&gt;

&lt;p&gt;But somehow, there is a difference.&lt;/p&gt;

&lt;p&gt;With a team of humans, there is shared ownership of the product. It’s not “mine”, it’s “ours”. But what is this ownership when your coworkers are a team of agents? When there isn’t really a “they” in the sense that we are used to thinking about what “they” is?&lt;/p&gt;

&lt;p&gt;This is beyond the simple question of ownership, of how much you actually understand the code, how much you know what’s really going on under the hood. That’s an important and practical question that teams will have to tackle as agents start to write more and more code.&lt;/p&gt;

&lt;p&gt;I’m talking about a more existential question. About that boundary of what is human, what is creativity, and how they correlate when creation is done with so much automation by a non-human.&lt;/p&gt;

&lt;p&gt;Those boundaries are getting blurred, and it feels like we need to calibrate ourselves again, redefine how we perceive what we do, what we own, and what it means when, in that human-nonhuman collaboration, the non-human part is getting bigger.&lt;/p&gt;

&lt;p&gt;I started with a project that tried to understand and create boundaries for agent development, but it ended up questioning my own boundaries, and the boundary between me and the machine.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>discuss</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>BEAR: Structural Boundaries for Agentic Development</title>
      <dc:creator>Rotem Hermon</dc:creator>
      <pubDate>Tue, 10 Mar 2026 10:19:48 +0000</pubDate>
      <link>https://dev.to/rorehe/bear-structural-boundaries-for-agentic-development-b3f</link>
      <guid>https://dev.to/rorehe/bear-structural-boundaries-for-agentic-development-b3f</guid>
      <description>&lt;p&gt;In the last few posts I’ve been thinking about how development might change when agents can write large amounts of code very quickly. If generating implementation becomes easy, the constraint in development shifts. The interesting question is no longer how we produce code, but where control should live when a system can evolve at that speed.&lt;/p&gt;

&lt;p&gt;One thing that kept coming to mind is that many of the most dangerous changes in a system are not ordinary code edits. They are structural changes. Accessing something new, dependency changes, side effects. These are important architectural changes, but they often get lost in a pull request, especially when an agent can introduce many changes in the same PR.&lt;/p&gt;

&lt;p&gt;That made me wonder what would happen if the important architectural structure of a system was described explicitly at a level above the generated code.&lt;/p&gt;

&lt;p&gt;I started thinking about describing a system as a set of blocks. Each block represents an architectural unit with clearly defined boundaries. It declares what it can access, what it exposes, and what dependencies it is allowed to have. Inside those boundaries, development can move quickly. Agents can generate code, refactor it, and evolve it freely, but the boundaries themselves remain visible and enforceable.&lt;/p&gt;

&lt;p&gt;It’s a bit like putting a bear in a cage. Inside the cage the bear can move however it wants, but the cage still defines the limits of where it can go.&lt;/p&gt;

&lt;p&gt;I started experimenting with this idea in a small project called BEAR - Block Enforceable Architectural Representation. The idea is that an agent starts from a small representation of the application as a set of blocks, and then works within those boundaries. BEAR CLI generates deterministic checks from it, and CI can use BEAR to surface structural changes. If a pull request expands the authority of a component, that expansion becomes visible rather than hidden inside ordinary code changes, and a human-in-the-loop review can be triggered.&lt;/p&gt;

&lt;p&gt;This is still very much an experiment, but the project and how it works are available here: &lt;a href="https://github.com/rore/bear-cli" rel="noopener noreferrer"&gt;https://github.com/rore/bear-cli&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As development velocity continues to increase, it seems likely that some form of explicit structural boundary layer will become necessary.&lt;/p&gt;

&lt;p&gt;BEAR is a small attempt to explore what that layer might look like.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>development</category>
      <category>programming</category>
      <category>ci</category>
    </item>
    <item>
      <title>Not All Friction Is the Same</title>
      <dc:creator>Rotem Hermon</dc:creator>
      <pubDate>Mon, 09 Mar 2026 11:24:28 +0000</pubDate>
      <link>https://dev.to/rorehe/not-all-friction-is-the-same-311e</link>
      <guid>https://dev.to/rorehe/not-all-friction-is-the-same-311e</guid>
      <description>&lt;p&gt;Lately there are many posts celebrating the death of friction, praising how AI removes the friction of writing code and increases development velocity.&lt;/p&gt;

&lt;p&gt;But is friction always bad?&lt;/p&gt;

&lt;p&gt;From my current personal perspective, for example, the friction a shelter wall provides when a rocket hits it is good friction.&lt;/p&gt;

&lt;p&gt;But let’s take a less sensitive example.&lt;/p&gt;

&lt;p&gt;When Git came along, it brought a real change to how we manage source code. Anyone could create branches locally. Branching became trivial and cheap, merging became easy. Multiple developers could work on the same code in parallel. A lot of friction that central version control systems used to impose was removed. But that also increased the velocity at which changes could reach the main codebase.&lt;/p&gt;

&lt;p&gt;To regain visibility and control over those changes, we introduced a new intentional point of friction: Pull Requests.&lt;/p&gt;

&lt;p&gt;With PRs, a change becomes visible before it is merged. Someone else reviews it. We can discuss it. CI gates can run. PRs deliberately slow the final step so that we regain visibility and control.&lt;/p&gt;

&lt;p&gt;So not all friction is the same.&lt;/p&gt;

&lt;p&gt;Some friction slows us down because of effort: writing boilerplate code, setting up environments, repetitive work. Removing this friction improves velocity.&lt;/p&gt;

&lt;p&gt;But there is also friction that we introduce intentionally to maintain control, safety, or correctness. Things like PRs, deployment gates, controlled releases, feature flags, and even type checks.&lt;/p&gt;

&lt;p&gt;The interesting thing is that when “bad” friction disappears and velocity increases, we often need to introduce new “good” friction so things don’t get out of control.&lt;/p&gt;

&lt;p&gt;And that’s what we’re witnessing now with AI. The friction of writing code is being reduced dramatically, and development velocity increases accordingly. But the risks don’t disappear. So we now need to find ways to introduce new and refined friction that allows us to move at this new speed with regained visibility and confidence.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>Abstraction Has Never Removed Structure</title>
      <dc:creator>Rotem Hermon</dc:creator>
      <pubDate>Mon, 09 Mar 2026 07:36:52 +0000</pubDate>
      <link>https://dev.to/rorehe/abstraction-has-never-removed-structure-1i3</link>
      <guid>https://dev.to/rorehe/abstraction-has-never-removed-structure-1i3</guid>
      <description>&lt;p&gt;When we look at the history of programming language revolutions, there’s a consistent pattern. Every major shift in programming increased expressiveness, but it also introduced new structure and constraints. Each shift created a new level of abstraction. We could express what we wanted more clearly, with a larger vocabulary, but always under formal rules.&lt;/p&gt;

&lt;p&gt;But this shift feels different. For the first time, our abstraction layer is natural language. In previous transitions, we introduced new programming languages to support the new abstraction, but they remained formal and deterministic. Natural language is the most expressive language we have, yet it is not formal or deterministic. It is open-ended and interpretive. That changes the nature of the abstraction itself.&lt;/p&gt;

&lt;p&gt;Natural language is a powerful tool. The fact that you can describe what you want, almost as you would to another person, and see it built, is a real leap. It works especially well in contexts where ambiguity is acceptable and iteration is fast. But in systems that require precision and high confidence, ambiguity can become a liability.&lt;/p&gt;

&lt;p&gt;I think we may see a divergence in how language is used for software development. For many projects, natural language may be sufficient. But history suggests that when expressiveness rises, constraint follows. In high-precision systems, structure will need to reappear.&lt;/p&gt;

&lt;p&gt;I see two levels where this might happen:&lt;/p&gt;

&lt;p&gt;First, the specification layer. We may need a more formal representation of intent. Not just free-form requirements, but structured ways to describe what a system must do, or to review how natural language was translated.&lt;/p&gt;

&lt;p&gt;Second, the structural boundary layer. As code generation becomes more fluid and high velocity, boundaries matter more. We will need clearer definitions of what parts of a system are allowed to access or modify other parts, so critical behavior does not change without being visible.&lt;/p&gt;

&lt;p&gt;Abstraction has never removed structure. Structure needs to reappear. The question is where.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>Not Every Coding Is a Vibe</title>
      <dc:creator>Rotem Hermon</dc:creator>
      <pubDate>Mon, 09 Mar 2026 07:34:19 +0000</pubDate>
      <link>https://dev.to/rorehe/not-every-coding-is-a-vibe-18cl</link>
      <guid>https://dev.to/rorehe/not-every-coding-is-a-vibe-18cl</guid>
      <description>&lt;p&gt;Look, vibe coding is great. But not every coding is a vibe.&lt;/p&gt;

&lt;p&gt;Coming from years of building products and backend services that provide critical business functionality for high-profile and demanding customers, you can’t “vibe” this. Working on these kinds of systems requires real confidence. And while LLMs are great, they’re still non-deterministic. For high-scale, high-performance, business-critical services, you need determinism somewhere in the loop.&lt;/p&gt;

&lt;p&gt;From where I’m standing, vibe coding is perfect for personal projects, internal tools, even a lot of B2C-type applications. But in environments that demand reliability, accountability, and strong non-functional guarantees, vibe coding alone isn’t enough.&lt;/p&gt;

&lt;p&gt;You need agentic development. And that means serious tooling. Tooling that makes sure agents write code within clear boundaries, that drift is visible, that non-functional requirements are enforced, and that architectural decisions aren’t silently overridden.&lt;/p&gt;

&lt;p&gt;There’s a whole layer of infrastructure being built right now to support this shift. I think that’s what will really drive agentic development into the more demanding parts of the industry.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>vibecoding</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
