<?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: Monyet Batu</title>
    <description>The latest articles on DEV Community by Monyet Batu (@monyetbatu).</description>
    <link>https://dev.to/monyetbatu</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%2F3632100%2Faf78d7ff-b4bb-4186-b9f6-16326b594279.png</url>
      <title>DEV Community: Monyet Batu</title>
      <link>https://dev.to/monyetbatu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/monyetbatu"/>
    <language>en</language>
    <item>
      <title>Stop Writing Perfect Prompts. Give the Model a Practice.</title>
      <dc:creator>Monyet Batu</dc:creator>
      <pubDate>Thu, 28 May 2026 07:24:44 +0000</pubDate>
      <link>https://dev.to/monyetbatu/stop-writing-perfect-prompts-give-the-model-a-practice-1m2m</link>
      <guid>https://dev.to/monyetbatu/stop-writing-perfect-prompts-give-the-model-a-practice-1m2m</guid>
      <description>&lt;p&gt;We keep trying to make LLMs reliable by writing the perfect prompt.&lt;/p&gt;

&lt;p&gt;Lay out every step. Number them. Anticipate each branch. Specify the&lt;br&gt;
output format, the edge cases, the tone. Build the plan so completely&lt;br&gt;
that the model has nothing left to do but execute it.&lt;/p&gt;

&lt;p&gt;And it half works. Until the work changes slightly, or the input arrives&lt;br&gt;
in a shape you didn't foresee, and the plan that was supposed to guarantee&lt;br&gt;
the result is suddenly the thing getting in the way.&lt;/p&gt;

&lt;p&gt;I spent a long time building harnesses this way. Rich function&lt;br&gt;
descriptions, clear specs, every primitive exposed and well-named. The&lt;br&gt;
system was brittle anyway. Sometimes the model reached for the right tool;&lt;br&gt;
sometimes it didn't. Change one thing and something that had worked&lt;br&gt;
stopped working. The information was all there. The reliability wasn't.&lt;/p&gt;

&lt;p&gt;The problem was not that the plan was incomplete. The problem was&lt;br&gt;
that I was treating the plan as the engine of action,&lt;br&gt;
rather than as a resource for action.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plans don't cause action
&lt;/h2&gt;

&lt;p&gt;In 1987, Lucy Suchman made a distinction that has aged better than almost&lt;br&gt;
anything written about computers since. Plans, she argued, do not &lt;em&gt;cause&lt;/em&gt;&lt;br&gt;
action. They are a &lt;em&gt;resource&lt;/em&gt; we draw on while acting in a situation. The&lt;br&gt;
real work happens in situ — moment to moment, reading where you are, what&lt;br&gt;
is at hand, what would count as a sensible next move. The plan is a story&lt;br&gt;
we tell before and after. It is not the thing that does the work.&lt;/p&gt;

&lt;p&gt;A skilled practitioner doesn't follow a plan. They have situated&lt;br&gt;
awareness: a working grasp of the practice as it unfolds. A carpenter&lt;br&gt;
faced with a knot in the wood doesn't consult a flowchart. They know what&lt;br&gt;
the wood affords, what the tools offer, what the job is for — and they&lt;br&gt;
respond.&lt;/p&gt;

&lt;p&gt;That is what the LLM was missing. Not a better plan. Situated awareness.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you give instead of a plan
&lt;/h2&gt;

&lt;p&gt;There is a long body of work on how practices actually work — practice theory,&lt;br&gt;
running from Wittgenstein through Schatzki, Reckwitz, Shove.&lt;br&gt;
It describes a practice as a bundle of constitutive elements: the ends and&lt;br&gt;
orientations that give the work direction, the practical understandings that&lt;br&gt;
let someone recognise what to do, the rules, the affordances, the materials.&lt;/p&gt;

&lt;p&gt;That bundle is the captured structure of a practitioner's situated&lt;br&gt;
awareness about a kind of work. And it turns out you can hand it to an&lt;br&gt;
LLM.&lt;/p&gt;

&lt;p&gt;Not as a script to follow. As a resource to hold while acting. Give the&lt;br&gt;
model the bundle — the purpose, the understanding, the rules, what the&lt;br&gt;
tools afford — and let it be the practitioner. Then point it at the end&lt;br&gt;
result and get out of the way.&lt;/p&gt;

&lt;p&gt;The difference is not subtle. A model holding a practice doesn't need&lt;br&gt;
every step spelled out, because it understands what the work is &lt;em&gt;for&lt;/em&gt;. It&lt;br&gt;
recognises the situation and responds to it. When the input arrives in an&lt;br&gt;
unexpected shape, it doesn't break — it does what a competent practitioner&lt;br&gt;
does, which is to read the circumstance and meet it.&lt;/p&gt;

&lt;p&gt;Competence meets circumstance. That is the whole thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like in a harness
&lt;/h2&gt;

