<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://barmag.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://barmag.github.io/" rel="alternate" type="text/html" hreflang="en" /><updated>2026-05-07T18:47:12+02:00</updated><id>https://barmag.github.io/feed.xml</id><title type="html">barmag</title><subtitle>Engineering leadership, neurodivergence, and technology -- by Yasser Makram</subtitle><entry><title type="html">Your Wearable Is a Witness, Not a Judge</title><link href="https://barmag.github.io/2026/05/07/your-wearable-is-a-witness-not-a-judge/" rel="alternate" type="text/html" title="Your Wearable Is a Witness, Not a Judge" /><published>2026-05-07T00:00:00+02:00</published><updated>2026-05-07T00:00:00+02:00</updated><id>https://barmag.github.io/2026/05/07/your-wearable-is-a-witness-not-a-judge</id><content type="html" xml:base="https://barmag.github.io/2026/05/07/your-wearable-is-a-witness-not-a-judge/"><![CDATA[<p>I am working in the small hours of the morning on a day when I have not slept much. I woke earlier than I needed to, considered going back to sleep, listened to my body, and the body said: you are awake now, work now, the nap will come in a few hours, plan around it. So I started work, and pencilled in the nap.</p>

<p>Subjectively, I am Full, Flowing, and calmly awake.</p>

<p>My Fitbit, with the kind of confidence that two-decimal precision allows, has told me my night was short, my REM thin, my resting heart rate up. None of this is wrong. None of it is the source of the day’s plan.</p>

<p>I have already decided what I am going to do today. The watch’s opinion is interesting evidence I will consider, the way a careful person considers the testimony of a witness who has only seen part of the room.</p>

<p>This used to be harder than it is now. For years the watch’s opinion was the verdict; my own felt sense was soft data, prone to wishfulness and self-flattery. The asymmetry was structural. The watch was quantified, decisive, and rendered in colour. My internal read was none of those things. Numbers win arguments with felt sense, on the same logic that any quantified claim wins an argument with any unquantified one: the number is the kind of thing institutions accept.</p>

<p>The watch is right about its substrate. It really did measure what it measured. My night really was short, fragmented, light on the stages a body uses to repair itself. None of that is in dispute. What is in dispute is the <em>implication</em>: that those numbers add up to a verdict on what I can do today.</p>

<p>This post is about how I have learned to demote the watch from judge to witness. It is also about when to call it back to the stand, because there are mornings the watch sees something my body has been masking for me, and the testimony I would rather not hear is the one I most need.</p>

<h2 id="the-false-authority-of-the-score">The false authority of the score</h2>

<p>The recovery score is an interesting design object.</p>

<p>It looks like a measurement. It comes stamped with a unit, a colour, a percentile band, and sometimes a sentence of advice. Its visual rhetoric is medical: clean numerals, traffic-light palette, the quiet confidence of a clinical reading. Underneath the surface, what the device has actually done is run a model. The model takes a few signals (heart rate variability, resting heart rate, sleep stages) and compresses them into one number. The number is then presented as a property of you, in the way that height or weight is a property of you.</p>

<p>It is not. It is a property of the model’s read of a few signals at a few moments. The compression is enormous and the loss is silent.</p>

<p>That silence is the design problem. The score does not arrive with a confidence interval, a list of inputs it lacked, or a footnote on what categories of energy it cannot see. It arrives bare. The whole interpretive labour of mapping a one-number readout to a many-dimensional state is offloaded to the wearer, who tends to do it quickly, in the kitchen, before coffee, on the strength of whatever colour the band turned out to be today.</p>

<p>Most of the resulting interpretation is wrong, and the wrongness is consistent in one direction. The score reads what it can read and the wearer treats the reading as if it covered everything. The result is a class of mornings where a fully measured night, scored low, reshapes the day around a verdict the score did not have the inputs to issue.</p>

<p>This is not the watch’s fault. The watch is a witness, doing witness work. The category error is treating the witness’s testimony as the verdict.</p>

<h2 id="witness-not-judge">Witness, not judge</h2>

<p>The frame I have been using is the courtroom one.</p>

<p>A witness gives evidence. They saw what they saw, from where they were standing, with whatever attention they happened to bring. The evidence enters the record. Its weight depends on what else is in the record, on context the witness did not have access to, on competing testimony, and on a frame for interpreting all of it together. The witness does not assemble that frame; the witness deposits one input.</p>

<p>A judge issues a verdict. The judge integrates testimony with context, precedent, and the broader picture, and produces a decision that says: given all of that, the action is <em>this</em>.</p>

<p>Wearables are witnesses. They saw what they saw, from where they were standing, which is your wrist. Their attention was real and their measurement was honest. The evidence they deposited into your morning is genuine. It is also one slice of one substrate.</p>

<p>The verdict is somewhere else.</p>

<p>It belongs to the integration that you, in the kitchen, on a body you have been living inside for decades, can do. That integration includes the watch’s testimony, but it also includes context the watch did not have: what you ate, what you have been emotionally chewing on, where you are in a recovery curve from a stressor weeks back, whether the day’s work is the kind that drains you or feeds you, what your social battery looks like, what you can feel in your shoulders and jaw and breath that the watch on your wrist never reaches. The integration is not magic. It is the working knowledge of a long-occupied body, processed by a brain that has had access to all of those signals, all the time.</p>

<p>The integration outperforms the watch on any morning where the watch’s substrate is a small part of what is going on. Which is most mornings.</p>

<p>The trap is the categorical confusion that lets the witness’s testimony pass for the verdict. Once that happens, the rest of the evidence stops being weighed. The watch said red, so the day is red. The integration is overruled by an input it should have been one of.</p>

<p>The move that resolves the confusion is small and structural. You do not have to ignore the watch. You just have to stop letting it pretend to be the judge.</p>

<h2 id="the-bi-phasic-morning">The bi-phasic morning</h2>

<p>Let me show what this looks like with a specific case, where the watch was right, was true, and was also wrong, all about the same night.</p>

<p>A few days back, my Fitbit told me at six in the morning that I had slept just over four hours. The recording was complete, in its own terms. The night had a start and an end and a number, and the number arrived in the colour that means <em>take it easy today</em>.</p>

<p>My body said something different. The body said: I am not finished.</p>

<p>I had been awake for an hour, doing some work pre-dawn. Now there was a window in which I might be able to slip back into sleep, and the body was nudging toward it, the way a body does when it is genuinely tired rather than performing tiredness. I lay back down. I slept another two and a half hours. By eleven the watch had quietly updated to show just over seven hours total, across two blocks, the second one with normal sleep architecture.</p>

<p>The reading at six was true at six. By eleven it was wrong about the same night.</p>

<p>That sentence is the thing I want to sit on. The watch was honest. It reported what it had measured at the moment of the report. Its mistake, the mistake the device cannot help making, is that the reading was framed as a property of the night. Nights, like most things in a body, are not closed objects at six in the morning. They have a shape that can extend, fragment, double, fold. A wearable’s “night” is whichever block of horizontal motionless body it happened to capture.</p>

<p>The category error here is not subtle and the move out of it is not heroic. The body knew. The body said <em>I am not finished</em>. The watch’s testimony was that the body had finished. Two truths, one moment, contradictory. The witness was correct about its substrate. The judgement of <em>what is true about this body’s night</em> lived elsewhere.</p>

<p>A reader might object that this is a small case, because the watch’s reading was simply incomplete, and a more complete reading would have agreed with the body. That is true. It is also the easy version. The hard version is the morning after a night where the watch had complete data, and felt sense disagreed anyway. That is the next section.</p>

<h2 id="when-the-data-was-complete-and-the-body-still-won">When the data was complete and the body still won</h2>

<p>Yesterday morning the watch had complete data. There was no second block waiting in the wings, no missing chunk. The night had started a little before eleven and ended a little after three, fully tracked, fully scored. Just under four hours of sleep, fragmented across more than a dozen brief wakes, with both deep and REM stages well below where they would normally sit. All of that is real and uncontested.</p>

<p>I read the data shortly after waking, sitting in the kitchen waiting for the kettle. My felt read on the same morning was Full, Flowing, and calmly awake. Not artificially upbeat. Not wishful. The kind of clear, unforced read you get when initiation gates are open, the brain is settled, and the day in front of you has an actual shape.</p>

<p>I planned five and a half hours of focused work on a research project I have been building. I did the five and a half hours. At the end the cognitive flexibility I had walked in with had not noticeably degraded. The afternoon went into bureaucratic work that needed actual attention, and it all held up. The day cost about five spoons against a stated budget of nine. None of it felt forced.</p>

<p>The watch had been right about the night. The day went well anyway.</p>

<p>This is the case the witness frame is for. The watch was not slow, was not incomplete, was not wrong about its substrate. It saw what it saw. What it saw was that my sleep architecture had not done the physical-restoration work it usually does. What it could not see was that physical-restoration work is one input to felt energy, not the only one.</p>

<p>Felt energy is a downstream integration of sleep, but also of circadian timing, hormonal state, emotional regulation, the meaningfulness of the day’s tasks, the social shape of the morning, and a half-dozen other things the wearable has no instrument for. Sometimes the integration runs lean: good sleep, dragged day. Sometimes it runs rich: poor sleep, generative day. The watch can only ever measure one of the inputs.</p>

<p>There is a related observation worth naming: body data lags felt state by a few days when you are coming out of a sustained stress period. Subjective leads, body data follows. That window is where the asymmetry between the watch and the body is most pronounced and most useful, and it is where most of my recent split-readings have been happening. The architecture that lets you live inside that gap without anxiety is the recovery curve, which is the next section.</p>

<h2 id="the-recovery-curve-and-why-asymmetries-are-expected">The recovery curve and why asymmetries are expected</h2>

<p>When you have just come out of any sustained stress period, expect to spend roughly one to three weeks watching your body data and your felt state behave like they belong to two different people.</p>

<p>Sustained stress is broad. It includes obvious things like illness or injury. It also includes long trips, intense social periods, interview cycles, big decisions, tribunal proceedings, the build-up to and aftermath of any project that ate weeks of your attention. The autonomic nervous system did not separately log each cause. It just registered cumulative load, and now it has to recover.</p>

<p>Recovery happens in three signals at once, on related timescales. Resting heart rate falls back toward your individual baseline as parasympathetic tone returns. Sleep architecture rebuilds, with REM tending to recover before deep sleep does. (The brain prioritises emotional and cognitive integration over physical restoration when it gets to choose, which is some of why a night during recovery can look REM-heavy.) Glucose handling normalises if you are tracking it: post-meal peaks settle, time-in-range climbs, the reactive dips that show up in the recovery substrate fade as tissue insulin sensitivity comes back.</p>

<p>A fourth axis, social battery, runs slowest. It is the one productivity does not refuel.</p>

<p>During a recovery window the body data is not describing your steady state. It is describing the recovery substrate. Treating the recovery substrate as actionable steady-state data is the most common interpretive error the wearable era encourages. If you have just come back from two weeks abroad and the watch tells you your deep sleep is in deficit, the watch is right. The deficit is not a property of you. It is a property of the recovery you are mid-way through.</p>

<p>The framework that resolves the puzzle of <em>why does my watch say I should rest while I feel completely fine</em> is just this: subjective state can lead body data by days, and during recovery windows it usually does. The body knows it is recovering before the wearable’s measurement substrates catch up. The felt sense of <em>I am calm and clear and ready</em> is not denial of the watch’s data; it is a signal from a layer of integration the watch cannot reach.</p>

<p>The watch’s testimony enters the recovery frame. The frame, which knows about the trip you came back from and the interview cycle you are in and the difficult correspondence you closed last week, is what makes the verdict. The verdict, on most recovery-window mornings, is <em>yes, the data is real, and yes, it does not change what I can do today</em>.</p>

<p>The frame is the judge. The watch is the witness. Once those roles are clear, the asymmetry stops being a contradiction and starts being a measurement of the recovery itself.</p>

<h2 id="the-universalising-move">The universalising move</h2>

<p>I have a diagnosis of autism and ADHD, and the diagnosis sharpens this whole story, but it does not own it.</p>

