<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://www.marcgalbraith.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.marcgalbraith.com/" rel="alternate" type="text/html" /><updated>2026-11-13T23:53:26+00:00</updated><id>https://www.marcgalbraith.com/feed.xml</id><title type="html">Marc Galbraith</title><subtitle>Marc Galbraith is a Melbourne-based engineering leader and senior software engineer with 20+ years across software, organisational design and enterprise transformation.</subtitle><entry><title type="html">Executable Specifications, and Who Gets to Change Them</title><link href="https://www.marcgalbraith.com/2026/11/13/executable-specifications.html" rel="alternate" type="text/html" title="Executable Specifications, and Who Gets to Change Them" /><published>2026-11-13T00:00:00+00:00</published><updated>2026-11-13T00:00:00+00:00</updated><id>https://www.marcgalbraith.com/2026/11/13/executable-specifications</id><content type="html" xml:base="https://www.marcgalbraith.com/2026/11/13/executable-specifications.html"><![CDATA[<p>I’ve been building practara, a practice-management and bookkeeping app, with an AI coding agent doing most of the typing. That works well. Over the past year, though, my specifications have piled up as markdown: stories, analysis files, prompt files, acceptance criteria written as bullet points. Markdown is easy to write and easy to drift from. A bullet point says nothing when the code stops doing what it describes.</p>

<p>So I’m changing approach. From now on, a specification has to be something that runs. This post is a snapshot of my thinking at the start, so I can come back to it and report what actually happened.</p>

<h2 id="the-idea-acceptance-test-driven-development">The idea: Acceptance Test Driven Development</h2>

<p>The approach comes from Dave Farley. What set me on this path was <a href="https://www.youtube.com/watch?v=EkH_uoybj8k">one of his videos</a>, and this passage in particular:</p>

<blockquote>
  <p>When a machine writes the code, the human’s job is to say precisely what the code should do in a form that can be checked automatically. Not a prompt, not a markdown document, a specification that runs and verifies that the system does what you want it to do. If you don’t know what you want it to do yet, you aren’t really a programmer. You’re just along for the ride.</p>
</blockquote>

<p>“Not a markdown document” was aimed squarely at how I’d been working. His short <a href="https://continuous-delivery.co.uk/downloads/ATDD%20Guide%2026-03-21.pdf">ATDD how-to guide</a> sums it up. An acceptance test is a “business facing” test that also “supports programming”. You write it before any code, and it acts as an <em>executable specification</em>: the work is done when the test passes. Developers then use ordinary, finer-grained TDD underneath to get there.</p>

<p>The guide lists the properties of a good acceptance test. It:</p>

<ul>
  <li>is written from the perspective of an external user of the system,</li>
  <li>runs in life-like scenarios, in a production-like environment,</li>
  <li>talks to the system only through its public interfaces, with no back doors,</li>
  <li>says <em>what</em> the system does, never <em>how</em> it does it.</li>
</ul>

<p>Two of its tips stuck with me. First, imagine the least technical person who understands the problem domain reading your test, and make sure it makes sense to them. Second, imagine throwing the system away and replacing it with something completely different. The tests should still make sense. So no “fill in this field” or “click this button”: say “pay by credit card” instead.</p>

<h2 id="four-layers">Four layers</h2>

<p>The structural idea is a four-layer separation of concerns:</p>

<table>
  <thead>
    <tr>
      <th>Layer</th>
      <th>Job</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Test cases</strong></td>
      <td>The specifications, written purely in the language of the problem domain.</td>
    </tr>
    <tr>
      <td><strong>Domain-specific language (DSL)</strong></td>
      <td>A shared vocabulary the test cases are written in. It fills in detail the test doesn’t care about, using optional parameters for nearly everything.</td>
    </tr>
    <tr>
      <td><strong>Protocol drivers</strong></td>
      <td>Translators from the DSL into the system’s own language: a browser, an API, a CLI. One per channel. All knowledge of <em>how</em> lives here.</td>
    </tr>
    <tr>
      <td><strong>System under test</strong></td>
      <td>Deployed the same way as production, so it can’t tell it’s being tested.</td>
    </tr>
  </tbody>
</table>

<p>If you know the <a href="https://martinfowler.com/bliki/PageObject.html">Page Object</a> pattern, protocol drivers will look familiar, but they’re broader. The DSL sits above them, so a scenario written against the web UI can later run against an API driver without changing a word.</p>

<p>Each test also starts from a running system that holds no data of its own, and shares no test data with any other test. My implementation does this by having each test onboard its own practice and giving every name a unique per-test suffix. Tests can then share one running instance and run in any order.</p>

<h2 id="why-this-matters-more-with-an-ai-agent">Why this matters more with an AI agent</h2>

<p>The guide makes a point that I think is underrated: well-written acceptance tests are a precise language for prompting an AI, and a way to verify what it produces. Here’s the arrangement I’m aiming for:</p>

<ul>
  <li><strong>I own the test cases.</strong> The agent can draft one for me to review, but it can’t change an accepted one without my agreement.</li>
  <li><strong>The agent has full autonomy over the code</strong>, including the protocol drivers and how the system is started.</li>
  <li><strong>The tests run outside the coding phase</strong>, in the pipeline, as a gate the agent can’t move.</li>
</ul>

<p>There’s a catch I didn’t see at first. Farley says developers own the DSL and the drivers. Here the “developer” is the agent. If it can change the DSL, it can weaken a check while my test case reads exactly the same. The same goes for test wiring: a pytest hook or a config flag can quietly skip a test without touching it.</p>

<p>The ownership lines therefore have to be drawn more carefully than “specs are mine, code is yours”:</p>

