Category Archives: Uncategorized

Commitment Language

Commitment Language is a concept that focuses on creating explicit agreements and expectations between individuals and teams. I was introduced to it by Richard Halliwell (CEng), but it originally comes from the book Elastic Leadership by Roy Osherove.

Not commitment language
“I *hope* to have this done by tomorrow”
“I’ll *see* if I can do it this week”
“I’ll *try* and get around to it *sometime soon*”

Commitment language
“I *will* have this done by tomorrow”
“I *will* complete it by the end of the week”
“I *will* have it done by next Wednesday”

Yoda says it best, “Do or do not, there is no try.”

Initially, I thought “yikes”, this sounds a heavy handed and a way to beat people with a stick when things go wrong. However, experiencing it in practice led to an “aha” moment.

It’s about removing ambiguity and creating clarity. Clear commitments build trust within and between teams and individuals. Everyone knows what to expect, reducing friction, preventing time-wasting, and improving collaboration.

🤔 What if you’re uncomfortable committing to something? Just say so! It’s a great way to flush out what’s actually priority.

🤔 What if you can’t meet a commitment? Just communicate this as soon as possible. It’s perfectly acceptable not to meet a commitment if circumstances change, *provided* you keep everyone informed.

🤔 What if you’re like me and struggle with on the spot commitments? Try a commitment to a commitment. For example, “I’ll get back to you by tomorrow to confirm when I can complete this task.”

Commitment Language doesn’t just change how we talk; it transforms how we collaborate, fostering a culture of reliability and mutual respect.

Where do you start? Have a conversation about it with your team, and review your role responsibilities so there’s clarity around accountability and responsibilities. A good first step (and something I’m a stickler for) is having owners and dates on actions from meetings.

Give it a try!

Are you already burnt out?

People experiencing work related burn out often don’t realise it. It can be very subtle – much akin to the “boiled frog” metaphor, where the water is very gradually heated up over a long time and the frog doesn’t notice until it’s too late.

It could be you right now, or it could be someone you’re responsible for. Either way the sooner you spot it and do something about it the better.

What does it look like?

  • A feeling of numbness or detachment, with work and even your family.
  • Feeling overwhelmed and lacking energy.
  • Feeling a sense of failure.
  • A general feeling of greyness (hence the overcast image I’ve used for this article).
  • Inability to disconnect – finding it hard not to think about work all the time.
  • Overcompensating – working even harder, trying to gain a sense of self control with the situation.
  • Not looking after yourself – dropping your exercise routines or activities you typically enjoy doing in your spare time.
  • Working ineffectively – dropping the practices you typically employ to keep your work and time well organised and instead feeling a sense of urgency to rush work.

As you can see, with many of these symptoms, it’s a vicious cycle – the things you think you’re doing to improve the situation are most likely making it worse.

If you’re relating to this, what should you do?

Speak to someone.

  • Ideally, speak to a professional. Many employers have an employee assistance programme (EAP). Call them (or encourage your colleague to call them).
  • Speak to your doctor.
  • Speak to a friend or family member.

Either way, talk – the hardest part is the first step, accepting you’re burnt out.  Talking to someone is a great way to gain that self-acceptance.

Then, typically in my experience, you need a break. You need to get yourself out of the situation and the vicious cycle it’s creating, and your brain needs some time to recover. Depending on how long you’ve been burnt out this could be a week or even months (so again, the sooner you tackle it, the better).

You also need to get back into your healthy routines (both mind and body), or create new ones, which again, people typically struggle to do if they’re in the situation causing the burn out in the first place.

When you’re ready to return to work, speak to your manager and set boundaries.

Unfortunately burnout is often caused by unhealthy and toxic work environments, so it may also be time to look for a new role.

*Disclaimer: Whilst I’ve supported and witnessed many people experiencing work related burnout, I’m not a medical professional. You should always seek professional advice if you’re experiencing any issues with your mental or physical health.

Quality is a Team Sport

I think it was Jamie Arnold who first introduced me to this phrase.

In engineering teams it’s – sadly – still all too common that Quality Assurance (QA) is the last step in the delivery process. Developers code, then throw it over the wall to QAs to test. Teams working this way typically have a high rate of failure and large release bottlenecks – features and releases pile up, waiting on the QAs. Developers pick up more new work whilst they’re waiting. Bugs come back and developers are now juggling bug fixes and new work.

It’s slow, inefficient and costly!

What I dislike the most is the cultural aspect – the implication that quality is the responsibility of QAs, not the developers who wrote the code.

Quality is a team sport. The most valuable role for QAs* is to ensure quality is baked into the entire end-to-end delivery process. This has become known as “shift-left” – QAs moving away from spending all their time at the end of the delivery lifecycle and focusing more on how we can “build quality in” throughout.

What does this look like in practice?