<p>The diagnosis sharpens it in two ways. First, interoception in autistic people is not a clean signal. It can be muted in some channels (hunger, thirst, tiredness) and over-amplified in others (sensory load, emotional intensity), which means the felt-state read on any given morning has more interpretive labour built into it than a typical body’s. That labour, done well, produces a richer integration than a non-autistic morning report; done badly, it produces nothing. The wearable’s offer of a single number is more seductive against an interoceptive signal that needs work.</p>

<p>Second, ADHD makes felt energy more variable across the day, which means the watch’s morning verdict is even less predictive of the day’s actual shape. A morning red can become an afternoon flow on the right combination of novelty, special interest, and stake. The watch has no way to model that.</p>

<p>But the substrate of the post is universal. Anyone who has slept badly and had a great day, or slept well and felt terrible, has the underlying data to know the watch’s score is incomplete. The wearable era did not create the gap between body data and felt state. It just gave the gap a number to argue with, and the number happens to win most arguments.</p>

<p>The recovery-score culture, with its language of readiness and strain and pace-yourself-today, is a particular flavour of the same disciplinary architecture I have written about elsewhere. It is an external dashboard that asks you to police yourself on its behalf, with the asymmetry of authority a <a href="https://barmag.github.io/engineering-management/leadership/2026/05/02/panopticon-vs-agency-in-management.html">panopticon</a> trades in. The Adlerian move is the same: refuse to take a task that is not the watch’s to issue.</p>

<p>This kind of cooperation with the body is only available to me because of the way I work. I have written about the <a href="https://barmag.github.io/engineering-management/ceremonies/ai-agents/2026/04/13/standup-clock-time-cosplay.html">industrial inheritance of synchronous clock-time in engineering ceremonies</a>, and the case for asynchronous work as a more honest fit to how cognitive labour actually happens. The wearable side of the same argument is this: synchronous schedules force the body to be in a particular state at a particular time. Async work does not. When the body’s wake came hours before I had planned to be up, async let me work then. When the body’s nap came in the early afternoon, async let me sleep then. The watch could be respected as testimony without distorting either decision. None of that is available to someone whose day must show up at nine and produce visible activity until five. For that worker the wearable’s verdict becomes the only signal that gets to revise the schedule, because the body’s signals have nowhere to land.</p>

<h2 id="when-the-watch-is-right-and-youre-wrong">When the watch is right and you’re wrong</h2>

<p>The honest counter-case.</p>

<p>There is a category of morning where I am the one who should be deferring to the witness, and I have to be careful to recognise it.</p>

<p>Specifically: chronic accumulation that I have stopped feeling. Drift in fitness over months. Stress the body has metabolised into baseline by relabelling it as normal. Autonomic patterns I cannot detect from the inside because they have been steady too long for my felt sense to register as anomalous. In each case the watch is recording the truth my body has stopped reporting to me.</p>

<p>This case is more dangerous in autistic and ADHD bodies than in neurotypical ones, for a specific reason. Masking, which is the long-running suppression of internal signals to fit external requirements, does damage to interoception in ways that take years to surface. <em>I feel fine</em> in a body that has masked its way through three decades is not always the integration speaking. Sometimes it is the silence of a system that has been told for too long not to report.</p>

<p>The witness frame protects this case as well as the other one. If your felt sense and the watch agree on every reading where they overlap, your felt sense is doing real integrative work and the watch is filling in around it. If your felt sense agrees with itself across years while the watch reports something the body never names, the felt sense is suspect, and the testimony should be taken seriously because it is the only voice in the room saying anything.</p>

<p>The diagnostic question is not <em>does the watch agree with me</em>. It is <em>can I name what my felt sense is integrating right now</em>. If yes, the integration is real. If no, the watch may be reading a layer I have lost access to, and demoting it to witness is no longer the right move.</p>

<h2 id="what-i-take-away">What I take away</h2>

<p>I am writing this for myself first, the way I write all of these. Here is the short version I want to keep nearby.</p>

<ol>
  <li>
    <p><strong>The wearable is a witness, not a judge.</strong> It saw what it saw, from your wrist, in one substrate. The verdict is the integration, and the integration is yours.</p>
  </li>
  <li>
    <p><strong>The score’s authority is design, not measurement.</strong> Two-decimal precision and traffic-light colour are visual rhetoric. They are not evidence the score has covered the territory it is being read as covering.</p>
  </li>
  <li>
    <p><strong>Subjective state can lead body data by days, especially during recovery.</strong> A felt-sense reading of <em>I am ready</em> on a morning when the watch reads otherwise is not denial. It is a signal from a layer of integration the watch cannot reach.</p>
  </li>
  <li>
    <p><strong>The recovery curve frame holds the asymmetry.</strong> Resting heart rate, sleep architecture, glucose, and social battery recover on linked timescales over one to three weeks after any sustained stress. Body data during the recovery window is describing the recovery, not the steady state.</p>
  </li>
  <li>
    <p><strong>The exception is masked silence.</strong> When felt sense has nothing to integrate because long suppression has closed off the channels, the watch’s testimony becomes the only voice in the room. The diagnostic is whether you can name what your felt sense is integrating. If you cannot, take the witness seriously.</p>
  </li>
  <li>
    <p><strong>The wearable does not get to issue a verdict on your day.</strong> It is one input. Treat it like one.</p>
  </li>
</ol>

<p>I am writing this in the early evening. The morning had gone, by then, the way the body said it would: a long stretch of work, then a nap arriving on schedule, heavy on the deep stages a body uses to settle its accounts. The rule I have been trying to follow is small enough to fit in a sentence. <em>As much as I can, not fight my body.</em> The watch is fine company on that journey. It is not the journey.</p>

<hr />

<p><em>Sources and further reading:</em></p>

<ul>
  <li><em>Companion posts on the same disciplinary architecture: <a href="https://barmag.github.io/engineering-management/ceremonies/ai-agents/2026/04/13/standup-clock-time-cosplay.html">“Your Standup Is Industrial Clock-Time Cosplay”</a> on the time-discipline axis of self-policing; <a href="https://barmag.github.io/engineering-management/leadership/2026/05/02/panopticon-vs-agency-in-management.html">“Panopticon vs Agency: What I Catch Myself Doing in Management”</a> on the visibility axis.</em></li>
  <li><em>On wearable validity vs clinical-grade measurement: comparative work on the gap between consumer-grade Whoop / Oura / Fitbit recovery scores and reference-standard polysomnography, accelerometry, and ambulatory ECG.</em></li>
  <li><em>On interoception in autism: Murphy, J., Brewer, R., Catmur, C., &amp; Bird, G. (2017). <a href="https://doi.org/10.1016/j.dcn.2016.12.006">Interoception and psychopathology: A developmental neuroscience perspective.</a> Developmental Cognitive Neuroscience.</em></li>
  <li><em>On masking and chronic stress accumulation: Pearson, A. &amp; Rose, K. (2021). <a href="https://doi.org/10.1089/aut.2020.0043">A Conceptual Analysis of Autistic Masking: Understanding the Narrative of Stigma and the Illusion of Choice.</a> Autism in Adulthood.</em></li>
  <li><em>On separation of tasks: Kishimi, I. &amp; Koga, F. (2013). <a href="https://www.amazon.co.uk/Courage-Be-Disliked-yourself-happiness/dp/176063073X">The Courage to Be Disliked.</a></em></li>
</ul>]]></content><author><name></name></author><category term="body-data" /><category term="neurodivergent" /><category term="recovery" /><category term="wearables" /><category term="fitbit" /><category term="oura" /><category term="whoop" /><category term="recovery-score" /><category term="body-data" /><category term="sleep" /><category term="hrv" /><category term="interoception" /><category term="neurodivergent" /><category term="autistic" /><category term="adhd" /><category term="masking" /><category term="recovery-curve" /><summary type="html"><![CDATA[Wearables arrive with the kind of confidence that two-decimal precision allows. They are describing one substrate, not the whole organism. This post is about how to demote the watch from judge to witness, and when to call it back to the stand.]]></summary></entry><entry><title type="html">Panopticon vs Agency: What I Catch Myself Doing in Management</title><link href="https://barmag.github.io/2026/05/02/panopticon-vs-agency-in-management/" rel="alternate" type="text/html" title="Panopticon vs Agency: What I Catch Myself Doing in Management" /><published>2026-05-02T00:00:00+02:00</published><updated>2026-05-02T00:00:00+02:00</updated><id>https://barmag.github.io/2026/05/02/panopticon-vs-agency-in-management</id><content type="html" xml:base="https://barmag.github.io/2026/05/02/panopticon-vs-agency-in-management/"><![CDATA[<p>There’s a thing I do as a manager that I’m not proud of, and I’d like to write about it before I rationalise my way out of it.</p>

<p>I sometimes catch myself watching my team. Not in the obvious way. I don’t audit Slack statuses or tally commits at 11pm. The watching is quieter than that. It’s a tone of voice in a 1:1 that asks “how’s it going?” and means <em>show me you’re working</em>. It’s a meeting agenda whose unstated function is to make activity visible. It’s the part of me that, when an engineer is quiet for two days, gets uncomfortable and starts to look for them.</p>

<p>I’ve written about this from the inside before. In <a href="https://barmag.github.io/leadership/engineering-management/books/2026/03/28/courage-to-be-disliked-engineering-leadership.html">“The Courage to Be Disliked”</a> I called it the manager-as-saviour pattern: the anxiety that says <em>if I can see it, I can stop it from going wrong</em>. That post named the pattern as an ego problem, an approval problem, a courage problem. This post names it as a structural one.</p>

<p>The structural name is the panopticon.</p>

<p><img src="https://barmag.github.io/assets/media/panopticon-cutaway.png" alt="A 3/4 illustrated diagram of Jeremy Bentham's 1791 Panopticon prison: a circular building with cells around the perimeter, each cell visible from a single dark central guard tower. Faint teal sight-lines radiate from the tower outward to every cell, depicting one-way visibility. Labels read &quot;Cells (visible)&quot;, &quot;Guard tower (unseen)&quot;, and &quot;One-way sightlines&quot;. Muted warm-sand and cream palette." /></p>

<h2 id="what-the-panopticon-is-briefly">What the panopticon is, briefly</h2>

<p>Jeremy Bentham designed the panopticon in 1791 as a prison. The architecture was simple: a circular building with cells around the edge and a guard tower in the centre, lit so that the guard could see into any cell at any time, but the inmates couldn’t see the guard. The trick was the asymmetry. The guard might be looking, or might not. The inmates couldn’t tell. So they had to behave as if they were always being watched.</p>

<p>Foucault picked the panopticon up in <em>Discipline and Punish</em> (1975) and used it to describe how modern institutions work in general: schools, hospitals, factories, offices. His claim was that disciplinary power doesn’t need a guard in every tower. It just needs the architecture: the visibility, the records, the sense that someone <em>could</em> be looking. The discipline gets internalised. People police themselves on behalf of the institution, and the institution pays for fewer guards.</p>

<p>That’s the version of the panopticon I want to use here. Not a metaphor about literal surveillance, but a description of an architecture that produces self-watching. Most of the rituals of engineering management are panoptic in this sense: the standup, the dashboard, the burndown, the 1:1 status, the Friday demo, the visible PR queue. None of them require anyone to be actively watching at any given moment. They just need to exist, and to be plausibly checkable.</p>

<p>(I covered the time-discipline side of this in <a href="https://barmag.github.io/engineering-management/ceremonies/ai-agents/2026/04/13/standup-clock-time-cosplay.html">“Your Standup Is Industrial Clock-Time Cosplay”</a>. The clock is the <em>scheduling</em> axis of disciplinary power. The panopticon is the <em>visibility</em> axis. Same lineage, different mechanism.)</p>

<h2 id="what-separation-of-tasks-is-briefly">What separation of tasks is, briefly</h2>

<p>I wrote a whole post about this one too, so I’ll keep it short here.</p>