<ul>
  <li><strong>Test cases</strong>: mine, and locked against the agent’s writes.</li>
  <li><strong>DSL and test wiring</strong>: the agent writes them, I review every change. Every assertion lives in the DSL, so this is where the meaning is.</li>
  <li><strong>Drivers and system setup</strong>: the agent’s.</li>
  <li><strong>The pipeline</strong> checks that a new test fails on <code class="language-plaintext highlighter-rouge">main</code> before it passes on the branch, which catches a hollowed-out check. It also fails the run if any test was skipped.</li>
</ul>

<p>Failing first isn’t ceremony. A test that fails before any code is written tells the programmer what the goal is: make this pass. That was true when the programmer was a person, and it’s just as true now that it’s an AI agent. A test that has never failed hasn’t told anyone anything. We all learn by failing first.</p>

<h2 id="choosing-a-language">Choosing a language</h2>

<p>I considered staying in Rust, which is what the app is written in. I also considered C# with FluentAssertions, which I’ve enjoyed using before, and Python. I chose Python with pytest, for three reasons:</p>

<ol>
  <li><strong>Optional, named parameters.</strong> The guide asks for “optional parameters for nearly everything” in the DSL. Python’s keyword arguments do that directly. Rust needs builder types, which make test cases noisier.</li>
  <li><strong>A language boundary enforces the public-interface rule.</strong> Python code can’t reach into the Rust internals, so the tests <em>can’t</em> take a back door.</li>
  <li><strong>No new toolchain.</strong> C# would have been fine for the DSL, but it would add a third language to the repository for no real gain.</li>
</ol>

<p>I also moved away from Gherkin. I already had a cucumber suite, and its <code class="language-plaintext highlighter-rouge">.feature</code> files read nicely. But their meaning lives in step definitions matched by regular expressions, and those are exactly the files an agent would be editing. A DSL in plain code is more precise, and the line between “spec” and “plumbing” is easier to see.</p>

<p>Here’s the first test case, a port of one of those Gherkin features:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">test_a_rule_matched_payment_with_no_unpaid_invoice_offers_drafting_one</span><span class="p">(</span><span class="n">practice</span><span class="p">):</span>
    <span class="n">practice</span><span class="p">.</span><span class="n">has_clinician</span><span class="p">()</span>
    <span class="n">account</span> <span class="o">=</span> <span class="n">practice</span><span class="p">.</span><span class="n">has_bank_account</span><span class="p">()</span>
    <span class="n">client</span> <span class="o">=</span> <span class="n">practice</span><span class="p">.</span><span class="n">has_client</span><span class="p">(</span><span class="s">"Priya Patient"</span><span class="p">)</span>

    <span class="n">first</span> <span class="o">=</span> <span class="n">account</span><span class="p">.</span><span class="n">import_feed</span><span class="p">(</span><span class="n">payment</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="n">payee</span><span class="o">=</span><span class="s">"PAYMENT RECEIVED"</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="s">"2026-04-01"</span><span class="p">))</span>
    <span class="n">first</span><span class="p">.</span><span class="n">payment</span><span class="p">.</span><span class="n">link_to</span><span class="p">(</span><span class="n">client</span><span class="p">,</span> <span class="n">save_rule</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
    <span class="n">first</span><span class="p">.</span><span class="n">reconcile</span><span class="p">()</span>

    <span class="n">feed</span> <span class="o">=</span> <span class="n">account</span><span class="p">.</span><span class="n">import_feed</span><span class="p">(</span><span class="n">payment</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="n">payee</span><span class="o">=</span><span class="s">"ANOTHER PAYMENT RECEIVED"</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="s">"2026-04-05"</span><span class="p">))</span>
    <span class="n">feed</span><span class="p">.</span><span class="n">payment</span><span class="p">.</span><span class="n">should_be_classified_as_payment_from</span><span class="p">(</span><span class="n">client</span><span class="p">)</span>
    <span class="n">feed</span><span class="p">.</span><span class="n">should_not_be_reconcilable</span><span class="p">()</span>
    <span class="n">feed</span><span class="p">.</span><span class="n">payment</span><span class="p">.</span><span class="n">should_offer_to_draft_invoice</span><span class="p">()</span>

    <span class="n">invoice</span> <span class="o">=</span> <span class="n">feed</span><span class="p">.</span><span class="n">payment</span><span class="p">.</span><span class="n">draft_invoice</span><span class="p">()</span>
    <span class="n">invoice</span><span class="p">.</span><span class="n">issue</span><span class="p">()</span>
    <span class="n">invoice</span><span class="p">.</span><span class="n">should_be_issued_and_unpaid</span><span class="p">()</span>

    <span class="n">feed</span><span class="p">.</span><span class="n">should_be_reconcilable</span><span class="p">()</span>
    <span class="n">feed</span><span class="p">.</span><span class="n">reconcile</span><span class="p">()</span>
    <span class="n">invoice</span><span class="p">.</span><span class="n">should_be_paid</span><span class="p">()</span>
    <span class="n">client</span><span class="p">.</span><span class="n">income_balance_should_be</span><span class="p">(</span><span class="mi">200</span><span class="p">)</span>
</code></pre></div></div>

<p>There’s no URL, selector or button in it. Behind it, a Playwright driver does the clicking, and the suite starts a fresh server with empty data for each run.</p>

<p>One early lesson: my first version of the balance check tested whether the ledger row <em>contained</em> “$200.00”. That would have passed for “$1,200.00”. Precision has to be designed into the DSL.</p>

<h2 id="the-why-comes-first">The why comes first</h2>

<p>An executable specification captures <em>what</em> the system must do. The agent decides <em>how</em>. But neither of those makes sense without <em>why</em>. Purpose and context come before the what, and they frame the how.</p>