– QAs involved in requirements gathering and definition, making sure requirements are clear, well understood and we’ve considered how we’re going to test it (inc. automated tests).

– QAs ensure we’re following our agreed Software Delivery Lifecycle (SDLC) and the steps and control we have in place to ensure quality is front of mind.

– QAs collaborate with developers to write automated tests, developers collaborate with QAs on mutation testing, compatability testing, performance testing.

– If there’s any manual testing required, /everyone gets involved/. QAs make sure everyone in the team is capable of doing it.

It’s a much richer role for QAs, and far better for everyone!



*Some teams don’t have QAs. That’s fine, I’m agnostic, as long as everyone cares about quality 🙂

Is it time for an XP revival?

With all the stories I still continue to hear of failed agile implementations (often now called “digital transformations”), it feels like it’s time for an XP revival.

Extreme Programming (or XP) is one of the original agile software development methodologies, and it’s a shame I see it talked about less these days. It was pivotal in shaping agile practices, and crucially, focuses on engineering practices as well as ways of working, which none of the most popular agile methodologies do.

Why didn’t XP take off like Scrum, Kanban or any of the scaled agile frameworks? Two main reasons (my opinion):

  1. Unlike the most popular methodologies it was never commercialised or marketed. There are no (highly profitable) training and certification programmes for XP. It’s the garage punk band of Agile!
  2. It’s harder. Because of XP’s focus on engineering practices, unlike e.g. Scrum or SAFe, you can’t as easily get away with superficially plonking XP on top of your existing processes and not really change anything.

The second point is why, as often as not, there’s often little meaningful impact with Scrum, or especially the scaled agile frameworks (well, apart from adding a lot of bureaucracy to your processes).

I’m continually hearing of failed scaled agile implementations (often involving lots of very expensive consultants). These stories don’t often go public because, well, you’re hardly going to shout about it, but WalMart is one of them, as I found out from Dave Farley recently. How did they fix it? By focusing on the engineering practices over the process! You can watch Bryan Finster‘s excellent InfoQ presentation on it here.

For me personally, Scrum is OK (I’m not a hater). I prefer Kanban, or even ScrumBan – mixing the two. But XP as well. Following XP does not mean you can’t use or be inspired by other methodologies, but without the XP practises you’ll unlikely get any meaningful improvement.

However I’d argue you don’t need much more than XP in the first place, and it’s as good a place to start as any.

It’s time for an XP revival

I’ve watched as first, Scrum proliferated the industry, and then the scaled agile frameworks come along. They’ve had plenty of time in the sun and there’s enough evidence now indicating that these methods are regularly not delivering on the intended outcome, certainly not on their own, without focusing on the engineering practices as well.

It’s time for the latest generation of development teams to learn about XP. It may be over 25 years old now, but that’s also as long as I’ve been working in tech, and whilst the languages, tooling and platforms have changed markedly in that time, the fundamentals have not.

Appendix: What is XP?

For those not familiar, I’ll try to summarise XP’s Values, Principles and Practices, but I’d recommend getting a copy of Kent Beck’s masterpiece Extreme Programming Explained if you’re keen to learn learn more.

XP Values

  • Communication: Clear and frequent interactions within the customer, stakeholders and  team
  • Simplicity: Focusing on what is necessary at the moment and avoiding over complication.
  • Feedback: Actively seeking feedback to continuously adjust and improve the product and processes.
  • Courage: Being bold about making changes, trying new things, and facing challenges directly.
  • Respect: Valuing team members’ contributions and creating a supportive environment for all.

XP Principles

  • Humanity: Acknowledging the human aspect in software development, emphasising respect, understanding, and communication among team members.
  • Economics: The need to consider the economic impact of decisions made during the development process, optimising people, resources and return on investment.
  • Mutual Benefit: Encouraging practices and decisions that are beneficial for all stakeholders involved, fostering a win-win environment.
  • Self-Similarity: The principles and practices of XP should be applied at all scales of the project, from the smallest code block to the entire development process.
  • Improvement: Advocate for continuous improvement of the process, code, and team dynamics, always seeking ways to do better.
  • Diversity: the value of having a diverse team with varied perspectives and skills to tackle complex problems creatively.
  • Reflection: The importance of regular reflection on practices, progress, and problems to learn and adapt.
  • Flow: Aim for a steady and continuous flow of work, minimising disruptions and maximising efficiency.
  • Opportunity: Encourage viewing challenges and changes as opportunities for growth and improvement rather than obstacles.
  • Redundancy: The value of having some redundancy in skills and knowledge within the team to enhance resilience and flexibility.
  • Failure: Acknowledging failure as a natural part of the learning process, encouraging a positive attitude towards learning from mistakes.
  • Quality: Placing a strong emphasis on the non-negotiable importance of quality in all aspects of software development.
  • Baby Steps: Advocate for making small, incremental changes to manage risk and facilitate easier integration and testing.
  • Accepted Responsibility: Responsibilities should be accepted voluntarily by team members, fostering ownership and commitment.

