The Joy of Work

What do I Want?

I’ve been thinking a lot about my ideal workplace, and my role in it. What I put into my job, and what I get out of it. My mission. I think I can describe it like this:

My mission is to bring mutuality, mastery and respect to the process of making  humane, impactful software systems.

Let’s look into this in detail in this sentence:

  • Mutuality means that people involved in the process are interdependent; we work in a community of professionals, not as individuals.
  • Mastery means that the people involved in the process are able to build comprehensive knowledge and skills. This is a critical part of our drive and individual purpose.
  • Respect means that people have due regard to colleagues needs and feelings.
  • Humane software systems means that the software demonstrates compassion and consideration of the needs of the users of our software (or the people our software impacts). I would also apply “humane” to the process as well as the output. We want to work in humane systems.
  • Impactful software systems means that the software that we build makes a difference. It solves problems for users, and helps them in ways that they care about. It gives us a purpose to rally around.

This mission provides a vision of what I want my workplace to be like. It helps guide me in deciding between different policies or practices, the things that will bring me happiness and joy. I can’t change the people I work with, but if I can achieve my mission, I think my team will be happier, too.


How Do I Get What I Want?

This mission might give you an idea of my personal values, but it doesn’t really give much guidance on what should be done to achieve these values. What are the concrete things you can do to achieve these values?

The following is a mixture of small scale strategies and larger systems view. In general, taking a systems view is much more effective. Avoid getting stuck on local issues, look to overarching concerns: goals, incentives, constraints, resources, demand, and flow.

Extreme Programming

Pair programming, test driven development, continuous integration, small releases, whole team, planning practices, and so on. The Extreme Programming practices drive external quality feedback loops to build the right thing, and an internal quality feedback loop to build the thing right. Perhaps the values, principles and practices were extreme by the standards of 20 years ago, but today they are table stakes for good development: work in small increments, get feedback as fast as possible, focus on quality.


Initially, XP practices started in software development teams. Extending these practices downstream to production and operations leads to cultural changes that people call DevOps, with other variants: DevSecOps, BusDevOps, and so on. These all come from expanding what we mean by “whole team”, and applying the same values: work in small increments, get feedback as fast as possible, focus on quality.

Visual Management

Kanban boards are fantastic at so many things: information radiators, process documentation, flow control. The act of creating a Kanban board drives a discussion of exactly what the team process is, and lead to discussions about improvements. It can highlight progress, identify bottlenecks, and help provide visual evidence of achievements.

Flow Efficiency

“Efficiency” is a warning word for me. I hear it a lot in the context of “making people more efficient”. What is generally meant here is something along the lines of “resource efficiency”, as in “make sure our people are not idle”. It’s an easy pitfall to fall into, and our intuitions lead us astray in these cases. A far better metric to optimise: “flow efficiency”. That is, how fast can we move features through our development process and into the hands of users? This has a transformative effect on business impact. As Donald Reinersten says in his book The Principles of Product Development Flow, “…the dominant paradigm for managing product development is wrong. Not just a little wrong, but wrong to its very core.”


Mapping processes and chains is a valuable way for a team or organisation to come to a shared understanding about processes and holistic system level concerns. I use three mapping techniques we can use to better understand our place in the world:

  • Wardley Mapping: a technique for understanding organisational value streams, and the appropriate strategies for managing organisational concerns. Wardley maps can be used to provide a shared understanding of business strategies that can be understood by all.
  • Cynefin: a conceptual framework used to aid decision-making. Cynefin offers five decision-making contexts or “domains”—obvious, complicated, complex, chaotic, and disorder—that help managers to identify how they perceive situations and make sense of their own and other people’s behaviour. The framework draws on research into systems theory, complexity theory, network theory and learning theories.
  • Value Stream Mapping: a detailed procedural view of the complete steps involved in realising value in our work. I have run a number of exercising in helping teams understand their value stream. Visualising a value stream map is excellent for building a shared understanding of the current process, as well as a tool for managing improvements to the process
  • Impact Mapping: a strategic planning technique that prevents organisations from getting lost while building products and delivering projects, by clearly communicating assumptions, helping teams align their activities with overall business objectives and make better road-map decisions.

Lifelong Learning

Nothing is static, everything changes. A dedication to continued learning is critical to success in the software field (and any field, I would argue). Understanding the errors, biases and various mistakes we make can give us sense of scepticism of our own knowledge, and the need for curiosity about the world, and the desire to be transparent about our own knowledge and motivations.

The research by Chris Agyris had a profound effect on my understanding of human interactions – the drivers, values and behaviours which influence our behaviour. The best teams are able to enhance their learning and effectiveness by addressing these underlying misunderstandings that inhibit learning. I gave a talk on the Mutual Learning Model a few years ago, and it is still my favourite model for understanding communication failures.

Thinking, Fast and Slow“, by Daniel Kahneman is an excellent discussion about the failure modes of our mental processes, and why learning is critical to a successful mindset.

How to actually apply these ideas in practice?

  • Roger Schwartz’s Eight Behaviours for Smarter Teams gives a very concrete set of communication patterns to practice and learn which will help expose mutual learning behaviours.
  • Retrospectives or improvement boards help focus he team on problems, and strategies for addressing issues
  • The Toyota Improvement Kata is a fantastic way to bring structured learning into the workflow

Non-Violent Communication

Similar to the Mutual Learning Model and the Eight Behaviours, Non-Violent Communication (NVC) gives us a tool to help better empathy and understanding. The focus on feelings, empathy and needs is a clear way to bring humanity into our interactions. Although the NVC “formula” is fairly simple (observations, feelings, needs, requests), applying this to our communications is a life-long practice.


Since I studied Culture Driven Team Building, I’ve had a heightened appreciation of the power of culture. It impacts everything we do within out teams, our ability to learn, diversity and alignment. Organisations can become incredibly effective if they are able to harness the power of the people we work with. This course gave rise to a talk I gave last year: Learning, Communication and Craftsmanship

In addition to the course, the book “Turn the Ship Around” had a profound impact on my views of leadership, and what good leadership looks like, and autonomy and purpose can be strengthened.

Team Chartering

This is a team focused practice that can have profound effects on team cohesion and effectiveness: the team explicitly considers their purpose, alignment and context in deciding what and how they work.

Performance Management

There’s one common practice that a majority of companies still use: management by objectives. That is, a reportee will agree in advance with their line manager exactly what goals they work towards over next time period. At the end of the period, they reportee is evaluated on progress against these goals. Esther Derby had a good write up of the problems of this approach in her article “An Alternative to the Annual Review“:

“Rating and ranking engender competition, not collaboration.”

That is, individual performance management against goals will damage individual incentives, and lead to much worse outcomes. Don’t do performance review.

Dan North had a good write up of his experiences using an alternative: “Applying OKRs

Budgeting and Governance

Annual budget cycles are a terrible fit for incremental and agile delivery. If you’re still doing this, stop! What alternatives are there? Allan Kelly has a good discussion on Continuous Governance which I find interesting. Chris Matts has forgotten more than I’ll ever know on senior management engagements with incremental outcomes.

Alternative Company Structures

The evolution of more humane organisational structures had lead to some interesting experiments. I am particularly interested in the concept of Teal Organisations.

What About You?

The above post is a discussion of my mission and values, and some of the practices I try to use to achieve my mission. What about you? What’s your mission? What practices are important to you?


2 thoughts on “The Joy of Work

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s