<p>This is task assignment as described in Systems Leadership, which I’ve <a href="/2023/05/31/thoughts-on-teams.html">written about before</a>. In Ian Macdonald, Catherine Burke and Karl Stewart’s <em>Systems Leadership: Creating Positive Organisations</em>, a well-formed task states its context and purpose, then the quantity and quality expected, and the resources and time available. Within those limits, the person doing the work has discretion over how to do it. That maps closely onto this setup:</p>

<ul>
  <li><strong>Context and purpose</strong> are the why. They sit above any single test.</li>
  <li><strong>Quantity and quality</strong> are what the executable specification pins down.</li>
  <li><strong>Resources and time</strong> are the limits of the assignment.</li>
  <li><strong>The how</strong> is the agent’s discretion, inside those limits.</li>
</ul>

<p>So the why has to be written down somewhere, and both the agent and I need to be able to read it. Where it fits in the repository, that’s where it should live, next to the specifications that serve it. Some of it sits at a higher level of work, though: a plan or strategy that ties many whats to a single why. That may live elsewhere, but every specification should be able to point back to the purpose it serves. Building software is a system too, and it only works when it sits within a context and has a purpose at each level of work. That’s probably a post of its own.</p>

<h2 id="questions-ill-come-back-to">Questions I’ll come back to</h2>

<ul>
  <li>Does the DSL stay small and domain-shaped, or does it grow into a second application?</li>
  <li>Is reviewing every DSL change sustainable, or does it become the bottleneck?</li>
  <li>How often does the agent push back on a spec, and is it right when it does?</li>
</ul>

<h2 id="references">References</h2>

<ul>
  <li>Dave Farley, <a href="https://continuous-delivery.co.uk/downloads/ATDD%20Guide%2026-03-21.pdf">Acceptance Test Driven Development: How-To Guide</a>, continuous-delivery.co.uk.</li>
  <li>Dave Farley, <em>Modern Software Engineering</em>, Addison-Wesley, 2021.</li>
  <li>Jez Humble and David Farley, <em>Continuous Delivery</em>, Addison-Wesley, 2010.</li>
  <li>Steve Freeman and Nat Pryce, <em>Growing Object-Oriented Software, Guided by Tests</em>, Addison-Wesley, 2009.</li>
  <li>Gojko Adzic, <em>Specification by Example</em>, Manning, 2011.</li>
  <li>Kent Beck, <em>Test-Driven Development: By Example</em>, Addison-Wesley, 2002.</li>
  <li>Dan North, <a href="https://dannorth.net/introducing-bdd/">Introducing BDD</a>, 2006.</li>
  <li>Ian Macdonald, Catherine Burke and Karl Stewart, <em>Systems Leadership: Creating Positive Organisations</em>, Gower, 2006 (2nd edition, Routledge, 2018).</li>
  <li>Martin Fowler, <a href="https://martinfowler.com/bliki/PageObject.html">PageObject</a>.</li>
  <li>Dave Farley, <a href="https://www.youtube.com/watch?v=EkH_uoybj8k">the video quoted above</a>, Modern Software Engineering on YouTube.</li>
  <li><a href="https://www.youtube.com/@ModernSoftwareEngineeringYT">Modern Software Engineering</a> on YouTube, especially <a href="https://youtu.be/KP0U3I-f9-Y">Requirement Specification v User Stories</a> and <a href="https://youtu.be/0HMsh459h5c">5 Common Mistakes in User Stories</a>.</li>
</ul>]]></content><author><name></name></author><category term="coding" /></entry><entry><title type="html">Thoughts on Teams</title><link href="https://www.marcgalbraith.com/2023/05/31/thoughts-on-teams.html" rel="alternate" type="text/html" title="Thoughts on Teams" /><published>2023-05-31T00:00:00+00:00</published><updated>2023-05-31T00:00:00+00:00</updated><id>https://www.marcgalbraith.com/2023/05/31/thoughts-on-teams</id><content type="html" xml:base="https://www.marcgalbraith.com/2023/05/31/thoughts-on-teams.html"><![CDATA[<p>Teams are popular in today’s organisations. Often generalised as: functional, cross-functional, self-managed, self-organised, virtual, troubleshooting and so on. But will any of them be an effective team?</p>

<p>There is a simple test comprising of the following questions we can borrow from Systems Leadership:</p>
<ol>
  <li>Do they have a common purpose?</li>
  <li>Do they have to interact to complete their individual tasks?</li>
  <li>And do those tasks achieve the common purpose?</li>
</ol>

<p>Answering no to any of these questions, will predictably lead to effectiveness issues. Because mutual interdependency will not be present. If I am on a train with a group of other people, we share a common purpose, get to work, but we do not need each other to get there. We aren’t a team, we don’t need to collaborate for mutual benefit to get to work. We are only a group.</p>

<p>In an organisation its hard enough to hold a team accountable for their work, its even harder to hold a group. And I’ve seen many teams as poorly constructed groups. Because it is so hard to hold a group to account, the outcomes are often disastrous.</p>

<p>A reality I see is that you can only hold an individual accountable for their work. So when you have a team, it makes sense that a leader is that person we can hold to account. But, and only but, that they then have full authority over how the team works. If they have this authority then they can potentially hold each team member to account.</p>

<p>There are those that believe that a leader is not required. Found in the ideologies of self-managed, self-organised, organic, empowered, non-hierarchical groups. It sounds appealing to advocate freedom to choose work and be autonomous. It is appealing precisely because the alternative is the lack of freedom and autonomy. Often labeled as command and control, bureaucracy, or top down. In my experience, most perceived issues with the management of work is simply mad, bad or stupid leadership.</p>

<p>Many of us have had experiences of poor management and leadership. When that becomes shared it is temping and completely normal to look for the polar opposite. We start believing an idea that we don’t need leaders. This is a dangerous, because an unofficial leader will emerge anyhow.</p>

