We’re all here for the same reason: to deliver the best outcome we possibly can, in the most meaningful way.
We typically work within massive organisations. To be able to make a difference, we avoid getting spread too thinly, by focussing on an achievable and narrow goal that will deliver concrete value as soon as possible.
At the same time, we never lose sight of the fact we’re working within complex ecosystems. It’s all too easy to work hard to improve something locally, when the overall effect on the organisation is negligible (or even counterproductive). To avoid this, we’re careful to frame what we do within the wider context of the organisation.
Likewise, we design solutions that are inspiring - keeping an eye on the bigger picture. But we consider ideas that can be validated quickly in the real world. We think big, start small.
We want to be responsible for business outcomes – not for making organisations feel like they are more agile. Agile is simply a means to an end.
While we value the XP practices in particular, we do not mandate any specific practice in our deliveries; we want to avoid ‘cargo cult’ agile, where people blindly follow a practice for the sake of it. Instead, we seek to always pay attention to what a given practice is really trying to achieve. No practice is so important that it can not be questioned and adapted to meet the desired outcome.
Context is king when it comes to choosing which agile practices to apply in a given delivery. This is an area where our experience makes a real difference, because the less prescriptive we are, the more disciplined we must be. We have sufficient mastery of agile practices to choose wisely which will work best in a given situation.
Whichever blend of practices we use, we use short feedback cycles to either constantly improve and iterate towards a shared definition of success with the client – or ‘fail fast’, minimising the investment required to determine a given approach will not work.
We are not precious. Reaching the best outcome for our client always matters more to us than the way we get there; if we really have to choose, we will build the right product over building the product right.
More often than not, reaching a positive outcome does require us to ship technically robust code. But we are careful to avoid getting ourselves into a “build trap” or feature factory, where we deliver feature after feature without clear understanding of the outcome. This is why we invest time in uncovering the right problem to solve, not just doing what the client asked: we deliver outcomes over features.
To ensure our products deliver value, we work hard to connect user needs to business requirements. We respect our clients' existing knowledge of their users, but we challenge using evidence.
Being driven by user needs does not make us blind to (possibly conflicting) business needs. We recognise that organisations have constraints and other goals beyond making the best possible product for their users. We seek to balance these needs to reach a great outcome for our clients.
By doing so, we bring users and organisations together.
While we are always agents of change within our client organisations, our engagements vary hugely in nature, and evolve over time.
Sometimes we appear early in a timeframe and are there to disrupt with exploratory visionary work. Sometimes we come in late, to support and evolve an existing service. We are aware of where our engagement stands in the lifecycle so we can behave appropriately.
Ideally, we seek to turn ideas into scalable products and implement long-lasting changes that can be handed over to the client (acting as Pioneers, Settlers and Town Planners, to borrow the metaphor written about by Simon Wardley)
Above all, we like getting things done. Practical innovation is much more important to us (and our clients) than academic or abstract ‘thought-leadership’; leading-edge, not bleeding-edge is often the most effective route to creating new value.
We don’t pretend to know all the answers – but we are confident in our ability to find them.
We do not hire very experienced people because they know everything; it’s because they are better at knowing how and where to look for the answers. We trade on our ability to learn and share knowledge, rather than protecting or ‘guarding’ it. At its core, Equal Experts is a haven where this sharing happens freely and happily, between like-minded practitioners.
The inquisitiveness of youth is a great thing. People who can retain this mindset throughout their career – so it can be combined with experience – are where the real value lies. It’s this quality we look for when inviting new people to join our network.
No matter how good we think we are, we want to be part of an even better team.
Teams are greater than the sum of their parts. High performing teams will always outperform individuals, no matter how much of a “superstar” they may be.
All people at EE have something to contribute. No matter what role they play in an EE team, they have an equal say in how to go about the delivery. Our Tech Leads and Delivery Leads are there to provide support and leadership when needed; not to dictate every single decision.
This means that every team member is accountable and responsible for the delivery, as part of the team – and we all behave accordingly.
Although it’s always nice to gain recognition for EE, we’re paid to ensure we achieve our client’s goals – not further our own agenda. We are part of the client’s overall delivery group, not the other way round.
We do not brag about EE and our own contribution louder than we brag about the overall delivery success of the client. For all that we do, it is just that – a contribution.
Technology isn’t the answer to every problem, but every successful software project is built on rock-solid technical foundations.
Having fewer lines of code is desirable – it’s easier to maintain and understand – but we have seen examples where developers go too far, creating extremely terse programmes that have a very low line count, but are incredibly difficult to decipher. We want less code, but not at the cost of clarity.
We keep the software we build as simple as possible, from the code we write to the technologies / libraries we recommend. However, an uncompromising pursuit of simplicity can risk the wider context being overlooked. The simplest thing that could possibly work for you or your team might not be the simplest approach for the rest of your team or the other teams you work with. We strive for simplicity, but always consider how our choices will impact the simplicity of the overall system.
We drive technical innovation and thinking about new technologies, tools and practices for the benefit of our clients. At the same time, we only introduce new technologies when it makes sense for the client, considering the entire lifecycle of the technology. We are careful not to treat client engagements as opportunities to learn a new technology; when we identify technology that we believe will bring real value to a client, we take a responsible approach to introducing it, ensuring relevant measures are in place to prove it not only works as intended, but can prove increased value to the client.
While we recognise the importance of leadership and a technical leadership role on a team, we also recognise that we are all experts in our profession. Taking autonomy and responsibility away from the team can destroy cohesion within the group and is a recipe for disaster. It is therefore important that the team collectively owns the technical solution and the delivery of any system. This value also mitigates the risk of any single individual putting a project at risk when moving on.
Software delivers little to no value unless it is deployed and running in production, with real users using it. We therefore need to understand how the production environments work, what monitoring is in place and how our software is deployed to production. By understanding the existing processes for monitoring and maintaining software in production, we can ensure that we deliver value to our customers and avoid problems at what is traditionally the most stressful time of a project.
We value the use of rigorous software development techniques that provide fast feedback and assurance that our code works in the way we expect it to. Where others may rely on wishful thinking and assumptions, we strive to prove our design theories are correct using pragmatic, lightweight tests.
In our wider development processes, from design onwards, we apply the same rigour. We focus on testing assumptions early. We design with substance, focussing on function over form, continuously verifying if we are building the right product, guided by qualitative and quantitative research. This helps teams make informed decisions instead of gut feel
Everything we do is delivered with a healthy dose of pragmatism. This does not mean that we will sacrifice our other values for expediency, but it does mean we avoid hard and fast rules that offer little return for disproportionate cost.
Above all, we’re a company of grown-ups – and this is borne out in how we work with our clients.
First impressions count. We care much more about what we deliver to clients, than what it looks like we’re delivering – but it takes time to gain trust, and we want every engagement to demonstrate how great what we do is.
It’s not about literally wearing shiny shoes each day; it’s about remembering that impressions count. We remain aware of the impression we give to others when representing Equal Experts – whether they be our immediate clients, wider stakeholders, or suppliers from other consultancies. And we avoid doing anything that may appear to be wasteful.
Respect is so incredibly important – it’s the most basic, fundamental aspect of any healthy relationship. We never forget this.
We respect the now: the client team and environment, EE colleagues and other suppliers.
We respect the past: our previous clients, past methods (eg. Waterfall), the history of projects before our time.
We respect the future: our client’s vision, and our leaving legacy.
We’re not interested in filling seats for the sake of it – we’d rather not have people billing at all, than have them just “doing the hours”.
However, it’s our responsibility to be valuable – not our client’s. So we look at the wider context of everything we do to ensure we’re really adding value. If we ever realise we are not, we will flag it and find a way to do something useful (and if we can’t, we take a grown-up attitude to leaving the engagement – in a way that’s mutually agreed).
When working with a client we seek to ‘feel their pain’. Only by genuinely understanding a problem can we help to eliminate it.
Once we do feel the pain, we focus on putting things right. We seek to do the right thing by our clients not just because it’s the right thing to do – acting with integrity is the best way to continue our success and provide real value.