<p>Adlerian psychology, popularised in the West by Kishimi and Koga’s <em>The Courage to Be Disliked</em>, proposes a community-of-equals view of human relationships. Inside that view, the most operational concept is the <em>separation of tasks</em>. The test is one question: who ultimately bears the consequences of this choice? That person owns the task. Reaching across the boundary to take someone else’s task, even with good intentions, is a violation of their agency. Failing to do your own task is the mirror failure.</p>

<p>For a manager:</p>

<ul>
  <li><strong>Your task</strong> is to set context, share experience, create the conditions in which good decisions can happen, and bear organisational consequences.</li>
  <li><strong>Their task</strong> is to decide how to approach their work, learn from their own experience, own their technical choices, and bear individual consequences.</li>
</ul>

<p>Most management failures are boundary violations in one direction or the other. Micromanagement steals their task. Abdication dumps yours on them. Both feel, from the inside, like care.</p>

<h2 id="the-contrast">The contrast</h2>

<p>Here’s the punchline of putting these two frames next to each other.</p>

<p>The panopticon is an <strong>architecture of visibility</strong>. Its operating principle is: <em>I should be able to see what you’re doing, on demand, because that’s how I make sure things go well.</em></p>

<p>Separation of tasks is an <strong>architecture of refusal</strong>. Its operating principle is: <em>there is information about your work that is not mine to know, because owning it would be taking your task.</em></p>

<p>These are incompatible designs. You can’t run a separation-of-tasks team on a panoptic infrastructure, because the infrastructure keeps reaching across the line that the principle says shouldn’t be crossed. You can’t run a panoptic team on Adlerian principles, because the principles keep refusing to feed the infrastructure with the visibility it needs.</p>

<table>
  <thead>
    <tr>
      <th>Panoptic management</th>
      <th>Separation-of-tasks management</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Visibility is the safety mechanism</td>
      <td>Trust is the safety mechanism</td>
    </tr>
    <tr>
      <td>Status is reported on a cadence</td>
      <td>State is consulted when needed</td>
    </tr>
    <tr>
      <td>Engineers optimise for being seen working</td>
      <td>Engineers optimise for the work</td>
    </tr>
    <tr>
      <td>Coordination = synchronous presence</td>
      <td>Coordination = shared context</td>
    </tr>
    <tr>
      <td>Manager’s anxiety is held by surveillance</td>
      <td>Manager’s anxiety is held by themselves</td>
    </tr>
    <tr>
      <td>Legible upwards</td>
      <td>Illegible upwards</td>
    </tr>
  </tbody>
</table>

<p>That last row matters more than the rest. Most engineering organisations choose the panopticon by default. Not because anyone explicitly chose, but because the panopticon is <em>legible upwards</em>. A separation-of-tasks team produces agency, autonomy, and trust, none of which fit on a slide. A panoptic team produces dashboards, burndowns, and status decks, all of which do. The org’s reporting cadence pulls the manager toward visibility even when the manager <em>knows</em> separation of tasks works. The structure wins over the intention.</p>

<p>This is the same pattern as the clock-time inheritance: the ceremony persists not because the work needs it, but because the ceremony is the form the org’s reporting expects. Structures outlive their justifications. We inherit the discipline without noticing.</p>

<h2 id="the-honest-part-i-do-this">The honest part: I do this</h2>

<p>I’d like to claim I’m immune to this. I’m not. Most of the time the panopticon does its work in me without me noticing. The most useful thing I can do in this post is point at what that looks like, in two places I’ve actually caught it.</p>

<h3 id="in-self-management">In self-management</h3>

<p>This is where I notice it most often, and the most embarrassing place to admit it.</p>

<p><strong>Performative tasks.</strong> I have, on more than one occasion, done a piece of work primarily so that someone else could see it being done. The work was not pointless. It had an output, the output was real. But the <em>reason I did it</em> was that I wanted to be visible doing it. The classic version is the polished status update at the end of a week where the actual progress was modest. The status update is real; the time I spent on it tells me what it was actually for.</p>

<p><strong>Abiding by rules that don’t make sense.</strong> I notice in myself a reflex to follow workflow rules even after I’ve concluded they’re wrong. The standup at a time that doesn’t fit my brain. The ticket-update ritual that costs more than it informs. The implicit “always reply within X hours” norm. I don’t follow these rules because I’ve examined them and decided they’re load-bearing. I follow them because <em>not</em> following them feels exposed, and exposure feels dangerous, and the danger is the panopticon doing its work even when no one is watching.</p>

<p><strong>Friction between self and group interest.</strong> This is the deepest one. I notice that I will sometimes accept a small personal cost (a meeting at a bad time, a piece of work I shouldn’t be the one doing, a deadline that ignores my actual state) rather than name the misalignment between what I need and what the group wants. The reason is not selflessness. The reason is that naming the misalignment makes me visible as someone whose needs are out of step with the group, and being out of step is what the panopticon penalises. So the friction stays internal. Surfacing it would surface me.</p>

<p>I’m describing these in the present tense because they are present-tense. I haven’t left them behind. What I have is an Adlerian frame that lets me catch myself faster, and a personal history of <a href="https://barmag.github.io/leadership/engineering-management/books/2026/03/28/courage-to-be-disliked-engineering-leadership.html">autistic and ADHD masking</a> that gives me strong intuitions for what panoptic discipline does to a body over years. Masking is what self-watching feels like from the inside. Most engineers I’ve worked with have some version of it, neurodivergent or not, because the panopticon doesn’t need a diagnosis to install itself.</p>

<p><img src="https://barmag.github.io/assets/media/panopticon-stained-glass.png" alt="A cathedral stained glass mosaic portrait of a single human figure standing frontally, divided vertically by colour temperature: the left half rendered in cool teals, slate blues and soft greys; the right half in warm ambers, terracottas and golds. Lead lines flow across the body, fragmenting it without breaking it. A small panopticon tower shape is visible in the centre of the chest, and faint cell-window patterns appear along the torso and limbs. The figure glows from a light source behind it, like a cathedral window at dusk. Contemplative, sacred, complex." /></p>

<h3 id="in-management">In management</h3>

<p>The interesting part of writing this post is that I can see the same architecture on the other side of the relationship, in how I manage others. The same panopticon is doing the same work; only the role has changed.</p>

<p><strong>Panopticon in managing performative and maintenance tasks.</strong> The clearest place I’ve caught it is around work that doesn’t have a satisfying ship-this-and-be-done shape. Performative work: status, reporting, stakeholder comms. Maintenance work: keeping a system green, on-call, dependency upgrades, the quiet hygiene that doesn’t show up in a demo. These are the tasks the panopticon is most useful for, <em>as a management tool</em>, because no one wants to do them and visibility is what makes them happen. So I notice in myself the temptation to add a check, a recurring meeting, a status field, a dashboard, anything that makes the work visible and therefore likely to happen.</p>

<p>The temptation is rational in the short term. It mostly works. The cost is that every visibility hook I add to my team’s life is one more brick in their panopticon. Over time, the team adjusts to being visibly busy rather than effectively working. They start optimising for the dashboard. The performative work gets done. The good work gets harder.</p>

<p><strong>Control the panopticon via vision and team buy-in.</strong> The Adlerian alternative is not “no visibility”. That’s abdication, and it dumps the manager’s task back onto the team. The alternative is to replace surveillance with <em>shared purpose</em>. If the team genuinely understands why a piece of maintenance work matters (what it protects, what it enables, what breaks if it isn’t done), the work gets done without a guard tower, because the team’s interests have been honestly aligned with the work’s importance. Vision and buy-in are how you get the <em>function</em> of the panopticon (the work happens) without the <em>cost</em> (people optimising to be seen working).</p>

<p>This isn’t a clever rhetorical move. It’s an architectural choice. Panoptic management externalises motivation into surveillance. Vision-based management internalises motivation into understanding. The first is cheap to set up and expensive to live in. The second is expensive to set up (sharing context honestly, repeatedly, until the team owns it as their own), and cheap to live in once it lands.</p>

<p><strong>Minimise bullshit.</strong> This is the cleanest test I’ve found for whether I’m slipping into panoptic management. Every piece of work the team is doing should pass a <em>would I still ask for this if I weren’t going to look at it?</em> test. If the answer is no, the work exists for the visibility, not for the outcome. That work is bullshit, in the technical sense: work whose purpose is the appearance of work. The Adlerian move is to name it, drop it, or replace it with a smaller and more honest thing.</p>

<p>The hardest version of this test is the work I produce <em>upwards</em>: for my own manager, for stakeholders, for whoever sits one ring outside the team. Some of that is real. A lot of it is the same panoptic logic, one layer up. Cutting it requires the same Adlerian courage I’d ask of an engineer: name the visibility-versus-outcome trade and make the call. I don’t always make it. I am trying to make it more often.</p>

<h2 id="a-note-on-what-this-isnt">A note on what this isn’t</h2>

<p>I want to head off two readings I don’t intend.</p>

<p>This isn’t an argument against management. Engineering teams need leadership, context, prioritisation, and protection. The panopticon is a specific <em>kind</em> of management, not management as such.</p>

<p>It also isn’t an argument that visibility is always bad. Some visibility is consensual, useful, and lightweight: a public board where the team chooses what’s on it, a working-out-loud channel that engineers opt into, a retrospective where everyone genuinely speaks. The test is whether the visibility is <em>for the work</em> or <em>for the watcher</em>. The first is a tool. The second is the panopticon.</p>

<p>The architectural difference between a tool and a panopticon is whether the watched person has agency over what’s visible. When I’m the one choosing what to share, with whom, for what purpose, the visibility is mine. When the architecture chooses for me, the visibility is the institution’s, and I’m the one being produced.</p>

<h2 id="what-i-take-away">What I take away</h2>

<p>I’m writing this mostly for myself. I want a short version of the contrast I can keep nearby:</p>

<ol>
  <li><strong>The panopticon is an architecture of visibility, not an act of watching.</strong> It works by making me police myself, not by anyone seeing me.</li>
  <li><strong>Separation of tasks is the structural antidote.</strong> Refusing to know what isn’t mine to know is the move that keeps agency intact, on both sides of the management relationship.</li>
  <li><strong>Most of my drift into the panopticon is unconscious.</strong> Performative tasks, illegible-but-followed rules, swallowed friction with the group: these are the symptoms in self-management. Surveillance-shaped processes, dashboards-as-default, check-ins-as-status: these are the symptoms in management.</li>
  <li><strong>Vision and buy-in are the work that replaces visibility.</strong> They’re expensive to set up and cheap to live in. They are also the only way I’ve found to get the panopticon’s function without its cost.</li>
  <li><strong>Bullshit is the diagnostic.</strong> Work that exists primarily to be seen is the panopticon writing through me. Cutting it is how I keep the team’s panopticon, and my own, small.</li>
</ol>

<p><a href="https://barmag.github.io/engineering-management/ceremonies/ai-agents/2026/04/13/standup-clock-time-cosplay.html">The clock-time post</a> asked what each ceremony is actually protecting. <a href="https://barmag.github.io/leadership/engineering-management/books/2026/03/28/courage-to-be-disliked-engineering-leadership.html">The Adlerian post</a> asked whose task each piece of work is. This post asks a third question, sitting between them: <em>what is this visibility for, and would I still ask for it if no one was going to look?</em></p>

<p>If the answer is no, the visibility was the point. That’s the panopticon, not the work.</p>

<hr />

<p><em>Sources and further reading:</em></p>

<ul>
  <li><em>Bentham, J. (1791). <a href="https://en.wikipedia.org/wiki/Panopticon">The Panopticon Writings</a>.</em></li>
  <li><em>Foucault, M. (1975). <a href="https://en.wikipedia.org/wiki/Discipline_and_Punish">Discipline and Punish: The Birth of the Prison</a>.</em></li>
  <li><em>Kishimi, I. &amp; Koga, F. (2013). <a href="https://www.amazon.co.uk/Courage-Be-Disliked-yourself-happiness/dp/176063073X">The Courage to Be Disliked</a>.</em></li>
  <li><em>Companion posts: <a href="https://barmag.github.io/engineering-management/ceremonies/ai-agents/2026/04/13/standup-clock-time-cosplay.html">“Your Standup Is Industrial Clock-Time Cosplay”</a> · <a href="https://barmag.github.io/leadership/engineering-management/books/2026/03/28/courage-to-be-disliked-engineering-leadership.html">“The Courage to Be Disliked”</a> · <a href="https://barmag.github.io/engineering-management/documentation/ai-agents/2026/04/24/code-is-documentation-docs-can-keep-up.html">“Code Is Still Documentation”</a></em></li>