<p>Under times of stress, complexity, or critical decision making, the team will look to someone to carry the mental load and have the sorts of courage to make difficult decisions. It is in our social nature to discharge this anxiety through someone. If this person doesn’t exist as a clarified and authorised role, an unofficial invitation is up for grabs for someone to steer the team. This is where power rather authority comes to take grip. In some cases this might be ok, often referred to as “rising to the challenge”, but what often happens is problematic uses of power over team members, generating potentially unproductive behaviours. Before we know it infighting is so great that soon there is a team no more.</p>

<p>When a team is operating well the leader is actually hard to spot, not because it is “self-managed”, but because the leader has a developed set of social processing skills that consciously distributes clarity in a productive way. They are fair in holding team members accountable to a social process that maintains a productive bond. On top of this they understand their role and the limits of their authority that come with it. They have clarity of context that surrounds the team and the work they need to do. They understand their purpose and the team’s purpose.</p>

<p>In turn a team member can understand their role and the authority it entails. Understanding and clarifying context is a responsibility of all team members and a team leader is first and foremost a team member to help do this work in a positive manner. It is the quality of the “working” relationships between members, their level of social cohesion, that gets quality work done. Counter intuitive to many of us, it isn’t the technical processes that gets work done. People do. Quality working relationships lead to quality work done.</p>]]></content><author><name></name></author><category term="organisations" /></entry><entry><title type="html">Check point</title><link href="https://www.marcgalbraith.com/2023/05/22/check-point.html" rel="alternate" type="text/html" title="Check point" /><published>2023-05-22T00:00:00+00:00</published><updated>2023-05-22T00:00:00+00:00</updated><id>https://www.marcgalbraith.com/2023/05/22/check-point</id><content type="html" xml:base="https://www.marcgalbraith.com/2023/05/22/check-point.html"><![CDATA[<p>It’s roughly been 9 months since I thought about writing again. This was mainly due a deliberate focus on coding and learning another language. I wrote in a previous <a href="/2022/08/03/first-day-back-first-lessons.html">post</a> that <strong>React</strong> was a popular theme at the time from colleagues I’d reached out too. And I am sure it still is. But since then I’ve joined <a href="https://home.global-roam.com">Global-Roam</a>, and at that company you’ll find .NET frameworks and libraries, C# as a key language, and TypeScript lining the source repositories.</p>

<p>I’ve experienced some negative feedback from other devs around the track, raising statements that some of those things aren’t cool, or not a pure fanciful functional paradise. From my perspective, I don’t care, so what. It’s the hand that has been dealt. I don’t mind, something like C# is a good OO language. And OO is still cutting it. C# feels like a cross between Java and C++.</p>

<p>I hear Kotlin is rocking along and all the cool kids are doing JavaScript, TypeScript, Go and eat Rust for breakfast, and oh, don’t forget the Python maple syrup. It doesn’t matter what your logic apparatus is, it’s rather the case of what’s appropriate for the job and fits the culture. If you can code with it, solve some real problems with it, get some sense of contribution from it, sounds like it is probably doing its job.</p>

<p>All languages we know of are human inventions. And a company is a collection of those humans emitting a culture. It’s the culture that accepts or rejects a coding language. Programming languages are very rarely chosen for their pure technical wonderment. Someone ultimately makes an arbitrary choice in a political melting pot and it begins. It really doesn’t matter what language it is, they all riff off each other. What matters is your own self-discipline, how you judge your capability and capacity to think, encode that thinking into lines of that software language and learn from it. Software is soft, so be flexible with it.</p>]]></content><author><name></name></author><category term="coding" /></entry><entry><title type="html">Perspectives CV</title><link href="https://www.marcgalbraith.com/2022/08/11/perspectives-cv.html" rel="alternate" type="text/html" title="Perspectives CV" /><published>2022-08-11T00:00:00+00:00</published><updated>2022-08-11T00:00:00+00:00</updated><id>https://www.marcgalbraith.com/2022/08/11/perspectives-cv</id><content type="html" xml:base="https://www.marcgalbraith.com/2022/08/11/perspectives-cv.html"><![CDATA[<p>A little detour from researching the engineering world this week to focus on building my CV. A question. Do I create an engineering focused CV?</p>

<p>The problem with just that view is it doesn’t explain what has happened between the gaps over the last 33 years of my working career. I am going to experiment with what I am calling a perspectives CV in my GitHub Repository.</p>

<p>It will be stylised different from my website to denote that its an experimental draft of sorts and then I’ll work out how to incorporate it, or maybe its a simply a silly idea. Let’s see!</p>

<p>I don’t mind trying, my best thoughts at this moment is to split it into the following perspectives:</p>
<ul>
  <li>Engineering
    <ul>
      <li>All things software</li>
    </ul>
  </li>
  <li>Consulting
    <ul>
      <li>When I’ve been called upon for advice and change work</li>
    </ul>
  </li>
  <li>Management / Leadership
    <ul>
      <li>Lead teams, running an area</li>
    </ul>
  </li>
</ul>]]></content><author><name></name></author></entry><entry><title type="html">First day back, first lessons.</title><link href="https://www.marcgalbraith.com/2022/08/03/first-day-back-first-lessons.html" rel="alternate" type="text/html" title="First day back, first lessons." /><published>2022-08-03T00:00:00+00:00</published><updated>2022-08-03T00:00:00+00:00</updated><id>https://www.marcgalbraith.com/2022/08/03/first-day-back-first-lessons</id><content type="html" xml:base="https://www.marcgalbraith.com/2022/08/03/first-day-back-first-lessons.html"><![CDATA[<p>I’ve reached out to some colleagues I know that are still coding. Why I did this? Obtain the quickest possible insight into what skills are considered rare and valuable. There are stacks of sites that talk about the top ten this and that, I think they are probably looking for clicks.</p>

