<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mocoso - Joel Chippindale's blog</title><description>Recent posts from Joel Chippindale's infrequent reckons</description><link>https://blog.mocoso.co.uk/</link><atom:link href="https://blog.mocoso.co.uk/feed.xml" rel="self" type="application/rss+xml"/><pubDate>Sat, 30 Dec 2023 00:00:00 +0000</pubDate><lastBuildDate>Tue, 30 Jun 2026 11:01:56 +0000</lastBuildDate><item><title>Take aways from LeadDev Berlin &amp;#39;23</title><description><![CDATA[<p>I really enjoyed attending and <a href="/posts/talks/take-back-control-of-code-quality/">speaking at LeadDev
Berlin</a> in 2023.</p>
<p>Here are just a few of the things that I took away from the conference.</p>
<h2 id="when-to-make-quick-decisions">When to make quick decisions</h2>
<p>I learned the most from Nicky Thompson&rsquo;s excellent talk, &ldquo;Making work (and
life) less stressful by making better decisions&rdquo;. This was jam packed with
information to help us understand how our brains work (both for and against us)
when it comes to decision making and useful advice and models to help us make
better decisions.</p>
<p>One of the many useful things that she shared was the HOT method for thinking
about whether it making a quick decision makes sense.</p>
<ol>
<li>How <strong>H</strong>appy would you be with the decision in a year?</li>
<li>Would you be <strong>O</strong>kay if this was the only option?</li>
<li>Is it a <strong>T</strong>wo-way door? (Can you reverse the decision?)</li>
</ol>
<p><strong><a href="https://www.youtube.com/watch?v=uxSBdOe4t2A">Video</a></strong> / <strong><a href="https://www.knotnicky.com/lead-dev-berlin-2023/">Slides
and transcript</a></strong></p>
<h2 id="lowering-the-bar-on-managing-incidents">Lowering the bar on Managing incidents</h2>
<p>Martha Lambert&rsquo;s brilliant talk, &ldquo;We should all be declaring more incidents&rdquo;,
really challenged my thinking.</p>
<p>She made an compelling case for the value of lowering the bar on incidents and
having many more of them. We get good at things we do often and so having more
incidents means that we get better at dealing with them. Also, this helps us
respond more quickly and communicate better with users and stake holders and so
builds trust and empathy.</p>
<p>As someone who has prided themselves on making incidents a rarity in my teams
this was uncomfortable. But I am also aware that I have been encouraging my
teams to lean into &ldquo;never being wrong for long&rdquo;, over &ldquo;releasing zero bugs in
production&rdquo;, for years, which lines up with having more incidents. This makes
me want to experiment with lowering the bar on incidents in future.</p>
<p><strong><a href="https://www.youtube.com/watch?v=K3muwBw2dR8">Video</a></strong></p>
<h2 id="challenging-my-people-pleasing-behaviours">Challenging my people pleasing behaviours</h2>

















<picture class="hero-image">
  <source srcset="/leaddev-berlin-23/hero.nikita-rathi_hu_ce104c409f349e55.webp" type="image/webp" />
  <source srcset="/leaddev-berlin-23/hero.nikita-rathi_hu_7ae7af64dfc185f5.jpg" type="image/jpeg" />
  <img src="/leaddev-berlin-23/hero.nikita-rathi_hu_7ae7af64dfc185f5.jpg" alt="Nikita Rathi on stage with a slide with 5 different emojis" />
</picture>
<p>Nikita Rathi&rsquo;s talk, &ldquo;Pleasing everyone, except yourself: Overcoming
people-pleasing tendencies to become a stronger engineering leader&rdquo;, was really affecting.</p>
<p>It was delivered with grace, vulnerability and empathy and made me think about
the problems that my own &ldquo;people pleasing&rdquo; traits create for me and how I
judgemental I can be about these behaviours in myself.</p>
<p>I can&rsquo;t do justice to the power of this talk in words and so encourage you to
simply <a href="https://leaddev.com/leaddev-berlin-2023/pleasing-everyone-except-yourself-overcoming-people-pleasing-tendencies-become">watch her amazing
talk</a>.</p>
<p><strong><a href="https://leaddev.com/leaddev-berlin-2023/pleasing-everyone-except-yourself-overcoming-people-pleasing-tendencies-become">Video and
slides</a></strong></p>
<h2 id="building-a-culture-of-learning">Building a culture of learning</h2>
<p>My favourite quote of the conference came from Sorrel Harriet in her talk,
&ldquo;Learning is a core capability of software teams; here’s how to measure it&rdquo;.</p>
<blockquote>
<p>We need to care less about progressing individuals along predictable
pathways, and more about creating an environment and culture in which people
will learn continuously and autonomously.</p>
</blockquote>
<p><strong><a href="https://www.youtube.com/watch?v=Jf7MX72qHn4">Video</a></strong></p>

















<picture class="hero-image">
  <source srcset="/leaddev-berlin-23/hero.hywel-carver_hu_5b6074f2759f573.webp" type="image/webp" />
  <source srcset="/leaddev-berlin-23/hero.hywel-carver_hu_a04d412408682da7.jpg" type="image/jpeg" />
  <img src="/leaddev-berlin-23/hero.hywel-carver_hu_a04d412408682da7.jpg" alt="Hywel Carver on stage with a slide outlining SCALE" />