</ul>]]></content><author><name></name></author><category term="engineering-management" /><category term="leadership" /><category term="panopticon" /><category term="adlerian" /><category term="separation-of-tasks" /><category term="engineering-management" /><category term="leadership" /><category term="agency" /><category term="neurodivergent" /><summary type="html"><![CDATA[Most engineering ceremonies are panoptic: architectures of visibility that get teams to police themselves on behalf of the org. The Adlerian alternative isn't no visibility; it's separation of tasks. What I catch myself doing as a manager when I forget the difference.]]></summary></entry><entry><title type="html">Code Is Still Documentation. Docs Can Finally Keep Up.</title><link href="https://barmag.github.io/2026/04/24/code-is-documentation-docs-can-keep-up/" rel="alternate" type="text/html" title="Code Is Still Documentation. Docs Can Finally Keep Up." /><published>2026-04-24T00:00:00+02:00</published><updated>2026-04-24T00:00:00+02:00</updated><id>https://barmag.github.io/2026/04/24/code-is-documentation-docs-can-keep-up</id><content type="html" xml:base="https://barmag.github.io/2026/04/24/code-is-documentation-docs-can-keep-up/"><![CDATA[<h2 id="the-real-problem-was-never-docs-it-was-drift">The real problem was never docs. It was drift.</h2>

<p>“Code is the documentation.” Every engineer has heard it. Most of us have said it. It gets cited in interviews, tech talks, and the README of every new project as if it were a first-principles position arrived at through careful thought.</p>

<p>It wasn’t. Here’s what actually happened: we used to write prose documentation. It went stale. Keeping it fresh cost more, in time and attention, than the docs were worth when stale. So we stopped writing them and said readable code is enough.</p>

<p>That’s not a principle. That’s a coping mechanism for a labour-economics failure we never quite admitted was a failure.</p>

<p>The question this post answers is simple: what if that labour cost weren’t there anymore?</p>

<p><img src="https://barmag.github.io/assets/media/hook-tombstone-docs.png" alt="A stylised tombstone standing in a quiet twilight cemetery with a muted dusk sky behind it. The inscription reads: &quot;HERE LIES PROSE DOCUMENTATION 1998 – 2005&quot; and below, in italics: &quot;We said 'code is the documentation' and stopped showing up.&quot;" /></p>

<h2 id="the-use-cases-we-always-wanted-and-never-really-got">The use cases we always wanted and never really got</h2>

<p>Go through the list of things “keep current docs” would actually buy you. These are not new use cases. Every engineering org has wanted these for decades:</p>

<ul>
  <li><strong>Onboarding</strong> — you wanted current architecture docs so a new hire could read their way into the system. You settled for “pair with a senior engineer for two weeks.”</li>
  <li><strong>Knowledge transfer</strong> — you wanted exit notes that would still be useful the week after someone left. You settled for a half-remembered wiki page and a Slack search that goes three years deep.</li>
  <li><strong>Planning and design review</strong> — you wanted a current description of what already exists, so the design meeting could start from facts rather than memory. You settled for a guessing game during the meeting, and a Jira ticket to “document after.”</li>
  <li><strong>Status reporting</strong> — you wanted written status current enough to be believed, which makes async collaboration viable. You settled for synchronous ceremonies every morning that re-establish shared state out loud.</li>
  <li><strong>Stakeholder comms</strong> — you wanted a non-engineering reader to be able to open a module description and understand roughly what it does. You settled for “let me set up a sync.”</li>
</ul>

<p>Each settling was a small failure we learned to accept. Individually they felt minor — five or ten minutes a week, a meeting that could have been an email, a confused new hire catching up eventually. Collectively the cost is enormous, but it doesn’t show up on any one team’s dashboard. That’s why it was never prioritised. There was never a moment where the pain got sharp enough to force the fix.</p>

<p><img src="https://barmag.github.io/assets/media/usecases-wanted-vs-settled.png" alt="A two-column infographic headed &quot;What we wanted&quot; and &quot;What we settled for&quot;. Five rows pair the ideal with the compromise: &quot;Current architecture docs&quot; vs &quot;Pair with a senior for 2 weeks&quot;; &quot;Exit notes that last a week&quot; vs &quot;Stale wiki and Slack search&quot;; &quot;What exists, written down&quot; vs &quot;Guessing game in the meeting&quot;; &quot;Written status you believe&quot; vs &quot;Standup every morning&quot;; &quot;Non-engineer readable docs&quot; vs &quot;Let me set up a sync&quot;." /></p>

<h2 id="what-changed-the-labour-economics-collapsed">What changed: the labour economics collapsed</h2>

<p>Here’s what changed. Claude Code sub-agents can regenerate prose documentation from current code on demand, in minutes rather than weeks, at a marginal cost close to zero. A sub-agent dispatched with the code as input produces a description of current behaviour. Run it again after the next edit and the description updates. The artefact is disposable — you don’t maintain it, you regenerate it.</p>

<p>This isn’t the hand-wavy “AI writes your docs for you” that everyone’s been selling since 2023. It’s a specific process: distinct from the edit, distinct from the chat, executed against the code as it exists right now.</p>

<p>The old blocker for prose documentation was never “what should it say.” We’ve always known what docs should say. The blocker was “who’s got four hours a week to keep it current.” That blocker is gone.</p>

<p>Fresh docs become structurally possible for the first time. The old use cases from the last section become reachable. And one new use case emerges — one that didn’t exist before, because it only makes sense when agents are the ones writing the code.</p>

<h2 id="the-new-use-case--agent-verification">The new use case — agent verification</h2>

<p>Agents say “done.” Most of the time they mean <em>done-ish</em>. Two specific lies sit behind that word:</p>

<ul>
  <li><strong>Lie 1 — <em>The state matches what you asked, but the thing creating that state is wrong.</em></strong> Scripts passed, logs look clean, but the scripts themselves are broken.</li>
  <li><strong>Lie 2 — <em>The state looks right, but it doesn’t match the intent behind your request.</em></strong> Wrong thing built, looks fine, nothing to trip over.</li>
</ul>

<p>Readable code catches neither. Tests catch the first <em>if</em> you wrote them for the right thing, which is itself a trust question about the agent that wrote the tests. Docs generated from the code catch both earlier and cheaper, for a specific reason: they describe behaviour derived from the code, not claims derived from the chat. The code is what the agent actually did. The chat is what the agent said it did. Those are not always the same document.</p>

<p><img src="https://barmag.github.io/assets/media/two-lies-diagram.png" alt="A two-panel cartoon diagram of the two lies agents tell. Left panel, labelled &quot;Lie 1 — state matches, scripts wrong&quot;: a cartoon robot agent with a green speech bubble reading &quot;Done!&quot; points to a script file with a large red X through it. Caption below: &quot;The checker is broken. The check passes anyway.&quot; Right panel, labelled &quot;Lie 2 — state looks right, doesn't match intent&quot;: the same robot agent cheerfully hands a blue kettle to a mildly confused human holding a shopping list that reads &quot;red kettle&quot;. Caption below: &quot;The thing is fine. It isn't what you asked for.&quot;" /></p>

<h3 id="the-war-story">The war story</h3>

<p>I was working on a system configuration task and told the agent, explicitly, to verify each step via scripts — not by claiming success, but by running something that would tell us the truth. The agent did some of that: it wrote scripts and ran them. It also did a handful of manual-type actions and confirmed them in prose.</p>

<p>Everything “passed.” The system state matched what I expected. The scripts exited 0. The agent reported done.</p>

<p>Then I read the generated docs. The docs described what the scripts were actually checking, which was not what I’d asked them to check. They were passing on the wrong condition. The system looked correct because the scripts couldn’t tell it wasn’t.</p>

<p>Testing on a clean system would eventually have caught it — the tests would have failed on a fresh machine, for the right reason. But the docs caught it earlier, at read time, before any test was run.</p>

<p>What’s being caught here isn’t code correctness in the usual sense. It’s a verification-of-verification failure: the thing I’d told the agent to serve as proof was itself wrong. Only a different signal — docs derived from code, read in a clean context — surfaced the gap.</p>

<h2 id="clean-system-clean-context">Clean system, clean context</h2>

<p>The war story reveals a parallel worth naming:</p>

<blockquote>
  <p><strong>Testing requires a clean system. Doc generation requires a clean context.</strong></p>
</blockquote>

<p><img src="https://barmag.github.io/assets/media/clean-system-clean-context.png" alt="A side-by-side parallel infographic. Left half, headed &quot;Clean System → Reliable Tests&quot;: a stylised clean laboratory bench with test tubes and glassware, sub-captioned &quot;What engineers already know.&quot; Right half, headed &quot;Clean Context → Reliable Docs&quot;: a fresh, empty terminal window with a single &quot;$&quot; prompt and no prior text, sub-captioned &quot;What engineers now need to know.&quot; Bottom caption spanning both halves reads &quot;Same discipline. Different layer.&quot;" /></p>

<p>The reason is the same in both cases. Contamination hides failures. A test run on a dirty system can pass for reasons that have nothing to do with the code. A doc-gen run contaminated by the agent’s own reassurances — whether literally in the prompt or still sitting in your head — mirrors the agent’s story rather than the code’s behaviour. Regenerate from a fresh context and the feedback loop breaks.</p>

<p>Claude Code sub-agents make this a property of the architecture, not a discipline you have to remember. A sub-agent starts with a fresh context window and only sees what you hand it. Pass it the code; don’t pass it the conversation. Clean context is the default.</p>

<p>This is how you catch Lie 2. Lie 1 is structural — the bad scripts exist regardless of context, and the docs reveal them because the docs describe the scripts, not the scripts’ claims. Lie 2 is perceptual — the state looks right if you’re primed to see it looking right. Clean context removes the priming.</p>

<h2 id="in-practice--claude-code-sub-agents--custom-workflow">In practice — Claude Code sub-agents + custom workflow</h2>

<p>Here’s the shape of the loop as I run it. Tooling: Claude Code sub-agents, dispatched via a custom workflow. The setup is less interesting than the structure, so I’ll stick to the structure.</p>

<p><strong>Trigger.</strong> Doc generation fires after an edit-agent finishes a meaningful change — typically post-edit as a sub-agent invocation, before I approve anything. Some teams will want it pre-merge instead. Both work; the point is that doc generation is a distinct step from the edit itself, not interleaved with it.</p>

<p><strong>Dispatch.</strong> The edit-agent completes. A separate sub-agent is dispatched with the code as input — not the conversation, not the diff, not the agent’s summary of what it did. The code. The sub-agent returns a prose description of current behaviour. That’s it.</p>

<p><strong>Read for congruence, not correctness.</strong> You’re not checking whether the code is right. That’s what tests are for, and it’s a different question. You’re checking whether the description matches what you remember asking for. <em>Congruence</em> is the word I keep coming back to. Does the prose on my screen describe the feature I think I asked for?</p>

<p><strong>Believe the docs.</strong> Here’s the failure signal, stated plainly: the description reads fluently, in confident prose, but describes a system you don’t recognise. When that happens, believe the docs. The docs were derived from the code. Your memory of what you asked for was derived from the chat. When they diverge, the code wins.</p>

<p>One more small note. This catches drift between one agent edit and the next — the new-era version of the doc-drift problem. The old-era version (humans writing, humans forgetting to update) is also dead here, for the same reason: the humans aren’t the bottleneck anymore.</p>

<hr />

<p>Code is still the source of truth. Readable code is still the floor. What changed isn’t the role of code — it’s that prose docs can finally sit alongside it without rotting overnight.</p>