<p>The common thread in this research was <strong>React</strong>.</p>

<p>Although I must admit I have a strong interest in <strong>Python</strong> and <strong>Data Science</strong> related things, but I figure I’ll come to that down the road.</p>

<p><strong>React</strong> comes as no surprise, Lexicon is heavily involved as many other Australian consultancies in this area. Clients are generally going through an upgrade to <strong>React</strong> cycle.</p>

<p>There are two courses I am aware of:</p>
<ol>
  <li><a href="https://www.udemy.com/course/react-the-complete-guide-incl-redux/">Udemdy coursework</a></li>
  <li><a href="https://epicreact.dev">Epic React course</a></li>
</ol>

<p>I’ve chosen to delay doing them just yet and carefully read through <a href="https://reactjs.org/docs/getting-started.html#learn-react">reacts.org</a>, from my Java days I tended to judge the utility of a framework based on the structure, principles, and rationale captured in the Javadocs. Have a good read first, then dive into working on examples. Spring framework and Jetty Servlet container where good examples of this back in ‘00 for me.</p>

<p>At the same time, I’m using ANKI to build a set of flash cards to represent and memorise the core concepts from React.</p>

<p>And thankful the documentation is great! You will need to go deep on the modern concepts of JavaScript, to keep up. So I’ll also build a set of ANKI cards on what I need to absorb with current JavaScript concepts.</p>

<p>My plan is set up an early morning routine of refreshing from flash cards and learning next steps. I’ll capture these efforts also.</p>]]></content><author><name></name></author><category term="coding" /></entry><entry><title type="html">Value in Organisations</title><link href="https://www.marcgalbraith.com/2018/02/25/value.html" rel="alternate" type="text/html" title="Value in Organisations" /><published>2018-02-25T00:00:00+00:00</published><updated>2018-02-25T00:00:00+00:00</updated><id>https://www.marcgalbraith.com/2018/02/25/value</id><content type="html" xml:base="https://www.marcgalbraith.com/2018/02/25/value.html"><![CDATA[<h2 id="value-in-organisations">Value in Organisations</h2>

<p>No organisation can escape the truth that it can only exist if the things it does is valuable. For value to exist someone has to consider it to be so. So who does? Is it the customers? The shareholders? The board? Leaders or the workers? It is true they all have a view of what value the organisation has. But is it consistent</p>

<p>W. Edward Deming once wrote, “The aim of the system must be clear to everyone in the system”. He was, in part, talking about the purpose of an organisation. In conjunction with his further statement, “The aim is a value judgement”<sup id="fnref:fn1" role="doc-noteref"><a href="#fn:fn1" class="footnote" rel="footnote">1</a></sup>. He highlights the link between purpose and value. Purpose has a strong role to play in determining what is valuable. Value is the judgement that validates action and builds cultural norms. Thus it is a thinking construct of leaders and workers. Value is in the mind of the doer.</p>

<p>But value isn’t something that exists in our heads born out of pure purpose. It’s constructed from behaviour. Frederick Herzberg makes a point that, “<em>values are not precursors to behaviour. They are the results of behaviour.</em>” For instance if we look at the Agile Manifesto. Those chaps didn’t construct the values from pure imagination. But from their experience developing software. The behaviour they exercised lead them to a view of what they considered to be valuable. Herzberg can confirm this in a further in his statement. “<em>You develop a behaviour pattern, then you develop an attitude and a value system that justify your behaviour. All values do is enable you to read an environment to see whether your behaviour is acceptable.</em><sup id="fnref:fn2" role="doc-noteref"><a href="#fn:fn2" class="footnote" rel="footnote">2</a></sup>” The Agile Manifesto then acts as a high level set of rules to see if your behaviour is acceptable. As we can see values are the building blocks of culture.</p>

<h2 id="double-meaning">Double Meaning</h2>

<p>As a word value does not have a single meaning. Which often lends itself, in reference to things, to be used in abstract or concrete ways. For an organisation that poses a problem. If the values of its people are not congruent, productive action will be impossible.</p>

<p>Value also appears as a universal in organisations as money. Not an invention of the organisation, but a civilised way of placing value on goods and services, and therefore on things that are done or made; revenue and costs. Here value is a number, a monetary unit that can have all arithmetic and statistical operations applied. A thing that can be counted.</p>

<p>We can now say there are broadly two meanings of value. The first being a social in nature, what is valued by an individual or group. The oxford dictionary defines it as the regard that something is held to deserve; the importance, worth, or usefulness of something.<sup id="fnref:fn3" role="doc-noteref"><a href="#fn:fn3" class="footnote" rel="footnote">3</a></sup> The second, a number; quantity, that is derived from a measurement representing how much on a scale. Both technical and commercial in nature. In the context of organisations these two meanings have something in common, they drive judgement.</p>

<h2 id="judgement">Judgement</h2>

<p>People have value (qualitative) systems to make judgements about their situation, decide if things are ok or not, raising the intention to take action of some sort. Organisations are made of people and they have to make judgements in their work, about other’s action<sup id="fnref:fn4" role="doc-noteref"><a href="#fn:fn4" class="footnote" rel="footnote">4</a></sup>, and be judged by others. Its essence is about distinguishing important things from unimportant.</p>

<p>Values as quantities are often referred to as data; symbols representing objects and events. A basis for information, much of it stored in IT Systems. In organisations we want useful information on things that are <em>valued</em>; not just any information. But the capability and capacity of these IT Systems has lead to the capture of everything and anything that can be stored. Almost with little regard for why it should. And with that comes claims that it is valuable because of its untapped potential.</p>