</picture>
<p>I also enjoyed Hywel Carver&rsquo;s talk, &ldquo;How to completely fail at learning&rdquo;. His
advice to &ldquo;SCALE&rdquo; learning looks spot on:</p>
<ul>
<li><strong>S</strong>olve problems</li>
<li><strong>C</strong>ontinuous learning</li>
<li><strong>A</strong>ssess what&rsquo;s needed</li>
<li><strong>L</strong>imit scope</li>
<li><strong>E</strong>ngage with humans</li>
</ul>
<p>And I can&rsquo;t help but notice that coaching fits very well with this in terms of
supporting learning.</p>
<p><strong><a href="https://www.youtube.com/watch?v=zKd5bK7VONM">Video</a></strong></p>
<h2 id="other-topics">Other topics</h2>
<p>There were too many other great talks to mention them all. But two particularly
thought provoking ones that stood out were Amy Roberts-Hoad&rsquo;s talk, <a href="https://leaddev.com/leaddev-berlin-2023/video/go-flow-embracing-and-supporting-menstrual-needs-in-tech">&ldquo;Go with
the flow: Embracing and supporting menstrual needs in
tech&rdquo;</a>,
and Birgitta Boeckeler&rsquo;s talk, <a href="https://www.youtube.com/watch?v=pajcn6ApyD8">&ldquo;AI for software development: A reality
check&rdquo;</a>.</p>
<p>All in all it was a privilege to be there. Thanks to all the staff, speakers,
attendees and everyone who I met and made me feel so welcome.</p>
<p>I&rsquo;ve really enjoyed getting back to going to conferences and 2023 has been a
good year with Brighton Ruby, CTO Craft Con in May and November, and LeadDev
Berlin. I am looking forward to 2024 with <a href="https://conference.ctocraft.com/london-2024/">CTO Craft
Con</a> in May and LeadDev and
LeadingEng in London in the summer.</p>
]]></description><pubDate>Sat, 30 Dec 2023 00:00:00 +0000</pubDate><link>https://blog.mocoso.co.uk/posts/leaddev-berlin-23/</link><guid isPermaLink="true">https://blog.mocoso.co.uk/posts/leaddev-berlin-23/</guid></item><item><title>Take back control of your code quality</title><description><![CDATA[<h2 id="summary">Summary</h2>
<p>The best engineering leaders know that you can have both speed and quality when
developing software. Indeed, the only way to keep up the pace of delivery is to
build high quality software. Everybody wins.</p>
<p>However, all too often, it can feel like you are not in control of the quality
of your code. You can feel like your team doesn’t have time to develop high
quality code. You can feel like you are forced to make a trade off between the
quality of code and speed of development. And when you do you typically end up
with neither.</p>
<p>How do you take back control of your code quality? How do you get your team and
stakeholders to believe that this will enable you to develop faster? What
practices do you need to put in place to make this true&gt;</p>
<p>In this talk I illustrate the dynamics between team members and with
stakeholders that lead teams to lose control of code quality.</p>
<p>And I share a set of practices and techniques that you can take away and use to
support your team to take control of their code quality, deliver rapidly and
keep stakeholders on your side.</p>
<h2 id="transcript">Transcript</h2>










<div class="slide">
  <div>
    
    













<picture class="">
  <source srcset="/take-back-control-of-code-quality/slides.001_hu_f13314ee6b238332.webp" type="image/webp" />
  <source srcset="/take-back-control-of-code-quality/slides.001_hu_37520745c01cfff5.png" type="image/png" />
  <img src="/take-back-control-of-code-quality/slides.001_hu_37520745c01cfff5.png" alt="Slide 001" />
</picture>
    
  </div>
</div>

<div class="transcript">
  <div>
    I&rsquo;ve been leading software development teams for over two decades and I work as
a CTO coach and advisor and so I&rsquo;ve worked with many, many engineering teams
over the years.
  </div>
</div>







<div class="slide">
  <div>
    
    













<picture class="">
  <source srcset="/take-back-control-of-code-quality/slides.002_hu_e81e096743988a19.webp" type="image/webp" />
  <source srcset="/take-back-control-of-code-quality/slides.002_hu_8751157b3b9181bb.png" type="image/png" />
  <img src="/take-back-control-of-code-quality/slides.002_hu_8751157b3b9181bb.png" alt="Slide 002" />
</picture>
    
  </div>
</div>

<div class="transcript">
  <div>
    <p>And all too often I find that the engineering team ends up in a tug of war
against the rest of the company. You have engineering and they&rsquo;re pulling
really hard in one direction. They&rsquo;re saying, &ldquo;We must slow down. We must focus
on our code quality. We must keep our development sustainable.&rdquo; And on the
other side, you&rsquo;ve got product, marketing, design, and sales, all pulling in
the opposite direction and saying, &ldquo;We must go faster&rdquo;. We must make the
company a success. And loads of effort and energy goes into this tug of war.</p>
<p>Both sides feel like they need to defend themselves, like their expertise is
not being respected, like they&rsquo;re not being supported. Neither engineering nor
the other disciplines feel like they&rsquo;re being listened to. And yet we&rsquo;re all
trying to make this a success.</p>
<p>This often results in code bases that are hard to change, where it&rsquo;s really
difficult to be productive and teams that are no fun to work in.</p>

  </div>
</div>







<div class="slide">
  <div>
    
    













<picture class="">
  <source srcset="/take-back-control-of-code-quality/slides.003_hu_b1397fdc8cae79f7.webp" type="image/webp" />
  <source srcset="/take-back-control-of-code-quality/slides.003_hu_3713ebf224719d68.png" type="image/png" />
  <img src="/take-back-control-of-code-quality/slides.003_hu_3713ebf224719d68.png" alt="Slide 003" />
</picture>
    
  </div>
</div>

<div class="transcript">
  <div>
    <p>Our responsibility as engineering leaders is not just about bringing technical
expertise to our companies. It&rsquo;s about creating alignment and trust between our
teams and the rest of the business so they can work together more
effectively.</p>
<p>We need to find a way of stopping pulling against one another and
feel like we&rsquo;re working side by side on the same problem.</p>
<p>This is not easy. In this talk, I&rsquo;m going to share some of the perspectives and
practices that have helped me and the teams I&rsquo;ve worked with build trust and
bridge this gap.</p>

  </div>
</div>







<div class="slide">
  <div>
    
    













<picture class="">
  <source srcset="/take-back-control-of-code-quality/slides.004_hu_13032808038f2d14.webp" type="image/webp" />
  <source srcset="/take-back-control-of-code-quality/slides.004_hu_ff91c93f30769558.png" type="image/png" />
  <img src="/take-back-control-of-code-quality/slides.004_hu_ff91c93f30769558.png" alt="Slide 004" />
</picture>
    
  </div>
</div>

<div class="transcript">
  <div>
    <p>High quality code is code that is easy to keep changing.</p>