Core XP Practices

  • Sit Together: Promote team collaboration and communication by working in the same space.
  • Whole Team: Everyone who’s needed for the success of the project is a part of the team.
  • Informative Workspace: Create a work environment that visually communicates the team’s progress and status.
  • Energised Work: Encourage working only as many hours as you can be productive and no more.
  • Pair Programming: Two programmers work together at one computer, enhancing code quality and knowledge sharing (add mob or ensemble programming these days).
  • Stories: Use of customer-defined user stories to guide development and ensure the product meets needs.
  • Weekly Cycle: Planning, development, and delivery cycles on a weekly basis to adapt to changes quickly.
  • Quarterly Cycle: Long-term planning sessions that set the direction for the next three months.
  • Slack: Incorporating extra time into schedules to account for the unexpected and foster creativity.
  • Ten-Minute Build: Keeping the build process short to encourage frequent integration and testing.
  • Continuous Integration: Regularly merging all developers’ working copies to the shared mainline several times a day (add Continuous Delivery these days).
  • Test-First Programming: Writing tests before code to clarify the requirements and ensure correct behaviour.
  • Incremental Design: Evolving the design over time as the system grows and changes, instead of doing all design upfront.

Spotify do not use the Spotify Model

Your regular reminder that Spotify don’t use the Spotify model, they never really did.

Don’t attempt to blindly copy practices from other organisations. Especially not big tech like Google, Netflix, Spotify, Facebook etc.

You’ll most likely just end up cargo culting if you do – going through the motions without real benefits.

Especially don’t simply try and graft “Tribes”, “Squads”, “Guilds” and “Chapters” onto your existing organisational structure. The original content on the model was about a lot more than team structures. But this is normally the only thing that orgs adopt.

Frameworks and models are appealing as they feel like a shortcut, but they usually miss the nuances of your specific challenges.

Be inspired, but don’t copy.

Don’t build what you can get off the shelf

I regularly encounter start-ups and organisations who’ve built things they didn’t need to, when there are many readily available platforms they could have used instead.

A key principle of doing less, better and being able to stay small, is to only build what’s unique to your proposition.

Creating software can be like buying a pet – it’s a big commitment. It’s not just about building it; you also have to care for it constantly. This includes making sure it stays safe, up-to-date, and working smoothly – much like tending to a garden to prevent it from becoming overgrown (and why, with 3 young kids, there’s not much more than grass in mine 😅).

Here’s some examples of common system components, where numerous platforms exist which you can use instead of building them yourself 👇

📄 Content Management
🆔 Identity & Login
🛒 eCommerce
💳 Payments
🗨️ Social features
⚙️ Admin panels
🔍 Search

While these platforms aren’t free, they’re often far more cost-effective than building and maintaining your own. They also have modular components and integrate via APIs and SDKs, allowing you to maintain control over the unique aspects of your service.

And unless you’re in the business of providing one of these platforms, they’ll also do it better than you.

Trade offs? There will be limits to what the platforms can do, you’ll be beholden to their roadmap and costs can rise significantly at scale. However, it’s typically quicker and cheaper to start with using common platforms and only consider building something yourself when you can really justify it.

Before adding any new feature to your product, first check if there’s an existing solution that eliminates the need to build it yourself 👀

Do you really need to build something yet?

The answer is probably not.

Many jump in too quickly before nailing down the problem they’re solving.

You have an idea, have you defined your proposition? Who are your users? What problems are you going to solve for them? What’s your value proposition? Is anyone going to pay for it? How have you validated any of this so far?

Somewhat ironically as a technologist, I spend a lot of my time advising people not to build things… yet.

It’s crucial to validate as much as possible around your assumptions and your users, first.

What’s the best way to do this? Speak 🗣️ to your potential customers! Do user research, surveys, and market studies 📊. Use tools like Marvel or Figma for quick and easy prototyping.

Remember, this is all quick and relatively cheap (unlike building software!)

Even then, you may /still/ not need to build something yet. Laura Pomfret (Financielle) 💸 and Holly Holland (Financielle), the co-founders of Financielle are a great example. They started with a WhatsApp group, selling PDF guides and spreadsheet templates to help women take back control of money. The Airbnb founders started by renting out air mattresses in their living room!

Before considering building something for real, ask yourself: Have I really validated enough? It could save you more than just time and money.

How to run effective Retrospectives

Of all the “agile” practices, Retrospectives are the only one I advise ALL teams should be doing regularly. Why? It’s the most effective way to figure out what works best for your team and to ensure you’re continually evolving and improving the way you work.