<p>Information helps answer questions like who, what, when, where, and how many.  For example: How many items are in stock, how many people do we have, how long do they take, percentage of types. Presented in forms like dashboards, reports, charts, alerts, spreadsheets, custom software applications and the like. This information gives us an opportunity to compare. Numbers help rank or order things according to a scale but it doesn’t decide what or why something is important. They are only facts.</p>

<p>In this context of value a philosophical question for organisational decision making emerges. Should we act on what is important or should we act because there is more or less of something? Importance and volume are clearly different. They appear to some as opposite ends of a judgment continuum. What do the numbers say or go with your gut? Numbers hide unknowns.<sup id="fnref:fn5" role="doc-noteref"><a href="#fn:fn5" class="footnote" rel="footnote">5</a></sup>, facts without a story, as explained in the previous paragraph. Using your gut is a metaphor for invoking your value system, albeit unconsciously. In both cases you don’t know why, as much as you might rationalise it. For organisations this judgement can only be derived from purpose. When an organisation knows it’s why at all levels, it becomes simpler for leaders and everyone to decide what is important and what is not.</p>

<h2 id="exchange">Exchange</h2>

<p>Value is often associated with exchange. Between people we can model an exchange in simple terms of there being a giver and a taker of the thing being exchanged. The giver has a view of value that it produces towards the taker. And the taker assesses the value of what it has received. At each end of the exchange exists a value system held by the people involved in the exchange. The thing of value is exchanged but value does not; it is realised by the beholder. Sometimes the giver will try to validate value with the taker to ascertain compatibility. This can only be achieve at the end of the exchange. What the taker transmits is a semblance to the giver of what they valued. And because of the givers perceived ideals of value, they will never truly approach perfection. What tagoochi called Nominal Value. Simply put, there is much variation in what is and was valuable in any exchange.</p>

<p>Transferring this model to organisations. We can identify he giver as the organisation and the taker as the customer. What is different is that the value system of the organisation is cultural; a social construct. In Mark Schwarz’s book, “The Art of Business Value”, he concludes that business value, simply put, is what the business values. If we assume the organisation is the business, it makes sense to call the value system of the organisation “Business Value”. Further, If we take Mark’s conclusion we can infer that the value system of a customer is called “Customer Value”.</p>

<h2 id="business-and-customer-value">Business and Customer Value</h2>

<p>If Business Value is what the organisation values and Customer Value is what the customer values, these value systems must have a symbiotic relationship. But there is a catch. There is no Business Value without Customer Value. No business can be successful without a customer valuing what it produces or the organisation will suffer financial death. Customer Value can live on, finding an organisation that values it. This then leads towards a certain logic. Customer Value is an attitude of Business Value. Business Value must in some minimum way have a view of Customer Value operating within its value system. What a business values has to comprise of elements of what it believes to be valuable to their customers.</p>

<p>A good example of this I found in Edgar Schein’s, Organisational Culture and Leadership.<sup id="fnref:fn6" role="doc-noteref"><a href="#fn:fn6" class="footnote" rel="footnote">6</a></sup> At Digital Equipment Corporation (DEC), engineers built up certain standards (Business Value) about what customers valued in computers; their attitude to Customer Value. Over time what customers valued in computers shifted as examples of potential computers emerged from other organisations. But the engineers of DEC didn’t alter their attitude toward customer value. As Schein put it: “they (engineers) used their own standards for evaluating what a customer expected; they over-designed them and built in far too many bells and whistles, which made the computers too expensive and too hard to use. The DNA of the DEC culture never changed.”<sup id="fnref:fn7" role="doc-noteref"><a href="#fn:fn7" class="footnote" rel="footnote">7</a></sup></p>

<p>DEC found out the hard way, that what it valued wasn’t sustainable. With in it Customer Value was frozen. It also demonstrates that what the customer views as important changes over time. It appears then for an organisation to remain viable a primary principle of Business Value must exist: “Value the building of knowledge about what the customer values over time”</p>

<p><strong>Agile</strong></p>

<p>Much of Agile’s commentary has been towards the idea that value is delivered incrementally. And that in Scrum the Product Owner is the arbitrator of value; what is worth working on and what is good enough. The team as such is subjected to proxy to value. This is a combination of what the product owner believes and what they have interpreted from the user. They have to submit to the product owner’s own values and this seems to come about easily. For example I’ve been part of many inceptions where 30 or more stories are produced representing a future wish that has the potential to be valuable not to the product owner but the users of the it. Yet a product owner decides what is most valuable at any given moment.</p>

<h2 id="conclusion">Conclusion</h2>

<p>Value is a critical element of organisational purpose. Without it people who work in them will have to make up their own values leading to misguided effort. Leaders are best positioned to establish and course correct value systems.</p>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:fn1" role="doc-endnote">
      <p>W. Edwards Deming. The New Economics for Industry, Government, Education (Kindle Location 435-437). Kindle Edition. <a href="#fnref:fn1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:fn2" role="doc-endnote">
      <p>Page 44, The Managerial Choice <a href="#fnref:fn2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:fn3" role="doc-endnote">
      <p>Oxford Dictionary, accessed 9/2/2018 <a href="#fnref:fn3" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:fn4" role="doc-endnote">
      <p>Before you might say judging people is a bad thing. To make the distinction between good and bad things, including behaviour, we all have to make judgements. Much of this is non conscious. <a href="#fnref:fn4" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:fn5" role="doc-endnote">
      <p>the most important figures that one needs for management are unknown or unknowable (Lloyd S. Nelson, director of statistical methods for the Nashua corporation), but successful management must nevertheless take account of them.</p>

      <p>Out of the Crisis, Page 121 <a href="#fnref:fn5" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:fn6" role="doc-endnote">
      <p>5th Edition. <a href="#fnref:fn6" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:fn7" role="doc-endnote">
      <p>5th Edition, pages 336 - 337 <a href="#fnref:fn7" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name></name></author><category term="organisations" /></entry><entry><title type="html">Dynamics of Change</title><link href="https://www.marcgalbraith.com/2015/02/25/dynamics-of-change.html" rel="alternate" type="text/html" title="Dynamics of Change" /><published>2015-02-25T00:00:00+00:00</published><updated>2015-02-25T00:00:00+00:00</updated><id>https://www.marcgalbraith.com/2015/02/25/dynamics-of-change</id><content type="html" xml:base="https://www.marcgalbraith.com/2015/02/25/dynamics-of-change.html"><![CDATA[<p>Edgar H. Schein in his book Organizational Culture and Leadership, discusses the general stages of change within human systems such as groups and organisations, drawing from his consulting and research. Kurt Lewin wrote an article back in 1947 and concluded that for people and group performance to change there appears to be three stages that they go through to establish new levels of performance:</p>