<p>This is the definition of high quality code that keeps you aligned with the
rest of the business. And I think it&rsquo;s the only definition that matters.</p>
<p>It doesn&rsquo;t matter if you have a microservices architecture or a monolith. It
doesn&rsquo;t matter if you&rsquo;re using a functional programming language or an object
orientated programming language. It doesn&rsquo;t matter if you&rsquo;ve got a hundred
percent test coverage or not. It doesn&rsquo;t matter if you&rsquo;ve written your code to
scale to a billion users, unless of course you have a billion users.</p>
<p>What matters is that your code is easy to keep changing.</p>

  </div>
</div>







<div class="slide">
  <div>
    
    













<picture class="">
  <source srcset="/take-back-control-of-code-quality/slides.005_hu_f0ed0b00387cb356.webp" type="image/webp" />
  <source srcset="/take-back-control-of-code-quality/slides.005_hu_23ba13ec455bdd22.png" type="image/png" />
  <img src="/take-back-control-of-code-quality/slides.005_hu_23ba13ec455bdd22.png" alt="Slide 005" />
</picture>
    
  </div>
</div>

<div class="transcript">
  <div>
    <p>I want to show you some made up graphs to help illustrate why this is so
important.</p>
<p>The first made up graph is for a typical software development project.</p>
<p>With time along the horizontal axis and pace of delivery on the vertical
axis.</p>
<p>To begin with, it&rsquo;s a greenfield project. It&rsquo;s exciting for you and your team.
You&rsquo;re delivering lots, but slowly the coat base becomes larger and more
complex and more brittle and it becomes harder and harder to make changes. You
and your team start to feel like you&rsquo;re wadding through mud. And to begin with,
it&rsquo;s at your ankles and then it&rsquo;s at your knees, and then it&rsquo;s at your waist
and it&rsquo;s at your chest and your team is working harder than ever and making
less progress than ever. The pace becomes glacial. Other teams lose faith in
your ability to deliver.</p>
<p>I&rsquo;ve been responsible for projects like this.</p>

  </div>
</div>







<div class="slide">
  <div>
    
    













<picture class="">
  <source srcset="/take-back-control-of-code-quality/slides.006_hu_db9f1b950e459156.webp" type="image/webp" />
  <source srcset="/take-back-control-of-code-quality/slides.006_hu_171c543451c6fe1a.png" type="image/png" />
  <img src="/take-back-control-of-code-quality/slides.006_hu_171c543451c6fe1a.png" alt="Slide 006" />
</picture>
    
  </div>
</div>

<div class="transcript">
  <div>
    <p>Let&rsquo;s contrast this with another software development project. The blue line on
the graphs above represents this much higher quality code base.</p>
<p>You&rsquo;ll notice that the pace of delivery is slower to begin with.</p>
<p>You and your team are focusing more on code quality to make it easy to build on
the code that you are writing. There&rsquo;s a much greater focus on refactoring and
things. And this enables you and your team to maintain that pace forever.</p>
<p>Taking this approach makes us and our teams feel smarter and we&rsquo;re able to
deliver far more. Everybody wins.</p>
<p>I haven&rsquo;t put scales on these graphs, but in my experience that crossover point
happens much sooner than we expect. Typically happens hours or days or weeks
into a project rather than months or years.</p>
<p>How long is the code base you and your team are working on, been around? How
long are you planning for it to be around?</p>
<p>You need to be heading along that blue line, if it&rsquo;s months or years.</p>

  </div>
</div>







<div class="slide">
  <div>
    
    













<picture class="">
  <source srcset="/take-back-control-of-code-quality/slides.007_hu_878a9a422bb29d14.webp" type="image/webp" />
  <source srcset="/take-back-control-of-code-quality/slides.007_hu_d6b5b65225207a16.png" type="image/png" />
  <img src="/take-back-control-of-code-quality/slides.007_hu_d6b5b65225207a16.png" alt="Slide 007" />
</picture>
    
  </div>
</div>

<div class="transcript">
  <div>
    <p>You don&rsquo;t have time to develop low quality code.</p>
<p>High quality code enables you to go fast forever.</p>
<p>Code quality is invisible to the rest of the company. So it&rsquo;s our
responsibility as engineers to make sure we do this. Our company expects us to
do this. They trust us to do this.</p>
<p>The graphs I showed implied that it&rsquo;s a single decision at the beginning of the
project, develop lower quality code or higher quality code.</p>
<p>But that&rsquo;s not quite true. We face this choice every time we make a change to
our code base. And every time there is a temptation to go a little bit
faster today and pay for it forever.</p>
<p>I&rsquo;m going to share with you some of the practices that help us build trust and
the discipline to keep us on the path to high quality code.</p>

  </div>
</div>







<div class="slide">
  <div>
    
    













<picture class="">
  <source srcset="/take-back-control-of-code-quality/slides.008_hu_5a57f4de73d4c431.webp" type="image/webp" />
  <source srcset="/take-back-control-of-code-quality/slides.008_hu_c6242a099832cb15.png" type="image/png" />
  <img src="/take-back-control-of-code-quality/slides.008_hu_c6242a099832cb15.png" alt="Slide 008" />
</picture>
    
  </div>
</div>

<div class="transcript">
  <div>
    Firstly, the scouts have a rule, which is to always leave the campsite cleaner
than when they arrived.
  </div>
</div>







<div class="slide">
  <div>
    
    













<picture class="">
  <source srcset="/take-back-control-of-code-quality/slides.009_hu_7ff766ec049e136f.webp" type="image/webp" />
  <source srcset="/take-back-control-of-code-quality/slides.009_hu_938e273ae5ff4fff.png" type="image/png" />
  <img src="/take-back-control-of-code-quality/slides.009_hu_938e273ae5ff4fff.png" alt="Slide 009" />
</picture>
    
  </div>
</div>

<div class="transcript">
  <div>
    <p>We can apply this rule to code. Improve your code quality with every change
that you make, every commit, every pull, request, every feature.</p>
<p>This means that your team will be working on code quality all of the time. It&rsquo;s
part of what you do. It&rsquo;s part of the cost of work.</p>
<p>And what counts as higher quality code is a judgement call. This will provoke
some really interesting conversations in your teams about what it means for
this code to be easier to change in future. These conversations will help
develop a taste in your team for higher quality code.</p>
<p>The scout rule needs to be the norm if you&rsquo;re gonna develop higher quality
code.</p>

  </div>
</div>







<div class="slide">
  <div>
    
    