<p>Once they can, they earn back all the jobs they were supposed to do. Onboarding. Knowledge transfer. Planning. Status reporting. Async collab. The old use cases we quietly settled without are suddenly reachable. And one new use case — catching agents in their polite, confident, wrong-but-plausible “done” — comes free with the loop.</p>

<p><a href="https://barmag.github.io/engineering-management/ceremonies/ai-agents/2026/04/13/standup-clock-time-cosplay.html">The previous post</a> asked what standup is actually protecting. This one answers part of it: for a lot of teams, the standup was protecting us from stale written status. We don’t need that protection anymore.</p>

<p>Your docs are only as honest as the context they were generated from. Keep the context clean, and the docs will tell you the truth — including the truths the agent would rather not mention.</p>]]></content><author><name></name></author><category term="engineering-management" /><category term="documentation" /><category term="ai-agents" /><category term="documentation" /><category term="ai-agents" /><category term="claude-code" /><category term="sub-agents" /><category term="engineering-practices" /><category term="doc-drift" /><summary type="html"><![CDATA[Prose docs were abandoned because keeping them fresh cost more than they were worth when stale — not because they were useless. Agent-generated docs collapse that cost. Old use cases get rescued; one new one emerges: catching agents in polite lies.]]></summary></entry><entry><title type="html">Your Standup Is Industrial Clock-Time Cosplay: Rethinking Engineering Ceremonies for the Agent Era</title><link href="https://barmag.github.io/2026/04/13/standup-clock-time-cosplay/" rel="alternate" type="text/html" title="Your Standup Is Industrial Clock-Time Cosplay: Rethinking Engineering Ceremonies for the Agent Era" /><published>2026-04-13T00:00:00+02:00</published><updated>2026-04-13T00:00:00+02:00</updated><id>https://barmag.github.io/2026/04/13/standup-clock-time-cosplay</id><content type="html" xml:base="https://barmag.github.io/2026/04/13/standup-clock-time-cosplay/"><![CDATA[<p>Every weekday morning, millions of software engineers stand in a circle — or join a video call, or answer a Slack bot — and recite a script: <em>What did I do yesterday? What will I do today? Is anything blocking me?</em></p>

<p><img src="https://barmag.github.io/assets/media/standup-npc-dialogue.png" alt="The RPG dialogue options meme: an engineer stands before a Scrum Master NPC with three dialogue options, all greyed out except the mandatory path. A fourth option at the bottom, locked, reads Question the ritual itself. Caption: Main quest Daily Standup unskippable." /></p>

<p>Nobody remembers choosing this. It just… is. Like the 40-hour week, the two-week sprint, and the quarterly performance review, the daily standup feels like a natural fact of engineering work. Something that emerged from the nature of the work itself.</p>

<p>It didn’t. It was designed. And the design has a history that predates software by about 250 years.</p>

<p>This post makes a specific, testable claim: <strong>the daily standup — and most engineering ceremonies — are products of industrial clock-time, a coordination technology invented in the 18th century to synchronise factory labour.</strong> That technology was installed over generations through factory bells, school timetables, and wage discipline. It was resisted. It was contested. And it was so thoroughly internalised that we stopped seeing it as a choice.</p>

<p>AI agents are the first technology in two and a half centuries that can hold coordination continuity on behalf of humans rather than requiring it from them. This doesn’t mean ceremonies are useless. It means we can finally ask: <em>what is this ceremony actually protecting, and what’s the lowest-cost way to protect that thing now?</em></p>

<p>That’s an engineering question, not an ideological one.</p>

<hr />

<h2 id="part-1-the-clock-is-infrastructure-not-nature">Part 1: The Clock Is Infrastructure, Not Nature</h2>

<p>In 1944, the anarchist writer George Woodcock published a short essay called “The Tyranny of the Clock.” His verdict was blunt: the clock “turns time from a process of nature into a commodity that can be measured and bought and sold.” Before mechanical timekeeping, he argued, “the nomads and farmers measured and still measure their day from sunrise to sunset, and their year in terms of the seedtime and harvest.” Time was a process. The clock made it a product.</p>

<p>Woodcock was making an argument, not proving one. The evidence came twenty-three years later.</p>

<p>In 1967, the historian E.P. Thompson published “Time, Work-Discipline, and Industrial Capitalism” — a 42-page paper that remains the definitive account of how clock-time was installed in the West. Thompson showed that pre-industrial work was <em>task-oriented</em>: you milked the cow when the cow needed milking, you fished when the tide was right, you wove until the cloth was done. He proposed three points about this mode of working. First, “it is more humanly comprehensible than timed labour.” Second — and this is the one that matters for what comes later — “a community in which task-orientation is common appears to show least demarcation between ‘work’ and ‘life’. Social intercourse and labour are intermingled.” Third, to people habituated to clock-time, task-orientation “appears to be wasteful and lacking in urgency.”</p>

<p>That third point is the one you felt in your gut when you read the word “task-oriented.” The clock is so deep in us that a different relationship with time registers as laziness.</p>

<p>Thompson documented how the transition was <em>made</em>, not how it happened naturally. Factory bells didn’t tell time — they commanded bodies. At the Crowley Iron Works, already by 1700, a Monitor kept time-sheets for each worker with “Come” and “Run” entries. The watch was locked up so “it may not be in the power of any person to alter the same.” Workers caught reckoning by faster clocks had their timepieces confiscated. In later factories, “the clocks at the factories were often put forward in the morning and back at night, and instead of being instruments for the measurement of time, they were used as cloaks for cheatery and oppression.”</p>

<p>The clock wasn’t measuring work. It was producing a <em>kind</em> of worker.</p>

<p><img src="https://barmag.github.io/assets/media/factory-bell-calendar-invite.png" alt="Split image. Left panel: a Victorian factory with a large bell tower, workers streaming through gates at dawn. Right panel: a laptop screen with a Google Calendar notification reading Daily Standup 9:15 AM Every weekday. Both panels share the same underlying structure: a fixed signal demanding synchronous presence at someone else's cadence." /></p>

<p>Schools completed the project. Charity schools praised children for learning “Industry, Frugality, Order and Regularity.” Sunday Schools fined teachers for unpunctuality. “Once within the school gates, the child entered the new universe of disciplined time.” The factory bell trained adults; the school bell trained children to expect the factory bell.</p>

<p>And it worked. Thompson traces three generations: “The first generation of factory workers were taught by their masters the importance of time; the second generation formed their short-time committees in the ten-hour movement; the third generation struck for overtime or time-and-a-half. They had accepted the categories of their employers and learned to fight back within them. They had learned their lesson, that time is money, only too well.”</p>

<p>Three things are worth sitting with here.</p>

<p><strong>First, clock-time is infrastructure, not nature.</strong> It was designed to solve a specific coordination problem — synchronising labour in a factory — and it was installed through deliberate institutional effort over generations. Like any infrastructure, it can be evaluated on its costs and benefits, and replaced when the problem changes.</p>

<p><strong>Second, the installation was contested.</strong> Workers resisted for generations. “Saint Monday” — taking Monday off as a customary right — persisted in English trades well into the nineteenth century. Pre-industrial weavers alternated bouts of intense work and idleness, a pattern Thompson notes “persists among some self-employed — artists, writers, small farmers, and perhaps also with students — today, and provokes the question whether it is not a ‘natural’ human work-rhythm.” Software engineers who hyperfocus for twelve hours and then stare at a wall for two days are not broken. They are pre-industrial. Saint Monday didn’t die. It got a VPN and a Slack status that says “deep work — notifications paused.”</p>

<p><strong>Third, there is nothing uniquely Western about organising time differently.</strong> Every Ramadan, 1.9 billion people enter a month where bodily rhythms — hunger, thirst, night-shifted sociality — are elevated above the clock’s rhythms. Productivity drops, and the drop is accepted. The value produced is explicitly non-economic: empathy, discipline, spiritual reset, community cohesion. This is not the Protestant sabbath — rest-as-recovery-for-labour. The fast doesn’t use the body as fuel for Monday morning. The time has its own purpose. Fourteen centuries of continuous, institutional-scale practice. It is the existence proof that non-clock ways of organising time are civilisationally viable, not romantic nostalgia.</p>

<p>None of this means clocks are bad or that we should return to milking cows by instinct. Woodcock himself, the man who named the tyranny, concluded that in a free society, “mechanical time would be relegated to its true function of a means of reference and co-ordination.” The clock as servant, not master. A tool you consult, not a discipline you submit to.</p>

<p>The question is whether any of our current engineering ceremonies are still using the clock as a tool — or whether we’ve inherited the discipline without noticing.</p>

<hr />

<h2 id="part-2-engineering-ceremonies-and-the-inherited-clock">Part 2: Engineering Ceremonies and the Inherited Clock</h2>

<p>If you are an engineering leader, you probably run some version of this weekly schedule: daily standup, backlog refinement, sprint planning, one-on-ones, retrospective, maybe a demo or review. You inherited this structure from Scrum or a Scrum-adjacent framework. You may have modified it. You probably haven’t questioned its premises.</p>

<p>Here is the premise most of these ceremonies share: <strong>coordination requires synchronous human presence at fixed intervals on the clock.</strong> Standup at 9:15, refinement on Tuesdays, retro every other Friday. The calendar is the coordination mechanism. If you’re not there, you’re not coordinating.</p>

<p>This was true when the only way a manager knew what was happening was to physically assemble everyone. It was true when context lived exclusively in human heads. It was true when there was no foundation for asynchronous continuity — no persistent chat, no PR history, no commit trail, no ticket board, no searchable documentation.</p>

<p>All four of those assumptions are weakening simultaneously, for the first time in 250 years.</p>

<p>This doesn’t mean every ceremony is waste. Some ceremonies protect things that have nothing to do with coordination — trust, belonging, shared understanding of each other as people. The question isn’t “should we keep ceremonies?” It is: <strong>what is this ceremony actually protecting, and what’s the lowest-cost way to protect that thing now?</strong></p>

<p>That’s the question we’ll apply to the standup.</p>

<hr />

<h3 id="the-daily-standup-a-genealogy">The Daily Standup: A Genealogy</h3>

<p>The daily standup has an origin story, and it matters for what the ceremony has become.</p>

<p>In 1986, Hirotaka Takeuchi and Ikujiro Nonaka published “The New New Product Development Game” in the Harvard Business Review. They had studied innovation teams at Honda, Canon, Fuji-Xerox, Epson, 3M, and Hewlett-Packard. Their conclusion: the sequential relay-race approach to product development — where specialists hand off to other specialists through discrete phases — was too slow. Instead, they proposed the “rugby approach”: the team moves as a unit, “passing the ball back and forth.” Self-organising teams. Overlapping phases. Built-in instability as a creative force.</p>

<p>Note what this is <em>not</em>. Takeuchi and Nonaka were not describing a factory floor. They were describing knowledge-work innovation teams. They were explicitly <em>against</em> the sequential, controlled, predictable process that factory production demands. The rugby metaphor is a rejection of the assembly line, not an adaptation of it.</p>

<p>In 1994, Jim Coplien published a case study of Borland’s Quattro Pro for Windows project — eight developers, one million lines of code, thirty-one months, the fastest productivity on record at the time. The secret: daily meetings where the entire team discussed architecture, design, and interface decisions. These were <em>hour-long working sessions</em>, not fifteen-minute status checks. They were the engine of a knowledge-creation machine, not a reporting ritual.</p>

<p>Jeff Sutherland, building the Scrum framework at Easel Corporation, read Coplien’s paper and adapted it. In February 1994, during the second sprint at Easel, he introduced the “Daily Scrum Meeting.” His key move: cutting the meeting from an hour to fifteen minutes, adding the three-question format, and making the team stand to keep things crisp. He also showed his team videos of the New Zealand All Blacks performing the haka — framing the standup not as a report but as a team-charging ritual.</p>

<p>In parallel, Toyota had been running its own version for decades. The <em>asa-ichi</em> — a morning meeting to discuss quality deviations and eliminate causes — was part of the Toyota Production System’s kaizen practice. This <em>is</em> a factory-floor practice, but it was about root-cause analysis of defects, not status reporting. The Scrum standup and the Toyota asa-ichi share a family resemblance — daily, short, whole-team, impediment-focused — but they are parallel inventions, not parent and child.</p>