<ol>
  <li>Unfreezing the current level.</li>
  <li>Moving to the new level.</li>
  <li>Freezing the new level.</li>
</ol>

<p>Edgar augmented this in the following manner (page 299):</p>

<ol>
  <li>Unfreezing: Creating the motivation to change.</li>
  <li>Learning new concepts, new meanings for old concepts and new standards for judgement.</li>
  <li>Internalising new concepts, meanings and standards.</li>
</ol>

<p>While reflecting on these observations I started to think about the application of jobs-to-be-done theory, in particular the concept of progress making forces. It led me to ponder that the observations of people change and customer switching are closely related for they have one thing in common, being involved in a situation; the realisation that there is a problem causing motivation to be established.
When a person decides to stop doing one thing and start doing another we call this a Switch in jobs-to-be-done language. Combining this thinking with Lewin/Edgar’s stages of change caused me to think that a customer appears to go through three distinct stages within a Switch:</p>

<ol>
  <li>New situation arises in their life.</li>
  <li>Work towards resolving it, leveraging products and services</li>
  <li>Establish a new way.</li>
</ol>

<p>To navigate these stages we think of it within jobs-to-be-done as a set of forces. They can be broken into 4 distinct areas and have an impact on each other:</p>

<ol>
  <li>Push of the situation.</li>
  <li>Attraction of the new.</li>
  <li>Anxiety of the new.</li>
  <li>Habit of the present.</li>
</ol>

<p>Forces 1 and 2 are progress generating (pushing forward) whilst 3 and 4 are resistive in nature (pulling back). Edgar Schein groups these forces in anxiety terms:</p>

<ol>
  <li>Survival Anxiety - Must do something, learn what it is.</li>
  <li>Learning Anxiety - Unlearning something so it can be learned.</li>
</ol>

<p>My perception is that the progress generating forces in a Switch are the same components we can find in Survival Anxiety. In that for a person (customer) to survive they must actually learn something and likewise the resistive forces are akin to Learning Anxiety; the confrontation that a person will have to unlearn something. In social or group settings this threat is quite alarming.
It’s easy to learn new things when there is no unlearning and explains why it is easier when we are younger to learn as we simply have nothing to unlearn! We tend to find it hard to give up present habits, for those very habits are learned and must be unlearned if we are to make the Switch. Unlearning can generate a complex set of emotions which can cause all sorts of defence mechanisms to kick in.</p>

<p>When studying the four forces through the perspective of jobs-to-be-done we learn that the progress generating forces always come with a side-effect; the more you focus on them the more resistive forces you potentially generate. It is as if you are stretching the customer further and further away from their old habits that has them unconsciously more and more concerned. Edgar Schein describes the same relationship between Survival and Learning Anxiety, outling two principles for transformative change aka Switching:</p>

<p><strong>Principles</strong></p>

<ol>
  <li>Survival anxiety (progress making forces) or guilt must be greater than learning anxiety.</li>
  <li>Learning anxiety (resistive forces) must be reduced rather than increasing survival anxiety.</li>
</ol>

<p>I believe these schools of thought overlap and blend nicely so I have created a hybrid diagram displaying the dynamics of change for a person which in turn is a customer.
<img src="/assets/ForcesOfChange.png" alt="Forces of Change" /></p>]]></content><author><name></name></author><category term="organisations" /><category term="consulting" /></entry><entry><title type="html">Not The Clothes - Retail Therapy</title><link href="https://www.marcgalbraith.com/2015/02/25/not-the-clothes-retail-therapy.html" rel="alternate" type="text/html" title="Not The Clothes - Retail Therapy" /><published>2015-02-25T00:00:00+00:00</published><updated>2015-02-25T00:00:00+00:00</updated><id>https://www.marcgalbraith.com/2015/02/25/not-the-clothes-retail-therapy</id><content type="html" xml:base="https://www.marcgalbraith.com/2015/02/25/not-the-clothes-retail-therapy.html"><![CDATA[<p>It’s the second day after Christmas and I’ve been standing around for what feels like an inordinate amount of time in a major clothes retailer, while my partner is selecting clothes to try out. I’m the guy trying to find a little bit of space in the shop to cope with the hoard of other shoppers, some men in the store are fighting over the only 2 chairs in a 50 metre radius and I really didn’t want to be around so many people today. I agreed to be there because we want to do things for our partners, we love them.</p>

<p>Some background to our situation; we are staying in Sydney with my sister and her family in Bondi Beach. We all wanted to be together at Christmas, by the end of the first day my partner asked if I would go shopping with her for paternity clothes. We are 6 weeks into our first pregnancy and I thought it was a little early to be purchasing clothes when the oven hasn’t really expanded yet. I’m a confused partner, we just arrived in Sydney, great weather, at the beach, we had both talked about wanting to relax during the break and stay away from the crowds. So I wasn’t going to ask any confronting questions, merely listen and observe for the day.</p>