<picture class="">
  <source srcset="/take-back-control-of-code-quality/slides.010_hu_e183e867518eb4a2.webp" type="image/webp" />
  <source srcset="/take-back-control-of-code-quality/slides.010_hu_e50187e95f9114e4.png" type="image/png" />
  <img src="/take-back-control-of-code-quality/slides.010_hu_e50187e95f9114e4.png" alt="Slide 010" />
</picture>
    
  </div>
</div>

<div class="transcript">
  <div>
    <p>Secondly, if your company is successful, there will always be many, many more
good ideas for changes that you could make to your code than than you have time
to implement, however big your team is.</p>
<p>It&rsquo;s not about removing that pressure to go faster because that will always be
there. It&rsquo;s about thinking about how we respond to that pressure.</p>
<p>Do we immediately go, let&rsquo;s just make the code lower quality, or do we
negotiate on scope? Because cutting the amount that we are delivering is the
only sustainable way to reliably deliver sooner.</p>

  </div>
</div>







<div class="slide">
  <div>
    
    













<picture class="">
  <source srcset="/take-back-control-of-code-quality/slides.011_hu_c69c1ad6f571e0cb.webp" type="image/webp" />
  <source srcset="/take-back-control-of-code-quality/slides.011_hu_df97c8aad3905714.png" type="image/png" />
  <img src="/take-back-control-of-code-quality/slides.011_hu_df97c8aad3905714.png" alt="Slide 011" />
</picture>
    
  </div>
</div>

<div class="transcript">
  <div>
    <p>When we&rsquo;re asked can we go faster, we need to be asking ourselves this
question, how can we deliver less and have a similar impact?</p>
<p>This gives us an opportunity to work creatively with other disciplines, with
marketing, with sales, with product, with design, to come up with creative
solutions to this problem.</p>
<p>It&rsquo;s really important that we as engineers show that we&rsquo;re on side with a goal,
that we want to have the impact, that we understand the need for the impact.
And it&rsquo;s important that we listen to the ideas of other disciplines at this
stage. If we listen to them, they&rsquo;ll listen to us. This gives other disciplines
agency. It means they&rsquo;re not just faced with engineers that say, &ldquo;no&rdquo;, or
engineers that silently sacrifice quality and later on complain that they&rsquo;re
drowning in technical debt.</p>
<p>More importantly, this often enables us to deliver sooner, to learn faster from
our customers and build less. And our systems are easier to maintain if we
build less code.</p>

  </div>
</div>







<div class="slide">
  <div>
    
    













<picture class="">
  <source srcset="/take-back-control-of-code-quality/slides.012_hu_36c26a20a4e0f5ef.webp" type="image/webp" />
  <source srcset="/take-back-control-of-code-quality/slides.012_hu_f1c2c1b7b705a5f5.png" type="image/png" />
  <img src="/take-back-control-of-code-quality/slides.012_hu_f1c2c1b7b705a5f5.png" alt="Slide 012" />
</picture>
    
  </div>
</div>

<div class="transcript">
  <div>
    <p>The last practice I want to share with you is quantifying your case for change.</p>
<p>Inevitably, however good you are at those previous practices, there will be
times when you need to make bigger changes to improve the quality of your code
base.</p>

  </div>
</div>







<div class="slide">
  <div>
    
    













<picture class="">
  <source srcset="/take-back-control-of-code-quality/slides.013_hu_913d85452208b790.webp" type="image/webp" />
  <source srcset="/take-back-control-of-code-quality/slides.013_hu_9c3189eabf30b40b.png" type="image/png" />
  <img src="/take-back-control-of-code-quality/slides.013_hu_9c3189eabf30b40b.png" alt="Slide 013" />
</picture>
    
  </div>
</div>

<div class="transcript">
  <div>
    <p>Like Sahana said <a href="https://leaddev.com/leaddev-berlin-2023/video/practical-tech-debt-prioritization">in her earlier
talk</a>,
you need to think about the impact of this.</p>
<p>High quality code is about enabling us to go faster. What are we prepared to
invest? This is typically measure in time for engineers. It&rsquo;s one of the most
valuable things in your company. And what are you going to get in return?
Again, typically this is saving the engineering team time.</p>
<p>It&rsquo;s okay that these are estimates you don&rsquo;t know the exact
answers to how long something&rsquo;s going take or how much time it will save, but
it&rsquo;s really important that you make these estimates. If you don&rsquo;t make them,
other people will assume the impact is zero or negligible. So you need to fill
in that gap.</p>
<p>Think of it as a bet and making these will build trust and get
other disciplines onside.</p>
<p>This will get your work on the roadmap. This isn&rsquo;t a
separate technical roadmap and I encourage you to start small to build trust.</p>
<p>Start with something that is two weeks rather than six months of investment
you&rsquo;re asking for.</p>

  </div>
</div>







<div class="slide">
  <div>
    
    













<picture class="">
  <source srcset="/take-back-control-of-code-quality/slides.014_hu_a58fb2a8e2f10d26.webp" type="image/webp" />
  <source srcset="/take-back-control-of-code-quality/slides.014_hu_d006decd90010c16.png" type="image/png" />
  <img src="/take-back-control-of-code-quality/slides.014_hu_d006decd90010c16.png" alt="Slide 014" />
</picture>
    
  </div>
</div>

<div class="transcript">
  <div>
    <p>To round up.</p>
<p>High quality code is easy to keep changing and it enables you to go fast
forever.</p>
<p>There are three practices
that will support you with this</p>
<ol>
<li>The scout rule</li>
<li>Negotiate on scope, not
quality</li>
<li>Quantify your case for change</li>
</ol>
<p>Take a moment now to have a think. What can you do to take some of these
perspectives and practices back to your teams and help them feel more supported
and to go fast forever?</p>
<p>Thank you very much for listening.</p>

  </div>
</div>