<p>So the standup was not designed as a factory roll-call. It descended from an anti-sequential, pro-autonomy movement in product development. Its immediate ancestor is a knowledge-creation practice at a software company, adapted by a man who framed it through a warrior dance. Born from a rugby metaphor, raised on a haka, and now living as a Slack bot that pings you at 9:15. Evolution is not always kind.</p>

<p><img src="https://barmag.github.io/assets/media/standup-family-tree.png" alt="Infographic: The Standup Family Tree — a timeline flowing left to right. 1986 Takeuchi and Nonaka The Rugby Approach. 1994 Coplien at Borland Hour-Long Daily Architecture Sessions. 1994 Sutherland at Easel The Daily Scrum. 2010s Industry adoption The Calendar Invite. 2020s Async bots The Slack Bot. A dotted line at the bottom reads Born from autonomy. Raised on discipline. Now lives in your notifications." /></p>

<p><strong>And yet.</strong></p>

<p>The ceremony inherited clock-time assumptions that its designers never examined, because the assumptions were invisible — as invisible to Sutherland as they were to the third generation of factory workers Thompson described. Specifically:</p>

<p><strong>The standup assumes everyone is available at the same time, in the same mental state, every day.</strong> The Scrum Guide specifies “same time and place every working day.” Thompson would recognise this sentence. It is the factory bell, softened to a calendar invite.</p>

<p><strong>The standup privileges synchronous presence over asynchronous records.</strong> It exists because we inherited the assumption that <em>seeing each other talk</em> is the most trustworthy form of coordination. Commits, PRs, ticket boards, and Slack threads already carry the same information. The standup persists not because the information isn’t available elsewhere, but because the <em>ritual of showing up</em> carries social weight that async records don’t.</p>

<p><strong>The standup imposes a fixed rhythm on variable-rhythm work.</strong> Software development is burst-and-idle — exactly like the pre-industrial weaving Thompson documented. Engineers hyperfocus for hours or days, then need recovery. The standup applies a metronome to work that doesn’t have one naturally. For neurotypical engineers, this is friction. For neurodivergent engineers — whose “time blindness,” interest-based attention, and non-linear energy arcs make fixed daily performance particularly costly — it is disabling. Not because they can’t do the work, but because the clock-time assumption punishes their natural rhythm.</p>

<p><strong>And the ceremony has drifted from its stated purpose.</strong> The Scrum Guide says the Daily Scrum is for the Developers — to “inspect progress toward the Sprint Goal and adapt the Sprint Backlog as necessary.” Not a status report to management. But across the industry, the consistent finding is the same: the longer standups run and the more management is present, the more they become performative — “developers learning that the meeting isn’t about actual coordination but about demonstrating productivity.” When a ceremony’s coordination function can be served by tools, its social-control function becomes its primary surviving purpose. This is not a bug in any particular team’s implementation. It is the structural fate of any clock-time ritual whose original justification has eroded.</p>

<p>Thompson’s three generations, one more time: the first generation was taught the standup by Scrum trainers. The second generation formed their async-standup committees — Geekbot, DailyBot, Slack threads. The third generation optimises for shorter standups, better questions, tighter timeboxes. All three generations fight within the system’s own categories. None of them ask whether the daily fixed-cadence synchronous assembly is the right foundation for the problem.</p>

<h3 id="what-the-standup-is-actually-protecting">What the standup is actually protecting</h3>

<p>Strip away the clock-time inheritance and ask: what does the standup do that <em>matters</em>?</p>

<p>Three things.</p>

<ol>
  <li>
    <p><strong>Surface blockers early.</strong> If someone is stuck, the team needs to know before a day is wasted. This is real and valuable. It is also achievable without a synchronous meeting — a Slack thread, a ticket status, an agent-generated blocker digest all do this, often faster.</p>
  </li>
  <li>
    <p><strong>Maintain shared context.</strong> The team needs a sense of what everyone is working on, how the sprint is tracking, and where the work is heading. Again, real and valuable. Also achievable through visible boards, async written updates, or AI-generated summaries from work records.</p>
  </li>
  <li>
    <p><strong>Human connection.</strong> The “how was your weekend” before the timer starts. The running jokes. The moment someone notices a colleague is off. The ambient awareness that you are part of a team of people, not a node in a ticket graph.</p>
  </li>
</ol>

<p>This third function is the one nobody talks about, and it’s the most important. It is also the one the standup serves <em>worst</em>, because the standup’s clock-time structure — fifteen minutes, three questions, stay on topic — actively suppresses it. Connection is a side-effect of the standup, competing for time with the stated agenda. The engineer who wants to check in on a teammate’s rough week is fighting the timer.</p>

<h3 id="what-agents-change">What agents change</h3>

<p>Shopify deleted 322,000 hours of meetings in January 2023. Time in meetings dropped 33% per employee. The company estimated a 25% increase in completed projects. An engineer said: “For the first time in a very long time, I got to do what I was primarily hired to do: write code all day.”</p>

<p>Zapier replaced synchronous standups with Geekbot — an async bot that collects the three answers via DM and posts them to a channel. It takes about a minute per person. Side discussions happen in threads. Everything is searchable.</p>

<p>These are pre-AI experiments. The current generation of tools goes further. Agent Scrum, Spinach.ai, Kairn, and Microsoft’s Copilot Scrum Agent can now summarise team state directly from work outputs — PRs, commits, ticket movements, Slack threads — without anyone reporting anything. They detect blockers proactively by flagging stale tickets, review bottlenecks, and dependency conflicts. They generate structured meeting summaries with decisions, action items, and linked tickets. They enable participation across time zones without anyone waking up at 6am.</p>

<p>The coordination function of the standup — blockers, shared context, sprint tracking — can now be held by an agent. Not perfectly. Not for every team. But the technical necessity that made synchronous daily assembly the only viable coordination foundation is dissolving.</p>

<p><strong>What agents cannot do</strong> is read the room. They can’t tell that someone’s quiet because they’re struggling. They can’t build trust. They can’t coach a team through the patterns that keep tripping them up. They can’t provide the informal social glue — the jokes, the check-ins, the ambient human awareness.</p>

<p>And this is where the argument turns.</p>

<h3 id="the-connection-gap">The connection gap</h3>

<p>If agents can hold coordination, and we remove the ceremony that was (badly) providing coordination, we also remove the ceremony that was (accidentally) providing connection. The time freed up is not a vacuum. It is an <em>opportunity</em> — but only if we recognise that connection was being delivered as a side-effect and design for it intentionally.</p>

<p>Pre-industrial task-oriented work didn’t need separate team-building, because — as Thompson documented — “social intercourse and labour are intermingled.” Clock-time separated them. Two and a half centuries later, the standup is our awkward attempt to bolt connection back onto a time system that structurally excludes it. The standup fails at connection not because teams are doing it wrong, but because fifteen minutes of clock-disciplined reporting is the wrong container for trust.</p>

<p>The practitioner move is this: <strong>when you remove or compress a ceremony because agents handle its coordination function, explicitly budget the freed time for intentional connection.</strong> Not as a perk. As infrastructure. The clock-time regime bundled coordination and connection into the same rituals because it had no choice — synchronous presence was the only vehicle for both. We can now unbundle them, and design each one for what it actually needs to be.</p>

<p>Dario Amodei, the CEO of Anthropic, wrote in his 2024 essay “Machines of Loving Grace” that “meaning comes mostly from human relationships and connection, not from economic labor.” He was writing about the long-term future of work under AI. But the claim applies now, at the ceremony level: if the standup’s coordination value can be held by a machine, its human value was always in the connection — and that connection deserves better infrastructure than fifteen minutes of clock-time cosplay.</p>

<hr />

<p><em>This is the first section of a longer piece. Subsequent sections will apply the same analysis to backlog refinement, retrospectives, one-on-ones, on-call, sprint planning, and performance reviews. The question is always the same: what is this ceremony protecting, and what’s the lowest-cost way to protect that thing now?</em></p>

<hr />

<p><strong>Sources and further reading:</strong></p>

<ul>
  <li>Woodcock, G. (1944). “The Tyranny of the Clock.” <em>War Commentary — For Anarchism.</em></li>
  <li>Thompson, E.P. (1967). “Time, Work-Discipline, and Industrial Capitalism.” <em>Past and Present</em>, No. 38, pp. 56-97.</li>
  <li>Takeuchi, H. &amp; Nonaka, I. (1986). “The New New Product Development Game.” <em>Harvard Business Review</em>, Jan-Feb 1986.</li>
  <li>Coplien, J. (1994). “Borland Software Craftsmanship: A New Look at Process, Quality and Productivity.” <em>Dr. Dobb’s Journal.</em></li>
  <li>Amodei, D. (2024). “Machines of Loving Grace.” https://www.darioamodei.com/essay/machines-of-loving-grace</li>
  <li>Schwaber, K. &amp; Sutherland, J. (2020). <em>The Scrum Guide.</em> https://scrumguides.org/scrum-guide.html</li>
  <li>Shopify calendar purge results: Fortune, WorkLife, Inc. (Jan-Jun 2023).</li>
  <li>Zapier async standup transition: https://zapier.com/blog/asynchronous-standups-geekbot/</li>
  <li>Scrum.org on async self-management: https://www.scrum.org/resources/blog/how-async-scrum-teams-self-manage-without-daily-scrums</li>
</ul>]]></content><author><name></name></author><category term="engineering-management" /><category term="ceremonies" /><category term="ai-agents" /><category term="clock-time" /><category term="standups" /><category term="engineering-management" /><category term="ai-agents" /><category term="scrum" /><category term="ceremonies" /><summary type="html"><![CDATA[The daily standup — and most engineering ceremonies — are products of industrial clock-time, a coordination technology invented in the 18th century to synchronise factory labour. AI agents are the first technology in 250 years that can hold coordination continuity on behalf of humans rather than requiring it from them.]]></summary></entry><entry><title type="html">The Courage to Be Disliked: Adlerian Psychology for Engineering Teams That Burn Bright and Burn Out</title><link href="https://barmag.github.io/2026/03/27/courage-to-be-disliked-engineering-leadership/" rel="alternate" type="text/html" title="The Courage to Be Disliked: Adlerian Psychology for Engineering Teams That Burn Bright and Burn Out" /><published>2026-03-27T23:00:00+01:00</published><updated>2026-03-27T23:00:00+01:00</updated><id>https://barmag.github.io/2026/03/27/courage-to-be-disliked-engineering-leadership</id><content type="html" xml:base="https://barmag.github.io/2026/03/27/courage-to-be-disliked-engineering-leadership/"><![CDATA[<p>I picked up <em>The Courage to Be Disliked</em> during a turbulent stretch – agentic AI disrupting the industry, layoffs rolling through, genuine uncertainty about the future of software engineering. I was looking for identity anchoring: something to help me know my strengths and weaknesses when the ground keeps shifting. The kind of existential crisis that makes you read philosophy books instead of just updating your LinkedIn to “open to work” like a normal person.</p>

<p>But the book resonated far beyond that. It validated something I’d been struggling with for years and couldn’t name clearly: the burnout that comes from avoiding confrontation and satisfying a vulnerable ego. Not selflessly putting others first – that’s the noble version. The honest version is that I was protecting myself from the discomfort of being disagreed with, of being seen as difficult, of risking disapproval. And the cost of that protection was burning out.</p>

<p>I was diagnosed autistic and ADHD and that reframing changed how I understood my entire career. Decades of <em>masking</em> – performing neurotypical social behaviour to fit in – combined with an absence of <em>self-advocacy</em>. The result is a kind of exhaustion that doesn’t show up on a performance review. You’re delivering. You’re exceeding expectations. And you’re hollowing out.</p>