<p>I remember hearing a podcast with Clay Christensen talking about how Jobs-to-be-done had help his relationship with his wife, instead of having a confrontation on matters between them try and understand the causality of it.</p>

<p>Leading up to this moment of standing around was lunch, I suggested if we are going to look at clothes for the rest of day let’s get something to eat. We ended up at the David Jones food bar in the basement, it was a great experience she was happy I was happy, all is good. We then wondered up through the other floors and for some reason my partner was keen for myself to try out some new clothes, but I thought we had recently talked that I have enough at the moment. Initially I went along with it but then I had to say something, “I can’t see anything I need I’m not in that frame of mind, I’m here to help you.”</p>

<p>So I’ve been standing around while my partner is selecting clothes to try out, answering her questions, do I like this one or that one, I noticed the clothes aren’t paternity type and the amounts she is eying off we definitely haven’t budgeted for, from my outside perspective it looks random, but something is driving it. I ask politely “It seems like you have quite a few non-paternity clothes there.” She stopped and smiled at me, “But I get time to spend with you, you know how to help me so well, but I did need to get out of where we were staying, being with your family brings back a lot of emotions for me, I’m not with my family in Brazil, and you seem to give your family a lot of attention and forget about me.”</p>

<p>“Oh no! Now I know why we are here”, I thought. We aren’t here to buy clothes, we are escaping from something, perhaps a remedy to the feeling of a lack of attentiveness on my behalf? Maybe I’ve been doing something wrong or simply emotions are running high at this time of year, is this what we might call retail therapy? So I decided to tweet:</p>
<blockquote>
  <p>At the shops looking at clothes with my partner today, why we are here has nothing to do with the function of clothes #JTBD</p>
</blockquote>

<p>When I posted the tweet I realised I was doing something I recall Ryan Singer mentioned in a tweet:</p>
<blockquote>
  <p>What if Twitter is just a place to say things that nobody in your actual vicinity is interested in hearing? #JTBD</p>
</blockquote>

<p>We did end up buying some clothes, but I think that it was more out of a need to complete the day. Being aware of your situation is definitely nothing new in human nature, but I do find jobs-to-be-done has s</p>]]></content><author><name></name></author><category term="consulting" /></entry><entry><title type="html">Got your invitation</title><link href="https://www.marcgalbraith.com/2014/04/29/got-your-invitation.html" rel="alternate" type="text/html" title="Got your invitation" /><published>2014-04-29T00:00:00+00:00</published><updated>2014-04-29T00:00:00+00:00</updated><id>https://www.marcgalbraith.com/2014/04/29/got-your-invitation</id><content type="html" xml:base="https://www.marcgalbraith.com/2014/04/29/got-your-invitation.html"><![CDATA[<p>In the consulting world, on a regular basis, I see what could be best described as lecturing. In particular my observations are that there’s a stronger presence of this behaviour in the technology sector; a silicon valley obsession. Organisations hire consultants for their expertise, they want help from them and not a lecture. As a consultant I’ll admit in my past I’ve fallen into this trap. And I put this down to bad theory.</p>

<p>In the day to day of getting things done There are those times when you happen to trip into an argument over a point, process, strategy, technique or idea. You don’t mean to come across this way, it’s just that you feel like you have something to bring to the table and don’t want to miss the opportunity. A feeling of confidence, quite rightly so, you think you’re the expert, been there before, you know what to do.</p>

<p>But wait a moment, did you just notice the body language of the client. They’re showing little interest in you and what’s being said, defensive to your suggestions, they cut you off. So you try harder, get a little emotional about their lack of interest or position; maybe you think “Can’t they see what I see? Just do what I say?”</p>

<p>It’s a frustrating moment, so how could we avoid these types of situations?</p>

<p>A method I use is an invitational check, simply put I ask myself; “Do I have an invitation to talk through the advice I have in mind?” The invitation is a metaphor for trust and without it your advice is worthless. I’ve learnt this the hard way in my early days assuming that because the client hired me, surely they trust me already? In reality the client has only opened the door to building trust. Advice to a client is only valuable if it comes from a trustworthy source. To avoid the above scenario is to be conscious of your trust building methods and not how cool your advice is.</p>

<p>What does building trust look like?</p>

<p>They are many possibilities to what this would look like, context will be the determining factor. However a model I have found universal and independent of contexts is the <a href="http://www.amazon.com/The-Skilled-Helper-Problem-Management-Opportunity-Development/dp/1285065719">Skilled Helper Egan Model</a></p>

<p>In this model building trust is to focus on the problem and the connected opportunities, as seen by the client, it’s important that you empathise with what the client knows and feels about that knowledge; perspective is key. I’ve learnt that it helps, as a starting point, to get things out on the table, ask them about what they are seeing.</p>

<p>It then opens the door for the client to talk about their stories in relation to the problem. Quite often story telling around the problem leads to new truths for the client as related stories pop up, your understanding and empathy to these stories will strengthen your relationship. As the stories emerge ask for situational specifics, thoughts, behaviours and emotions. Here you are seeking clarity, replaying what you understand and using the client’s language, remembering to stay in their world without correcting them; let their own words emerge onto the opportunity canvas.</p>

<p>The more clarity in the story the sharper the actions will be on what to do next. The “what to do next” is where you can ask great questions like “So what might be keeping you from doing what you want to do?” and “What options have you considered?”. I have found, surprisingly, these open helpful like questions will generate invitations for advice to get your expertise leveraged.</p>

<p>Trust doesn’t happen overnight, but I would rather a client have my trust than risk appearing arrogant and unhelpful to their situation.</p>]]></content><author><name></name></author><category term="consulting" /></entry></feed>