The Human-Centric Engineering Philosophy
Software engineering is not just a technical endeavour, but a deeply human one. It’s more than the software and the engineering. It’s about the people who come together to build the software. The creators are as important as the creation itself.
Understanding systems and software is hard, but understanding humans and their relationships is so much harder. Working with humans is more art than science, more sensing than reasoning, requiring continual learning and adjustment to thrive.
And when engineers thrive, we create the conditions for world-class software delivery and team performance.
Human-Centric Principles
We ground our thinking and our work in fundamental Human-Centric principles which form the basis of our approach to consulting and the practices we employ. The following principles are applied in all that we do.
Always be human-centric
Humans create organisations and build products to serve human needs. The work we do in organisations should also fulfil human needs, not just for mere survival but also as a source of fulfilment in its own right. Humans need community and meaning. We should strive to organise work in ways that encourage human flourishing, being alert to anti-human processes, technologies and behaviours which diminish human thriving.
1
Don’t fear reality
People are often afraid of speaking up for fear of reprisals. We can be very good at hiding reality or avoiding difficult situations. Encouraging open, honest communication ensures that challenges are addressed head-on, leading to a transparent and resilient organisation capable of making well-informed decisions and taking decisive actions. Embracing reality builds a foundation for trust and continuous improvement.
2
Anyone can lead
Leadership is not just a role, it’s an attitude that anyone can adopt by being proactive and inspiring others to take responsibility. For this to happen, people need to be trusted, supported, and encouraged to lead, with a clear view of the objectives of a given situation. People and teams flourish when they are trusted with responsibility.
3
Encourage team-first thinking
Engineers thrive in teams with a strong purpose and clarity in their roles. Working from the context of a cohesive product vision, with appropriate cross-functional skills, teams can be autonomous, self-determined and self-organising. Delivering as a team, not as individuals helps with enhancing productivity and ensuring the work is meaningful and motivating.
4
Developer experience predicts
customer experience
Miserable engineers are unlikely to make software that makes customers happy. Prioritising the developer experience doesn’t mean pandering to engineers, or obsessing over their feelings, it is an indicator that they are working efficiently and effectively to deliver sustainable value. Developer Experience is a good proxy for productivity.
5
Mastery matters
Engineering work is susceptible to drudgery and unsustainable heroics when relentless pressures fail to allow time for developing mastery and craftsmanship. People are more invested in their work and crave opportunities for continual learning when quality and engineering excellence are prioritised and nurtured within the organisation. People care about mastery, people care about being good at what they do.
6
Appreciate complexity
Engineering teams, like living organisms, are complex adaptive systems with many entangled and dynamic elements. Our understanding of complexity is inherently fragmented making cause and effect difficult to discern and frequently our actions will have unintended consequences. Engineering is a complex sociotechnical discipline and human judgement and behaviours can only be assessed within the context and influences of the wider ecosystem. Understanding the difference between complicated and complex helps us to accept and appreciate complexity for what it is.
7
Humans are fallible
Recognise that humans are inherently fallible. We all have blind spots and emotional triggers that affect our ability to make good judgements. When we communicate with one another our messages are subject to filters, biases and flaws leading to misinterpretation and misunderstanding. We should foster blame-free cultures where curiosity and experimentation are encouraged, failures are systematically incorporated into organisational learning, and assuming the best intent is normalised.
8
Value flows through the
entire organisation
Value creation is a collective effort, not just the responsibility of engineers. Engineering is an equal stakeholder in this process and their practices should be transparent and visible to all in the value chain. It begins with providing context, with information flowing freely so everyone understands their role in creating value. Effective communication and feedback throughout the value chain ensures that no one works in silos.
9
Pragmatism over dogmatism
There is no single best way to lead or transform teams. There are many frameworks, models and variations in how these are implemented and it can be tempting to follow the latest trend as a silver bullet to solve organisational problems. However, the inherent complexity of organisations does not yield to ‘best practices’, or even ‘good practices’ - they require the pragmatic discovery of ‘emergent practices’, through experimentation and inquiry according to the unique circumstances teams face.