<p>Most management books didn’t help with this. Even the best ones – Camille Fournier’s <em>The Manager’s Path</em> is the gold standard – assume a baseline of social intuition. “Read the room.” “Build rapport.” “Give feedback naturally.” These are instructions where the <em>how</em> is supposed to be obvious. For a neurotypical manager, maybe it is. For me, it was like a recipe that says “season to taste” when you can’t taste. I spent ten years reading stack traces; now I’m supposed to read rooms. Rooms don’t have error messages. I needed explicit frameworks – logical structures I could study, internalise, and apply deliberately – because I build social skills through acquisition, not instinct.</p>

<p>Adlerian psychology gave me that. Where <em>The Manager’s Path</em> is the operational manual for tech leadership, Adler is the internal operating system that makes executing it sustainable.</p>

<p><img src="https://barmag.github.io/assets/media/this-is-fine-manager.png" alt="The This is Fine meme adapted for people-pleasing managers" /></p>

<hr />

<h2 id="separation-of-tasks-why-your-engineers-career-crisis-is-not-your-2-am-problem">Separation of Tasks: Why Your Engineer’s Career Crisis Is Not Your 2 AM Problem</h2>

<p>Adler’s most practical concept is the <em>separation of tasks</em>. The test is simple: who ultimately bears the consequences of this choice?</p>

<p>As a manager:</p>
<ul>
  <li><strong>Your task:</strong> Set clear context. Share relevant experience. Create conditions where the team can make decisions and mistakes safely. Bear organisational consequences.</li>
  <li><strong>Their task:</strong> Decide how to approach their work. Learn from their own experience. Own their technical choices. Bear individual consequences.</li>
</ul>

<p>The failure isn’t just micromanagement – stealing their task. It’s also abdication – dumping yours on them. Both are boundary violations.</p>

<p><img src="https://barmag.github.io/assets/media/two-buttons-manager.png" alt="The Two Buttons meme — the manager's dilemma" /></p>

<p>I once managed an engineer who kept missing deadlines. The work they produced was over-engineered, branching into non-core topics, polished far beyond what was needed. They were visibly exhausted. The technical quality was strong – but the goal kept slipping.</p>

<p>A typical management response: “You need to share your work more frequently. Let’s add checkpoint meetings.” That’s a demand disguised as process. It addresses the symptom by adding control.</p>

<p>I recognised the pattern because I’d lived it. The reluctance to share drafts. The over-engineering as a shield. The logic that says: if I make it perfect enough, no one can criticise it. This wasn’t a performance problem. It was imposter anxiety – avoiding the vulnerability of showing imperfect work. Over-engineering is just anxiety with a GitHub history.</p>

<p>Adler distinguishes between <em>etiology</em> (looking backward at causes) and <em>teleology</em> (looking at what present goal the behaviour serves). The standard management question: “Why are you missing deadlines?” The Adlerian question: “What is this behaviour achieving for you right now?” The answer was safety. The over-engineering served the goal of avoiding judgment.</p>

<p>So instead of adding a demand, I shared my own experience. I talked about times I’d done the same thing – buried myself in perfectionism because showing rough work felt dangerous. I reframed check-ins not as surveillance but as collaborative discovery. The shift was from “you need to show me your work” to “I’ve been where you are, and here’s what helped me.”</p>

<p>The engineer’s behaviour changed. Not because I forced it, but because I made it safe to be imperfect.</p>

<hr />

<h2 id="horizontal-relationships-you-have-more-mistakes-not-more-worth">Horizontal Relationships: You Have More Mistakes, Not More Worth</h2>

<p>You have formal authority over the engineers you manage. That’s organisational reality. But formal authority doesn’t require a vertical <em>relationship</em>.</p>

<p>Adler distinguishes between vertical relationships (superior/inferior, built on judgment) and horizontal relationships (equals, built on mutual respect). Most management instinctively defaults to vertical:</p>

<ul>
  <li>“I know better than you” (superiority)</li>
  <li>“You should do it this way” (control)</li>
  <li>“Let me show you the right way” (judgment)</li>
</ul>

<p>The horizontal alternative carries the same experience from a different stance:</p>

<ul>
  <li>“I’ve made this mistake before” (shared humanity)</li>
  <li>“Here’s what I learned when I tried that” (offering, not imposing)</li>
  <li>“You get to decide how to use this” (respecting agency)</li>
</ul>

<p>I think of my experience not as “knowing more” but as <em>wisdom from more mistakes</em>. The content is the same. The relationship is completely different.</p>

<p>The word that captures this is <strong>offering</strong>. When you offer, they can take it or leave it. You’re not diminished if they choose differently. The relationship survives disagreement. Your value isn’t tied to compliance.</p>

<h3 id="why-good-job-turns-engineers-into-golden-retrievers">Why “Good Job” Turns Engineers Into Golden Retrievers</h3>

<p>This plays out most clearly in how you give feedback. Adler argues that praise is a vertical act. When you say “good job,” you’re claiming the authority to judge – positioning yourself above the person you’re evaluating. This creates dependency. Engineers optimise for your approval instead of the work itself. They check in more. They second-guess decisions you haven’t validated. They lose the agency you’re trying to build.</p>

<p>The alternative is <em>encouragement</em> – a horizontal act:</p>

<table>
  <thead>
    <tr>
      <th>Praise (vertical)</th>
      <th>Encouragement (horizontal)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>“Good job on the PR”</td>
      <td>“I see you tried this approach – how did it work out?”</td>
    </tr>
    <tr>
      <td>“That’s the right design”</td>
      <td>“When I faced something similar, here’s what happened…”</td>
    </tr>
    <tr>
      <td>“Well done, I’m proud of you”</td>
      <td>“Thank you for shipping that quickly – it helped the team hit our deadline”</td>
    </tr>
  </tbody>
</table>

<p>If your team’s primary feedback loop is your facial expressions, you’ve built a distributed system with a single point of failure.</p>

<p><img src="https://barmag.github.io/assets/media/vertical-vs-horizontal.png" alt="Vertical vs Horizontal feedback comic" /></p>

<p>The difference between “I evaluate your work” and “I’m curious about your thinking” is where psychological safety actually lives. Not the performative kind where everyone is polite. The kind where engineers feel safe being wrong.</p>

<hr />

<h2 id="the-desire-for-recognition-a-performance-review-of-my-own-ego">The Desire for Recognition: A Performance Review of My Own Ego</h2>

<p>Adler denies the desire for recognition. His argument: if you live seeking others’ approval, you end up living someone else’s life.</p>

<p>This is where the neurodivergent experience and the management problem converge. Before I had Adler’s framework, I didn’t recognise that my conflict avoidance as a manager wasn’t good leadership. It was masking — protecting a vulnerable ego from the discomfort of confrontation and the risk of disapproval.</p>

<p>The research documents this pattern precisely. Raymaker et al. (2020) found that autistic burnout is characterised by chronic exhaustion, loss of skills, and reduced tolerance to stimulus — distinct from occupational burnout, and strongly correlated with masking and unmet support needs. Hull et al. (2017) documented the cost of camouflaging: socially effective but psychologically destructive. Mantzalas et al. (2022) showed how late-diagnosed adults accumulate years of compensatory strategies that eventually collapse. This isn’t abstract to me. This is my career in my twenties and thirties.</p>

<p>In a management context, masking looks like: agreeing with decisions you disagree with, avoiding hard conversations, letting poor dynamics persist because addressing them means risking being seen as difficult. It looks like competence. It feels like drowning.</p>

<p><img src="https://barmag.github.io/assets/media/iceberg-masking.png" alt="The masking iceberg — what they see vs what's actually happening" /></p>

<p>Adler’s separation of tasks broke this cycle for me. Their reaction to my decision is <em>their</em> task. My task is to make the decision with integrity and communicate it clearly. I cannot control how they feel about it – and trying to is both a violation of their autonomy and a path to hollowing out.</p>

<p>This gave me permission to self-advocate. To say no. To have the difficult conversation and let their response be theirs.</p>

<p>But permission to speak isn’t the same as knowing how. Adler tells you <em>that</em> you should have the courage to be disliked – he doesn’t tell you how to deliver the message without being an arsehole. That’s where three other books filled the gap for me:</p>

<ul>
  <li><strong>Radical Candor</strong> (Kim Scott) gave me the framework of caring personally while challenging directly. The courage to be disliked doesn’t mean being indifferent – it means being honest <em>because</em> you care, not despite it.</li>
  <li><strong>Radical Respect</strong> (Kim Scott) added the boundary between candour and harm. Being direct is not the same as being cruel. You can separate tasks without dismissing the person.</li>
  <li><strong>Nonviolent Communication</strong> (Marshall Rosenberg) gave me the actual mechanics: observe without evaluating, name the need, make a request instead of a demand. For someone who builds social skills through deliberate acquisition, NVC was the API documentation I’d been missing.</li>
</ul>

<p>Together, these form a stack: Adler gives you the philosophical permission. Radical Candor gives you the stance. NVC gives you the syntax. Without all three, you either stay silent (burnout) or speak without skill (damage).</p>

<hr />

<h2 id="the-harder-problem-stopping-good-engineers-from-setting-themselves-on-fire">The Harder Problem: Stopping Good Engineers From Setting Themselves on Fire</h2>

<p>The harder problem in managing high-performing engineers isn’t motivation. It’s preventing burnout in people who are passionate, skilled, and willing to destroy themselves shipping great work.</p>

<p>Performance management frameworks are designed to address underperformance. But what do you do with an engineer who’s delivering brilliantly and burning out doing it?</p>

<p>I learned this from my own experience first. I burned out not because I was pushed, but because I didn’t advocate for my own needs. I confused the organisation’s task (maximising output) with mine (sustainable contribution). Adler helped me see the distinction.</p>

<p>As a manager, the same framework applies:</p>

<ul>
  <li><strong>The engineer’s task:</strong> Own their sustainability. Set boundaries. Decide when to push and when to rest.</li>
  <li><strong>The manager’s task:</strong> Create conditions where sustainability is possible. Model it. Make “I’m at capacity” a respected signal, not a weakness.</li>
</ul>

<p>You can take a horse to water, but you can’t make it drink. You can build an environment where rest is valued and pace is designed for endurance. But you cannot force someone to take care of themselves. That’s their task.</p>

<p>What you <em>can</em> do is stop rewarding self-destruction. Stop celebrating the engineer who ships at 2 AM. No one has ever said “I’m so glad I shipped that feature at 2 AM on a Sunday” at their own funeral. Start thanking the one who flags a risk early and asks for help. The incentives you set shape the behaviour the team optimises for.</p>

<hr />

<p><img src="https://barmag.github.io/assets/media/adlerian-framework-infographic.png" alt="The Adlerian Stance for Engineering Leaders — framework summary" /></p>

<h2 id="what-i-took-away">What I Took Away</h2>

<p>Adlerian psychology didn’t give me a management framework. It gave me a different <em>stance</em> from which to apply whatever framework I already use:</p>

<ol>
  <li><strong>Separate tasks.</strong> Know what’s yours and what’s theirs. Don’t steal their agency; don’t abdicate yours.</li>
  <li><strong>Stay horizontal.</strong> You have authority over their role, not their worth. Lead from shared experience, not superiority.</li>
  <li><strong>Encourage, don’t praise.</strong> Be curious about their thinking instead of evaluating their output.</li>
  <li><strong>Let go of the need for approval.</strong> Make the right call. Let their reaction be their task.</li>
  <li><strong>Protect the team from burnout.</strong> The harder problem isn’t pushing people to perform – it’s making it safe to stop.</li>
</ol>

<p>For neurotypical managers, some of this may come naturally. For me – decades of masking behind me, a history of burning out while exceeding expectations – it required deliberate construction. Adler gave me what intuition-based management advice never could: an explicit, logical framework for leading people without losing myself in the process.</p>

<p>The courage to be disliked isn’t about not caring. It’s about caring enough to be honest – with your team, and with yourself – even when the honest thing is unpopular.</p>

<p>For anyone who has spent years performing competence while quietly exhausting themselves: that’s not leadership. That’s survival. And you deserve a better operating system.</p>

<p>And if reading an Adlerian psychology book seems like an unusual path to becoming a better engineering manager – well, so did reading the Kubernetes docs, and we all did that.</p>

<hr />

