I’ve had a lot of discussions recently on making sure that we, as software consultants, optimize our time for client value. This is, in fact, an important concept in the field of consulting. We are brought on board for a limited time with limited budget, and we have to maximize what we accomplish. There’s a lot of moving parts to this equation, really. We do have software to build, but also there’s a lot more. The client will need to maintain this project when the contract ends. This means we need to make sure tooling and maintainability are prioritized.
Additionally, to maximize the time we have, process and culture are important! This means we have to spend some time building those up with the client as well. The list goes on and on, and we could talk about it at length. But…what about the time that doesn’t directly benefit the client? Things like mentorship or knowledge sharing are difficult to measure the benefits of. Where do THOSE fit into the equation?
Bringing the Problem to Light
Atomic has always been a company that prioritizes in-person collaboration. We believe strongly that being in person contributes a lot to the culture and mentorship of people. During the pandemic though, of course we had to be remote. It turns out that a lot of people really liked being remote. Once we started asking that people be in the office more regularly, there was a lot of conversations around the pros and cons of it. One of the biggest discussions was around the idea of “getting more work done while remote”. It’s a lot easier to just crank out work without without the distractions and interruptions of a bustling office. But…is that always the best use of our time? Is that the primary goal of day to day work at a consultancy? This caused me to really think about that, and leads to some interesting conclusions that reach farther than just that issue.
Framing the Thought Process
It’s very natural to think of client value as the primary goal of consulting. After all, if we aren’t delivering client value, we aren’t going to have a very happy client. And a small consultancy with a bad reputation from client engagements is not going to last very long. When you think about it though, that’s not really what we’re doing. For instance, I help with interviews whenever the need arises. That’s pretty important for the growth and maintenance of a consultancy, both technically and culturally. I also participate in our employee mentorship program, mentoring younger developers. That is even more important for the health and progress of developers already working here. Now we charge hourly rates, so those hours get charged to our company and NOT to the client. Still, you could make the argument that I could be using that time to instead deliver more value…but I’m not.
For the sake of argument though, let’s exclude those and only include things that the client is directly paying for. For example, we frequently do pairing or learning sessions during our workday on client work. The number of times I’ve taken a break from contribution work to do a learning session on git, or databases, or architecture is too numerous to count. Even aside from dedicated learning sessions, just senior developers pairing with younger developers is interesting when you think about it. I could be spending that time getting that work done faster, without having to explain it. Even if I am going to explain it, actively pairing is one of the most time consuming ways for me to do so. So why do it? Why do we do any of these things?
Zooming Out
The truth is, our #1 goal isn’t really to the client; it’s to Atomic Object. If we were to prioritize the client to the exclusion of the company in the name of efficiency or value, the company would suffer. If this happened enough, the company would lose the ability to deliver the incredible value it does to clients. It’s a self defeating loop. I help with interviews because in the long term that helps us find great consultants. Those people help us to continue to deliver amazing value! Mentoring other consultants and participating in learning sessions helps people grow and stay healthy. That is essential to avoid unhappy, unhealthy employees and knowledge stagnation. Even the act of pairing itself, which is directly billed to clients, is helping to grow people’s skills. Yes, this does cost the client some money, but having better skills allows us to keep delivering value.
This is pretty easy to understand in the short term. We spend time onboarding new team members so that they can be super productive once they’re up to speed. But it actually extends really far beyond that. I can spend lots of time pairing with a junior developer for a 3 month engagement knowing I could have done that work faster myself. That engagement didn’t last long enough for the client to reap the benefits of that person that was mentored. But…when I started, there were many people at this company that did that for me, across several projects! That’s what allowed me to learn and grow as a consultant so that I could do it for others! And that 3 month engagement benefitted greatly from me being there and leveraging all that I learned before!
The Bottom Line
When it comes down to it, it turns out our highest priority is the health of our company. If we’re maintaining a strong consultancy technically and culturally, we can continue delivering great value to clients indefinitely. There are a lot of specifics on how we operate and the values we support that contribute to that, but that’s the overarching truth. When you frame it like that, suddenly many points become a bit moot. Spending time on teaching and learning, whether it’s pairing or discreet knowledge-sharing sessions, is fine. It’s okay to come to work in person instead of at home, even if you’re getting a bit less done in the commotion of a busy office. It’s okay that we pair younger and senior developers on the same team, even though sometimes that slows senior developers down.
Things that contribute to the health and growth of a consultancy are actually delivering hidden value. Obviously this can be taken too far as you can’t ignore the needs of a client. It is still important to have a successful engagement with a client that’s happy with the end result! If it becomes impossible to maintain company values and maintain a happy client… that’s going to require some negotiating and is a topic for another post. But the flip side is even worse: prioritizing client wants over the health of your organization. This will slowly ebb away your team and culture until you can’t provide value at all anymore. Lean into what makes your company so cool! It’s important to deliver day-to-day value, but remember not to be so ruthlessly focused on each hour that you lose sight the big picture.