I love them so much I built the Agile Retrospective Wiki! Still going strong with thousands of visitors from across the globe every week 😊 (link in the comments 👇)

However, too often, retros aren’t much more than “improvement theatre” Chris Parsons (edit) – transactional, energy draining and nothing changes as a result of them.

Anyway, here’s my guide 👀

📚 Facilitation is a skill

Ensuring meetings are not being driven by whoever shouts the loudest, or ending up as a long ineffectual debate takes thought and practice.

Facilitation is an art. The first three chapters of Derby and Larson’s book, “Agile Retrospectives: Making Good Teams Great,” is a must read IMO.


🔄 Rotate the facilitator

It’s common to be one person’s role to lead retros. This is the best way to make sure they stagnate! It prevents teams from feeling engaged and empowered to solve their own problems, and risks bias to one persons’ agenda. Whilst it may be one role’s job to make sure they happen, that doesn’t mean they have to run them all.

Get everyone to take turns facilitating.


Achievable actions, clear ownership and tracking

Common failings 😥
– Not taking any actions
– Taking on too many actions
– Actions that are too big or vague
– Not following up on actions

Do this instead 😃
– Make actions small and precise (see SMART)
– Ensure actions have owners
– Track the actions just like any other work (e.g. on your work tracking tool).
– At the start of the next retrospective, review outstanding actions


🖖 Embrace “The Prime Directive”

You don’t have to remind people at the start of every retro, but this has to be front of mind, to set the right tone:

“Regardless of what we discover, we understand and truly believe that everyone did the best job they could, given what they knew at the time, their skills and abilities, the resources available, and the situation at hand.”
–Norm Kerth, Project Retrospectives: A Handbook for Team Review


🎲 Mix it up! Try different retrospective plans

Doing the “Start, stop, continue” retro every time? 🥱 Try something different! The Agile Retrospective Wiki is full of different plans you can try (other sources are available!)

CTO or Founding Engineer

If you’re an early stage startup thinking you need to hire a CTO, what you probably really need is a “Founding Engineer”*. Startups have a tendency to over-inflate titles. While a fancy title might seem appealing, it’s important to prioritise the actual needs and growth stage of your startup.

What’s the Difference? 🔍

– Founding Engineer: A dynamic, hands-on developer, driving your product development, adept at turning ideas into tangible, market-ready realities and shipping at pace.
– CTO: A strategic executive-level role. Aligns technology with business goals, demonstrates commercial acumen, brings extensive leadership experience, and shapes key strategic decisions to enable sustained growth.

Why Start with a Founding Engineer? 🏗

– Immediate Needs: Early-stage startups need to focus on product development.
– Budget-Friendly: You typically cannot afford, or justify an experienced full-time CTO (consider a part-time or fractional CTO instead 😉)
– Flexibility: Calling someone a CTO when that’s not really what they are could cause problems down the line (e.g. when you do actually want to hire a proper CTO).

What to Look for in a Founding Engineer 👀

– Full Stack Expertise: Versatile in both front-end and back-end development, capable of handling a broad range of technical tasks.
– Experience: They’re seasoned, they’ve walked the walk. They have a proven track record (e.g. as a senior or lead developer)
– Adaptability and Problem-Solving: Comfortable with ambiguity, able to adapt to change quickly.
– Strong Communication Skills: Effective in articulating technical concepts and collaborating with both technical and non-technical team members.
– Entrepreneurial Mindset: A self-starter with a strong sense of ownership, driven to build and innovate in a startup environment.
– Cultural Fit and Resilience: Aligned with the startup’s values and culture, and resilient under the high-pressure, fast-paced startup conditions.
-Growth potential: Many Founding Engineers can (with the right support) evolve into CTOs as the startup matures and the need for strategic tech leadership increases.

Doing Digital Transformation? Fix your processes before chucking technology at the problem.

I was reminded of this after our panel talk @ hashtag#dtxmcr23 yesterday, when someone spoke to me afterwards who’s accountable for the digital workplace strategy at his org.

The great thing about paper, pens, spreadsheets and WhatsApp groups is they’re ultra flexible and the technology works for /you/.

If you have a broken process, invariably, adding more technology makes the situation /worse/. Why? Because you’ve now sealed the process in concrete and making changes is 10x harder (and more expensive). Your users are now beholden to the technology. You’ve probably not made their lives better, or their work more efficient.

Where do you start? I fell in love with Service Design (see comments for Wikipedia link), after seeing folks like Katherine Wastell, Kathryn Grace and Elisse Jones use it at the Co-op. Start by mapping your end to end process – people, systems, tools, workspace – and identify the pain points.

When you do this, more often than not, you find technology is /not/ the answer to the biggest problems.

And if you do choose to add new tech into the mix, you’re doing so with a much better understand of why and what problem it’s going to solve.

To me, that’s the heart of Digital Transformation.