<p><em>Based on <a href="https://www.amazon.co.uk/Courage-Be-Disliked-yourself-happiness/dp/176063073X">The Courage to Be Disliked</a> by Ichiro Kishimi &amp; Fumitake Koga. Companion reading: <a href="https://www.oreilly.com/library/view/the-managers-path/9781491973882/">The Manager’s Path</a> by Camille Fournier, <a href="https://www.radicalcandor.com/the-book/">Radical Candor</a> by Kim Scott, <a href="https://kimmalonescott.com/radical-respect/">Radical Respect</a> by Kim Scott, and <a href="https://www.nonviolentcommunication.com/product/nvc/">Nonviolent Communication</a> by Marshall Rosenberg.</em></p>

<p><em>Research cited: Raymaker et al. (2020), <a href="https://doi.org/10.1089/aut.2019.0079">“Having All of Your Internal Resources Exhausted Beyond Measure and Being Left with No Clean-Up Crew: Defining Autistic Burnout”</a>. Hull et al. (2017), <a href="https://doi.org/10.1007/s10803-017-3166-5">“Putting on My Best Normal: Social Camouflaging in Adults with Autism Spectrum Conditions”</a>. Mantzalas et al. (2022), <a href="https://doi.org/10.1089/aut.2021.0021">“What Is Autistic Burnout? A Thematic Analysis of Posts on Two Online Platforms”</a>.</em></p>]]></content><author><name></name></author><category term="leadership" /><category term="engineering-management" /><category term="books" /><category term="adlerian-psychology" /><category term="leadership" /><category term="neurodivergent" /><category term="burnout" /><category term="engineering-management" /><summary type="html"><![CDATA[I spent ten years reading stack traces; now I'm supposed to read rooms. Rooms don't have error messages. How Adlerian psychology gave a neurodivergent engineering manager the explicit framework that intuition-based advice never could.]]></summary></entry><entry><title type="html">Lessons from the Trenches: How We Paid Less and Got More from AWS</title><link href="https://barmag.github.io/2020/07/09/Lessons-from-the-trenches-How-we-paid-less-and-got-more-from-AWS/" rel="alternate" type="text/html" title="Lessons from the Trenches: How We Paid Less and Got More from AWS" /><published>2020-07-09T14:00:00+02:00</published><updated>2020-07-09T14:00:00+02:00</updated><id>https://barmag.github.io/2020/07/09/Lessons-from-the-trenches-How-we-paid-less-and-got-more-from-AWS</id><content type="html" xml:base="https://barmag.github.io/2020/07/09/Lessons-from-the-trenches-How-we-paid-less-and-got-more-from-AWS/"><![CDATA[<p>I am old enough to have used CORBA, and COM+. Lucky enough to be building distributed loosely coupled systems for 20 years. Now witnessing how easy and accessible distributed technology have become. Many of the principles have not changed, but reflecting on my experience with modern cloud native architecture that building resilient and scalable system with PaaS cloud platforms is much cheaper than both on premises or monolithic IaaS. The on demand, pay for use model costs fractions of provisioned infrastructure, not only money, but also time.</p>

<p>In a previous project I joined the team right after moving the infrastructure to AWS, and the team was using nothing but EC2, and VPCs. The cloud services from AWS enabled us to move incrementally to modernize the system with controlled risk.</p>

<p>CloudFormation was the first service we used from the AWS stack of services. At the beginning we did not have a good idea of what we were doing, but AWS had a selection of useful templates to use and it gave us a taste of what we can accomplish. After a short while we managed to automate and codify our infrastructure creation. With our infrastructure as code we managed to evolve it incrementally for high availability with multi region infrastructure. CloudWatch events was then used to automate the response to failure events. The end result was a self healing environment with no extra cost. The outcome encouraged us to use more services.</p>

<p><strong>Core or Meta</strong></p>

<p>The next decision was whether to continue with meta services i.e. services that help manage and operate our existing code, or use the platform services. The advantages of AWS Lambda was intriguing, so intriguing to the point we were carefully looking for the catch and found none. We used some lambda services to automate some operation tasks, and it cost nothing, easy to manage and deploy so we decided to implement some new requirements using API Gateway, Lambda, RDS, SQS, and Beanstalk.</p>

<p>The legacy component was wrapped into a Beanstalk deployment. Beanstalk enabled us to have a self healing, auto scaled instances without modifying the original code. The legacy code was wrapped with a proxy that listens to an SQS queue. The client communicated via a API gateway endpoints. The gateway handled authentication, throttling, key management, and HTTPS. The API gateway invoked a lambda function that implemented the product new functionality, then put a message in the SQS for the legacy processing. The SQS queue enabled us to control the throughput, tolerate failures, and auto scale the beanstalk environment based on the queue requests. The whole environment was deployed via a CLoudFormation template, and logs were collected via CloudWatch. The following diagram shows the general system architecture. 
<img src="https://barmag.github.io/assets/media/Lambda_andBeanstalk.png" alt="patterns taxonomy" /></p>

<p><strong>More for Less</strong></p>

<p>The success of the project left us hungry for more. After coping with cold start time of lambda, the low cost and auto scaling encouraged us to use it more, and the reliability of SQS enabled resilient architecture at negligible cost.</p>

<p>We added more services to the next project. Combined SNS/SQS to implement a pub/sub architecture. Decomposed more of the legacy logic into lambda functions. Started using DynamoDB for data persistence, and CodeDeploy for continuous delivery.</p>

<p><strong>Goodbye CloudFormation and Welcome CDK</strong></p>

<p>The CloudFormation template grew substantially and it was painful to maintain. We decided to look at AWS Cloud Deployment Kit CDK, and we never looked back.</p>

<p>Out of the box CDK saves a considerable amount of code by following an opinionated CloudFormation code generation that follows AWS best practices. But also it allowed us to build custom constructs, that reflects our architectural patterns, and manipulate the constructs before generation to implement cross cutting concerns like adding monitoring support for our Pub/Sub endpoints.</p>

<p>After implementing two new projects we were happily surprised that the production usage of the Lambda services was still covered by the free tier as well as DynamoDB deployments.</p>

<p>The low cost meant that we can have sandboxed environments for individual developers or specific features. Also performing a production like tests on the staging environment without worrying about the bill. CDK and CodeDeploy allowed us to automate all these operations, and sleep happily at night.</p>]]></content><author><name></name></author><category term="aws" /><category term="cloud" /><summary type="html"><![CDATA[I am old enough to have used CORBA, and COM+. Lucky enough to be building distributed loosely coupled systems for 20 years. Now witnessing how easy and accessible distributed technology have become. Many of the principles have not changed, but reflecting on my experience with modern cloud native architecture that building resilient and scalable system with PaaS cloud platforms is much cheaper than both on premises or monolithic IaaS. The on demand, pay for use model costs fractions of provisioned infrastructure, not only money, but also time.]]></summary></entry><entry><title type="html">Microservices Patterns Chapter 1 Notes</title><link href="https://barmag.github.io/2020/05/17/microservices-patterns/" rel="alternate" type="text/html" title="Microservices Patterns Chapter 1 Notes" /><published>2020-05-17T12:50:48+02:00</published><updated>2020-05-17T12:50:48+02:00</updated><id>https://barmag.github.io/2020/05/17/microservices-patterns</id><content type="html" xml:base="https://barmag.github.io/2020/05/17/microservices-patterns/"><![CDATA[<p>Microservices Patterns</p>

<p>Sunday, May 17, 2020</p>

<p>10:24 PM</p>

<p>This is my personal notes for <strong>“Microservices Patterns”</strong> book by Chris Richardson <a href="https://microservices.io/book"><span class="underline">https://microservices.io/book</span></a></p>

<h2 id="chapter-1">Chapter 1</h2>

<p>The first section of this chapter covers the monolithic hell and makes the case of Microservices with a story about a fictitious company and its struggle with maintaining and growing a monolithic app.</p>

<p>I found this section to be verbose with shallow information. I think it is fair to say if you are reading a book about Microservices Patterns chances are you are familiar with the drawbacks of monolithic apps vs. Microservices. It is safe to skip this section in my opinion.</p>

<p>Section 1.2, and 1.3 are about the book and why it is relevant and what it covers. Read it maybe before buying it to decide if it is relevant.</p>

<p>Section 1.4 defines Microservices. I think at the time of writing the book Chris Richardson did not have a concrete definition so instead he presented a verbose description. I find his definition on <a href="https://microservices.io/"><span class="underline">https://microservices.io/</span></a> to be more concrete. What I like about his definition is removing the size of the codebase as a Microservice characteristic and associating the size with team instead. I find this very useful as he drills down to the organizational change needed to decompose the monolith.</p>

<p>Generally, I prefer Sam Newman’s definition of Microservices.</p>

<p><a href="https://www.youtube.com/watch?v=PFQnNFe27kU"><span class="underline">Principles Of Microservices by Sam Newman</span></a></p>

<p>Sam Newman’s definition: Small (independently releasable) <strong>Autonomous services that</strong> work together, modelled around a business domain</p>

<p><a href="https://www.youtube.com/watch?v=CKLIL3Kbf60"><span class="underline">Microservices and Serverless - Sam Newman</span></a></p>

<p><strong>Independently deployable</strong> services that <strong>work together</strong>, modelled around a <strong>business domain</strong></p>

<p>Section 1.6 is the most informative in this chapter, and specifically 1.6.3. It gives an overview of the pattern language used in the book and gives an excellent taxonomy of the patterns.</p>

<p>Chris classifies the patterns into three main layers. Application, Application Infrastructure, and Infrastructure patterns.</p>

<p><img src="https://barmag.github.io/assets/media/image1.png" alt="patterns taxonomy" /></p>

<ul>
  <li><strong>Application Patterns</strong>
    <ul>
      <li>Decomposition</li>
      <li>Database Architecture</li>
      <li>Querying</li>
      <li>Maintaining Data Consistency</li>
      <li>Testing</li>
    </ul>
  </li>
  <li><strong>Application Infrastructure Patterns</strong>
    <ul>
      <li>Cross-cutting Concerns</li>
      <li>Security</li>
      <li>Transactional Messaging</li>
      <li>Communication Style</li>
      <li>Reliability</li>
      <li>Observability</li>
    </ul>
  </li>
  <li><strong>Infrastructure Patterns</strong>
    <ul>
      <li>Deployment</li>
      <li>Discovery</li>
      <li>External API</li>
    </ul>
  </li>
</ul>

<p><strong>Chapter 2</strong> describes decomposition patterns in details. Chris describes it as a set of strategies for decomposing an application into Microservices.</p>

<p><strong>Chapter 3</strong> drills down into communication patterns including communication style, reliability, and transaction messaging while <strong>Chapter 8</strong> covers external API patterns.</p>

<p><strong>Chapter 4, 5, and 6</strong> cover the strategies for data storage in the context of Microservices and the challenges associated with maintaining a database per service. Saga pattern is described in detail as an alternative to 2PC approach for distributed transactions.</p>

<p>Another challenge with database decomposition is querying data scattered around multiple services. <strong>Chapter 7</strong> details a set of different patterns for implementing queries.</p>

<p><strong>Chapter 12</strong> focuses on deployment of Microservices either as VM, container, or serverless. While Chapter 11 details application observability patterns including health check API, log aggregation, distributed tracing, exception tracking, application metrics, and audit logging. <strong>Chapter 11</strong> also describes Microservices Chassis pattern for handling cross-cutting concerns like observability and discovery. <strong>Chapter 11</strong> also discusses security, and access token pattern in detail.</p>

<p><strong>Chapter 9 and 10</strong> focus on patterns for services automated testing with patterns for testing services in isolation with consumer-driven contract test, consumer-side contract test, and service component test.</p>

<p>The final section of this introductory chapter gives a good piece of wisdom about the non-technical aspect of implementing Microservices, and the need of organizational changes and consideration to the human side.</p>

<p>This chapter intrigued my interest in this book and looking forward to reading more.</p>]]></content><author><name></name></author><category term="readings" /><summary type="html"><![CDATA[Microservices Patterns]]></summary></entry></feed>