<div style="clear: both;"></div>
]]></description><pubDate>Mon, 04 Dec 2023 00:00:00 +0000</pubDate><link>https://blog.mocoso.co.uk/posts/talks/take-back-control-of-code-quality/</link><guid isPermaLink="true">https://blog.mocoso.co.uk/posts/talks/take-back-control-of-code-quality/</guid></item><item><title>How does a CTO know when they need a coach?</title><description><![CDATA[<p>In the words of Bill Gates, <a href="https://www.youtube.com/watch?v=XLF90uwII1k">&ldquo;Everyone needs a
coach&rdquo;</a>. This sounds like a
slightly flippant answer. Let me expand on it with my own experience.</p>
<p>I am proud of my work in all the roles that I had as a start-up and scale-up
CTO.</p>
<p>But I learned how to be a CTO the expensive way.</p>
<p>By this I mean that, for most of my career as a CTO, I learned by making
mistakes again and again and slowly improving over time. These mistakes were
paid for by the companies that I worked in. These were also paid for by my
teams and I because of impact that these mistakes had on both their and my
wellbeing.</p>
<p>As a start-up or scale-up CTO we constantly face new challenges and need to
learn new skills.</p>
<p>Making mistakes is inevitable when we are learning. But we can learn faster.
And we can reduce the costs of our mistakes and our learning for the companies
we work for and for ourselves and our teams.</p>
<p>Much later in my career I started working with a professional coach.</p>
<p>I continued to make mistakes. But my coach supported me to reduce the negative
impact of these mistakes by avoiding some common pitfalls and by identifying
when things were going wrong sooner. They helped me to accelerate my
development by enabling me to learn faster from my experiences. They enabled me
to make better decisions by better understanding myself and the situations I
was in. They supported me to build better relationships with my teams and
peers. They also helped me feel calmer, more in control and less alone when I
was finding my role very stressful.</p>
<p>These benefits were cumulative. The value of the improvements in my performance
as a CTO vastly outweighed the costs of coaching for the company I worked for.</p>
<p>I also benefited personally, in both the development of my skills and in my
awareness and acceptance of myself and of those around me.</p>
<p>If I was able to go back in time to the point when I first became a CTO and
offer myself one piece of advice, it would be to get the support of a CTO
Coach.</p>
<p>A CTO needs a CTO coach if they want to improve their performance. If they want
to serve their teams better. If they want to learn faster.</p>
<p><em>Thanks to <a href="https://www.linkedin.com/in/marc-adler/">Marc Adler</a> for asking me
this question in an AMA (Ask Me Anything) on the <a href="https://randsinrepose.com/welcome-to-rands-leadership-slack/">Rands Leadership
Slack</a> and
inspiring me to write this article</em></p>
]]></description><pubDate>Mon, 26 Jun 2023 00:00:00 +0000</pubDate><link>https://blog.mocoso.co.uk/posts/how-does-a-cto-know-when-they-need-a-coach/</link><guid isPermaLink="true">https://blog.mocoso.co.uk/posts/how-does-a-cto-know-when-they-need-a-coach/</guid></item><item><title>What motivates software engineers?</title><description><![CDATA[<p>There is a common stereotype that software engineers are primarily motivated by
the opportunity to work with cutting-edge technology.</p>
<p>Falling for this stereotype can lead to a sense of helplessness about
motivating engineers because, &ldquo;we can&rsquo;t introduce cutting-edge technology
here&rdquo;. Or, even worse, the introduction of a new technology solely to satisfy
this assumption.</p>
<p>In my experience, just like other people, engineers have a diverse range of
motivations. These extend well beyond technology.</p>
<p>To understand what motivates the engineers that you work with you need to ask
them. What are they most proud of? What energises them? What motivates them?
What do they find most rewarding? What does a fulfilling day at work look like
for them?</p>
<p>It is also valuable to ask about factors that demotivate and frustrate them, as
reducing these can have a significant impact on their motivation.</p>
<p>What are key motivations for the engineers that you work with? Ask them and you
will find out.</p>
]]></description><pubDate>Fri, 02 Jun 2023 00:00:00 +0000</pubDate><link>https://blog.mocoso.co.uk/posts/what-motivates-software-engineers/</link><guid isPermaLink="true">https://blog.mocoso.co.uk/posts/what-motivates-software-engineers/</guid></item><item><title>6 tips for improving your CV</title><description><![CDATA[<p>Your CV (or résumé) tells a story. You want the story that it tells to be that
you are an excellent candidate for the role that you are applying for. Your
CV&rsquo;s most important job is to make sure that you are selected to get an initial
interview.</p>
<p>I&rsquo;ve reviewed hundreds of CVs over the years. Applicants who make it easy for
the person reviewing their CV to see that they are a great match the role have
a much better chance of getting an interview.</p>
<p>Here are some things you can do to improve the story your CV tells to the
person who is reviewing your application.</p>
<ol>
<li>
<h3 id="make-it-quick-to-scan-and-easy-to-read">Make it quick to scan and easy to read</h3>
<p>The design does not have to be beautiful but your reader likely to be in a
rush and so you need to make it easy to navigate and read.</p>
<p>Keep it simple. Make sure that it is not too busy. Make it easy to pick out
keywords (bold/underline). Keep it reasonably well spaced.</p>
<p>Be careful about using jargon. Who is going to be reviewing your CV? Are
they likely to understand the jargon you are using? If not, avoid it.</p>
<p>Keep it to less than three pages with all the most important information on
the first page.</p>
</li>
<li>
<h3 id="show-that-you-meet-the-requirements-for-the-role">Show that you meet the requirements for the role</h3>
<p>The person reviewing your CV should not have to guess whether you meet the
requirements of the role that you are applying for.</p>
<p>The person initially reviewing your CV maybe the hiring manager, or it maybe
a recruiter or a member of the HR team. Either way they are unlikely to
spend much time deciding on whether you are a reasonable candidate. Make it
really easy for the person reviewing your application to see that you are
right for the role they are hiring for. This may mean adapting your CV to
the requirements of this particular role.</p>
<p>Review the requirements of the role you are applying for. If necessary,
update your CV to make it clear that you meet these requirements. You may
also find it valuable to update the summary section in your CV (see the next
point) to ensure it tells a story about how you are the right person for
this role.</p>
</li>
<li>
<h3 id="include-a-brief-summary">Include a brief summary</h3>
<p>The person reviewing your application will form a story about you from your
CV. Make it easy for them by writing a few sentences to tell the compelling
story that you want them to see.</p>
<p>This is an opportunity for you to tell the reviewer where you are heading in
your career and why their role is right for you.</p>
</li>
<li>
<h3 id="include-your-achievements">Include your achievements</h3>
<p>The person reviewing your application wants to know what you are capable of
and to be confident that you will be able to deliver in the role that they
are looking to fill.</p>
<p>Build their confidence by telling the reviewer what you have achieved in
your roles. For each role you list in your CV make it clear what your impact
was and why this mattered.</p>
</li>
<li>
<h3 id="include-testimonials">Include testimonials</h3>
<p>The people who have worked with you in the past know better than anyone how
great you are to work with. Ask some of them for testimonials which show off
your relevant strengths.</p>
<p>Include one or two of these in your CV to give the reviewer more confidence
that you are the right person for their role.</p>
<p>These testimonials will also build your own confidence.</p>
</li>
<li>
<h3 id="get-feedback">Get feedback</h3>
<p>It can be very hard for us to describe ourselves and our own achievements.
Another person looking at your CV will be able to give you a clearer view of
how you are presenting yourself. They are also more likely to spot mistakes
and typos.</p>
<p>Share your CV and the description of the role you wish to apply for with
some people that you trust and ask for their feedback and advice. How would
they view your CV if you were applying for the role? What is missing? What
feels irrelevant? What changes do they suggest?</p>
</li>
</ol>
<p>Good luck with your applications.</p>
<p><em>Note: If you are a hiring manager who is finding it difficult to make
decisions about whether to interview candidates based on their CV/cover letters
then it might be worth considering asking specific questions of candidates
rather than asking for a CV. <a href="https://www.collaborativefuture.co.uk/blog/william-joseph-developer-hiring">Collaborative Future have shared their
experiences of taking a CV-less approach to
hiring</a></em>.</p>
]]></description><pubDate>Wed, 04 Jan 2023 00:00:00 +0000</pubDate><link>https://blog.mocoso.co.uk/posts/tips-for-improving-your-cv/</link><guid isPermaLink="true">https://blog.mocoso.co.uk/posts/tips-for-improving-your-cv/</guid></item><item><title>Technical debt is a terrible metaphor</title><description><![CDATA[<p>A good metaphor helps us communicate our ideas by providing an easier way to
approach them. A bad metaphor gets in the way of clear communication.</p>
<p>“Technical debt” is a metaphor that is often used in software development as
part of trying to explain some of the trade-offs we make when designing
software, and the costs that we incur because of the lack of quality in our
software.</p>
<p>However, the metaphor “technical debt” often hides a whole host of
misunderstandings.</p>
<p>Here are some of the many ways that this metaphor confuses communication.</p>
<p>When people hear the “technical debt” metaphor, it suggests to them that&hellip;</p>
<ol>
<li>&hellip;the cost will be predictable, like a financial loan’s interest payments.
Yet developers know that the cost of “technical debt” is unpredictable. It
is hard to assess up front and is likely to vary as the context that they
are working in changes.</li>
<li>&hellip;it is cheap, because financial debt has been cheap in recent decades.
Yet developers know that “technical debt” is often very expensive.</li>
<li>&hellip;we are making explicit choices about when to accumulate it, like
choosing to take out a loan. Yet developers know that “technical debt” is
often accumulated without discussion or explicit decision making.</li>
<li>&hellip;it is quantifiable and constant, like financial debt. Yet developers
know that it is not quantifiable in any meaningful way and it can be
radically changed by shifts in external context.</li>
<li>&hellip;each bit of “technical debt” is interchangeable, like money. Yet
developers know that some bits of “technical debt” are much more costly
than others and it matters which bits you choose to pay off.</li>
<li>&hellip;there can be code with zero “technical debt”. Yet developers know that
all code is a liability and all valuable code has “technical debt”. This
sets unrealistic expectations for developers and stakeholders.</li>
</ol>
<p>The biggest problem in communication is the illusion that it has taken place.
With so many misunderstandings built into the metaphor of “technical debt”, is
it any wonder that conversations about prioritising work on “technical debt”
are frustrating?</p>
<p>If you are finding your own conversations about “technical debt”
frustrating then take some time to reflect on whether any of these
misunderstandings might be occurring. If they are, then it is
probably worth explicitly talking about them.</p>
<p>An alternative is not to use a metaphor at all. Talk in concrete terms. Talk
about the specific work that you recommend to and/or are carrying out to
improve code quality and the positive impact that this will have on developer
productivity.</p>
]]></description><pubDate>Tue, 08 Nov 2022 00:00:00 +0000</pubDate><link>https://blog.mocoso.co.uk/posts/tech-debt-is-a-terrible-metaphor/</link><guid isPermaLink="true">https://blog.mocoso.co.uk/posts/tech-debt-is-a-terrible-metaphor/</guid></item><item><title>Mandlebrot mini plots</title><description><![CDATA[<p><a href="https://github.com/cjbayesian/datascience-utils/blob/master/Mandelbrot_orbits.ipynb">Corey Chiver&rsquo;s Mandlebrot
Orbits</a>,
are a fascinating way of visualising the Mandlebrot set.</p>
<p>I wrote <a href="https://mandlebrot-mini-plots.mocoso.co.uk">a version in
Javascript</a> to make them
easy to explore in your browser.</p>
<p>Enjoy.</p>
]]></description><pubDate>Sat, 09 May 2020 00:00:00 +0000</pubDate><link>https://blog.mocoso.co.uk/posts/mandlebrot-mini-plots/</link><guid isPermaLink="true">https://blog.mocoso.co.uk/posts/mandlebrot-mini-plots/</guid></item><item><title>Running an agile principles study group</title><description><![CDATA[<p>When I joined Unmade, our Engineering Team had already adopted a number
of practices associated with agile software development, for example
continuous deployment, daily stand ups and regular retrospectives.
However these were being carried out in isolation from other disciplines
in the company and so, although many were useful practices, they were
not having nearly as much impact as they could have had.</p>
<p>We set out to improve on this by adopting more agile practices across
the company. I am really proud of the way in which everyone has
embraced the changes involved and of the impact they have had in
enabling us to make better decisions and work together more effectively.</p>
<p>There were many elements to making these changes but one important part
of this was to make sure that the underlying <a href="https://agilemanifesto.org/principles.html">agile
principles</a> were well
understood and acted upon by everyone involved in making decisions about
our software. This included members of our leadership, sales, customer
success and design teams as well as our product and engineering teams.</p>
<h2 id="what-we-did">What we did</h2>
<p>One of the ways that we worked to achieve this was by running an agile
principles study group which we opened up to the whole company. We
based our study group around the excellent Troubleshooting Agile
podcast, which includes 12 episodes
(<a href="https://soundcloud.com/troubleshootingagile/the-first-agile-principle-delivering-fully">1</a>,
<a href="https://soundcloud.com/troubleshootingagile/embracing-change-maximising-validated-learning">2</a>,
<a href="https://soundcloud.com/troubleshootingagile/delivering-working-software-frequently-continuously">3</a>,
<a href="https://soundcloud.com/troubleshootingagile/agile-principle-4-business-developers-working-together-daily">4</a>,
<a href="https://soundcloud.com/troubleshootingagile/motivating-individuals-and-trusting-your-agile-team">5</a>,
<a href="https://soundcloud.com/troubleshootingagile/efficiency-effectiveness-through-face-to-face-conversation">6</a>,
<a href="https://soundcloud.com/troubleshootingagile/working-software-is-the-primary-measure-of-progress">7</a>,
<a href="https://soundcloud.com/troubleshootingagile/indefinite-sustainable-pace-vs-crunch-time-cramming">8</a>,
<a href="https://soundcloud.com/troubleshootingagile/enhancing-agility-through-technical-excellence-and-good-design">9</a>,
<a href="https://soundcloud.com/troubleshootingagile/the-art-of-agile-simplicity">10</a>,
<a href="https://soundcloud.com/troubleshootingagile/inspire-mutiny-become-a-self-organizing-agile-team">11</a>,
<a href="https://soundcloud.com/troubleshootingagile/finding-the-motivation-to-learn-stay-agile">12</a>)
that are dedicated to discussion of each of the agile principles in
turn.</p>
<p>We met every fortnight and before each study group session we would
listen to the podcast episode about the corresponding agile principle.</p>
<p>Our format for each session developed over time but, thanks to a
<a href="https://twitter.com/Jtf/status/1143785635007909894">suggestion from Jeffrey
Frederick</a>, we
settled on the following format for these sessions - the timings are
fairly rough.</p>
<ol>
<li>
<p><strong>Have one member of the study group summarise the key points made in
the podcast</strong> (5 mins). We did this to make sure the podcast was
fresh in everyone’s minds even if they had actually listened to it a
few days beforehand or in some cases had not had a chance to listen
to it.</p>
</li>
<li>
<p><strong>Discuss our understanding of the principle</strong> (15 mins). This helped
us understand how we interpreted the principle, how we understood it
to help and where we thought we might disagree with it or see
particular challenges in applying it.</p>
</li>
<li>
<p><strong>Discuss how the principles applied to us at Unmade</strong> (15 mins).
This helped us try and apply the principle to our experiences within
our company. We typically discussed examples of where we were using
this principle and where we thought it may have helped us overcome
problems we faced.</p>
</li>
<li>
<p><strong>Identify changes we want to make as a result of our reflections on
the principle</strong> (15 mins). We did this to help ensure that this was
not an abstract intellectual exercise but one that explicitly
impacted our behaviour.</p>
<p>For example, actions taken in response to our discussions of agile
principle number 5, “Build projects around motivated individuals.
Give them the environment and support they need, and trust them to
get the job done” included the following:</p>
<ul>
<li>One of our Project Managers, Sarah, ran a session to help the
cross-functional team she was leading support one another better
and feel more in control of their work. In that session they worked
to make each person’s role within the team more explicit and then
she got team members to share how they could help each other in
their roles which helped break down barriers between the
disciplines and gave team members more confidence to offer one
another support.</li>
<li>I gave a company wide talk about taking authority for decision
making to make our adoption of this principle more explicit.</li>
</ul>
</li>
</ol>
<h2 id="the-impact">The impact</h2>
<p>It has been really inspiring to see how members of the group, from all
disciplines, have gained confidence in their understanding of the agile
principles and how to apply these principles in their roles and teams. It has
also been gratifying to see that we have been finding it easier each meeting to
draw upon positive examples of how we have already been applying these
principles in our work.</p>
<p>One of our Product Managers, <a href="https://medium.com/@katiemarcus">Katie</a>,
shared the following about her experience of being part of the study
group:</p>
<blockquote>
<p>Since starting the study group, I feel we have become far more
confident about guiding our customers to rapid and regular delivery of
valuable software that meets their needs, rather than more traditional
waterfall methods which they might be more used to. For example, we
have phased out the concept of ‘UX/UI design reviews’ which are vastly
upstreamed from a software development phase, and instead show our
customers real working software as soon as possible, which is
iteratively improved. This has meant we can reduce delivery risk and
time to launch considerably.</p>
<p>Although I was already familiar with the principles it has been very
valuable to regularly discuss them with a range of other disciplines
in the team, and to collaboratively decide if and how to action any
changes as a result. It has helped me understand how other people
experience the challenges and opportunities of working in this way and
I feel it has noticeably increased the empathy and understanding of
agile product development practices across the company.</p>
</blockquote>
<p>We’re coming to the end of our study of the 12 agile principles and
given how successful it has been we are wondering what to study next.</p>
<p>Thanks to everyone who took part in our agile principles study group and
also to Jeffrey Frederick and Douglas Squirrel of <a href="https://www.troubleshootingagile.com/">Troubleshooting
Agile</a> who not only provided us
the source material and a suggested format for this study group but also
inspired me to set up my first work study group in a previous role.</p>
]]></description><pubDate>Mon, 28 Oct 2019 00:00:00 +0000</pubDate><link>https://blog.mocoso.co.uk/posts/agile-principles-study-group/</link><guid isPermaLink="true">https://blog.mocoso.co.uk/posts/agile-principles-study-group/</guid></item><item><title>The value of being a mentor</title><description><![CDATA[<p>Mentoring someone outside of your company can be a really rewarding experience
that helps you learn too.</p>
<p>My first opportunity to do this came about through luck rather than planning.</p>
<p>When I returned to a technology role, as CTO at
<a href="https://www.unmade.com">Unmade</a> in 2018, I committed to make more of
an effort to build professional relationships with people outside my
organisation. I am not confident in group networking events and far
prefer one-to-one conversations. I have been finding opportunities to
meet more people (both people I already knew and new people) for coffee
or lunch this year.</p>
<p>One such meeting was with Anna, a senior leader in a large engineering team.
When we met, Anna was clearly distracted by an issue she was facing at work
that day. We ended up just talking about this and I was able to give her some
practical advice which she found very helpful. This made us think that it would
be valuable to set up a mentoring arrangement.</p>
<h2 id="what-did-we-do">What did we do?</h2>
<p>We started by meeting for an hour to discuss how we would arrange our
mentoring relationship. The key points to this were:</p>
<ul>
<li><strong>Purpose:</strong> Anna shared what she wanted to get from mentoring so that
we could work towards a common goal</li>
<li><strong>Confidentiality:</strong> I committed to treating everything Anna told me
in the strictest confidence which was essential to enable her to be
honest with me</li>
<li><strong>Commitment:</strong> We agreed that if Anna decided on a course of action
in one of our sessions, then her only responsibility for carrying it
out was to herself</li>
<li><strong>Limits:</strong> We agreed that we would have a limited number of sessions
to reduce the risk that, over time, it slowly became less and less
useful but continued through inertia or social obligation</li>
<li><strong>Feedback:</strong> We agreed that Anna would give me some simple feedback
after every session so that if the sessions stopped being useful we
would bring the mentoring arrangement to an early end.</li>
</ul>
<p>We also agreed on the rough frequency and where and when we would meet
for the 5x75 minute mentoring sessions that we had planned.</p>
<p>The time we spent setting expectations was really valuable and we both
thought, in retrospect, that it may have been useful for us to have
spent a little more time making sure we were clearer on this.</p>
<p>We settled into a routine in these sessions. We started by making tea
and coffee and generally chatting about how we were both doing in order
to get comfortable with one another again.</p>
<p>Then, usually, Anna would let me know about the impact of our previous
session by sharing what had happened as a result of our conversations
and the decisions she had made. This was really useful in that it gave
me insight into what was working or not working for her and also helped
me understand how the situations she was facing were changing.</p>
<p>Finally, we discussed the current challenges that Anna faced. Much of my
work here was careful listening, being curious, asking questions,
challenging assumptions and reflecting back what I had heard in order to
help Anna clarify her thinking and understanding. This is where, in many
ways, my not working with Anna felt like an advantage because not
knowing her company or colleagues forced me to ask, rather than assume,
what was going on. Once we better understood the issues we would discuss
potential courses of action for her based on our own experiences.</p>
<p>After each session I wrote some very brief notes for myself so that I
would be able to refresh my memory before the next session. I also sent
Anna <a href="https://docs.google.com/forms/d/e/1FAIpQLSf7lxyUYj0FSnHmieRU4leOsGe_GQVfbFboVAsb0IuvKse1jA/viewform?usp=sf_link">a short
questionnaire</a>
to reflect on the session and offer feedback within a few days, the key
question being “on a scale of 1-5 how valuable a use of your time was
the session?”. The advantage of doing this offline were that it slightly
reduced the social pressure to respond positively and also gave Anna
time to reflect.</p>
<h2 id="how-was-it-valuable-for-me">How was it valuable for me?</h2>
<p>I found the experience of being a mentor really valuable in a number of
ways.</p>
<p>Firstly, Anna is very thoughtful and articulate and has her own set of
experiences which I felt able to learn from in the course of our
discussions. Many of the challenges that she faced in her role as a
technical leader mirrored challenges I faced in my own role and our
discussions helped clarify my own thinking and spur me into actions in
my own job.</p>
<p>Secondly, Anna exposed me to new ideas and situations and gave me
insight into to how other people and organisations were tackling the
problems that we all face in technical leadership roles. For example,
she recommended I read, <a href="https://www.ethicalbooksearch.com/books/m/ol:OL2355834W-ol:OL12096155M-is:9783800660452/high-output-management-andrew-s-grove">High Output
Management</a>
by Andy Grove, which is excellent and I found myself referring back to
repeatedly both in our mentoring conversations but also in my wider
work.</p>
<p>Finally, as someone who has been privileged to benefit not only from
mentoring but also from pretty much all of the available biases in our
society, I was grateful for this opportunity to support someone from an
under-represented group in technology in their career.</p>
<p>The value of this to me made it easy for my employer to see that this
was part of my work at Unmade.</p>
<h2 id="what-next">What next?</h2>
<p>Perhaps you would like to mentor someone too? If so, I would encourage
you to do so, you are likely to learn as much from them as they do from
you.</p>
<p>In 2021 I became an <a href="https://monkeysthumb.co.uk/coaching-for-engineering-leaders/">Engineering Leadership
Coach</a> so if you
would like to be mentored and/or coached by then please get in touch.</p>
<p>Thanks to Anna for all that I learned from her and for encouraging me to
write this post.</p>
]]></description><pubDate>Wed, 23 Oct 2019 00:00:00 +0000</pubDate><link>https://blog.mocoso.co.uk/posts/being-a-mentor/</link><guid isPermaLink="true">https://blog.mocoso.co.uk/posts/being-a-mentor/</guid></item><item><title>Reducing risk with continuous delivery</title><description><![CDATA[<p>In this talk I outline what continuous delivery is, and explore
some case studies from a range of companies who practice continuous
delivery and how they benefit from it.</p>
<p>This should give you a clear idea of how continous delivery reduces risk on
software projects and make it easier for you to explain the benefits of
this approach to your colleagues.</p>
<p>This is part of a series of talks and blog posts reflecting on the practices
that we use at in our teams at <a href="https://www.futurelearn.com">FutureLearn</a>.</p>
<p>Note: This talk was originally written by <a href="https://tomafro.net">Tom Ward</a> as
an internal talk at FutureLearn as part of our communications about why
we were using continuous delivery.</p>
]]></description><pubDate>Wed, 05 Nov 2014 00:00:00 +0000</pubDate><link>https://blog.mocoso.co.uk/posts/talks/reducing-risk-with-continuous-delivery/</link><guid isPermaLink="true">https://blog.mocoso.co.uk/posts/talks/reducing-risk-with-continuous-delivery/</guid></item></channel></rss>