&lt;p&gt;In practice, this means I no longer start by giving the model a long&lt;br&gt;
procedural prompt.&lt;/p&gt;

&lt;p&gt;I give it a practice.&lt;/p&gt;

&lt;p&gt;A practice bundle might contain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Teleo-affective structure: what the work is for, and the stance to take&lt;/li&gt;
&lt;li&gt;Understanding: what matters in this kind of situation&lt;/li&gt;
&lt;li&gt;Rules: what must be preserved or avoided&lt;/li&gt;
&lt;li&gt;Affordances: what the available tools make possible&lt;/li&gt;
&lt;li&gt;Materials: what the model is acting with and on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, instead of:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read the calendar.&lt;/li&gt;
&lt;li&gt;Check for conflicts.&lt;/li&gt;
&lt;li&gt;Decide whether the event matters.&lt;/li&gt;
&lt;li&gt;Ask for clarification if needed.&lt;/li&gt;
&lt;li&gt;Apply the change.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I give it the structure of calendar stewardship: what the practice is for,&lt;br&gt;
what counts as care, what rules constrain action, what affordances the&lt;br&gt;
calendar tools provide, and what kinds of judgement matter.&lt;/p&gt;

&lt;p&gt;The model is still bounded — it still has tools, rules, and checks. But the&lt;br&gt;
centre of gravity moves from procedure to situated competence.&lt;/p&gt;

&lt;p&gt;When the situation shifts, it is not trapped inside the original plan; it reads&lt;br&gt;
the circumstance, uses the affordances at hand, and continues towards the goal.&lt;/p&gt;

&lt;h2&gt;
  
  
  There is no plan
&lt;/h2&gt;

&lt;p&gt;The instinct to over-specify comes from a culture that has taught us to&lt;br&gt;
trust plans over responsiveness — to believe that the confident, detailed,&lt;br&gt;
step-by-step account is the real work, and the messy in-the-moment&lt;br&gt;
judgement is just noise to be engineered away.&lt;/p&gt;

&lt;p&gt;It is the other way around. The judgement &lt;em&gt;is&lt;/em&gt; the work. The plan was&lt;br&gt;
always just a story about it.&lt;/p&gt;

&lt;p&gt;So stop writing the perfect prompt. Give the model situated awareness, and&lt;br&gt;
let it focus on the end.&lt;/p&gt;

&lt;p&gt;There is no plan. There was never a plan. Things get built anyway.&lt;/p&gt;




&lt;h2&gt;
  
  
  The work behind this
&lt;/h2&gt;

&lt;p&gt;This is the short version. The full argument — including a working&lt;br&gt;
implementation, an autonomic self-improving loop, and a worked example&lt;br&gt;
running under a real LLM harness — is set out across four essays, best&lt;br&gt;
read in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI Trust and Situated Awareness: A Practice Theory Reframe&lt;/strong&gt;&lt;br&gt;
— the reframe, from "meaning layer" to situated awareness.&lt;br&gt;
&lt;a href="https://doi.org/10.5281/zenodo.20306761" rel="noopener noreferrer"&gt;10.5281/zenodo.20306761&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Practice Theory — The Apprenticeship and a Strange Loop&lt;/strong&gt;&lt;br&gt;
— how the practice is transmitted, and how the system maintains itself.&lt;br&gt;
&lt;a href="https://doi.org/10.5281/zenodo.20354614" rel="noopener noreferrer"&gt;10.5281/zenodo.20354614&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Practice Theory — The Implementation&lt;/strong&gt;&lt;br&gt;
— a walk-through from a real practice to running code.&lt;br&gt;
&lt;a href="https://doi.org/10.5281/zenodo.20405699" rel="noopener noreferrer"&gt;10.5281/zenodo.20405699&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Practice Theory — A Worked Example (Calendar Stewardship)&lt;/strong&gt;&lt;br&gt;
— a single practice, enacted end to end under a live harness.&lt;br&gt;
&lt;a href="https://doi.org/10.5281/zenodo.20406162" rel="noopener noreferrer"&gt;10.5281/zenodo.20406162&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Companion software:&lt;br&gt;
&lt;a href="https://github.com/MonyetBatu/practice-theory-implementation" rel="noopener noreferrer"&gt;practice-theory-implementation&lt;/a&gt;&lt;br&gt;
— &lt;a href="https://doi.org/10.5281/zenodo.20405235" rel="noopener noreferrer"&gt;10.5281/zenodo.20405235&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Monyet Batu — &lt;a href="https://symagenic.com" rel="noopener noreferrer"&gt;symagenic.com&lt;/a&gt; ·&lt;br&gt;
&lt;a href="https://orcid.org/0009-0007-9002-5381" rel="noopener noreferrer"&gt;ORCID 0009-0007-9002-5381&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>promptengineering</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
