We all have goals and there are many ways to achieve them. But is the goal enough? Do we achieve new heights because we set goals for ourselves? There is no shortage of methodologies that we could find to set goals and achieve them. What do we do if those systems don’t work for us?
I have set out to create a coaching service for software engineers to help them navigate their goals. I almost immediately realized I didn’t want to create a system. I believe a single system wouldn’t be useful to most people. In fact, I’ve made this argument already that we are each so unique that a framework or system just won’t help.
But after some thought, I realized this is only half correct. We need systems to help us navigate our daily experiences. Otherwise, we might leave it to our emotional reactions and we all have experienced when doing that makes things worse. So maybe, in fact, we want systems to help us, and what we need is coaching to keep us on track — our track. What we need is a system that is designed and suited just for us.
For all the teams I have supported, I’ve created a list of first principles or values that help the teams make choices and enable their progress daily. These values are straightforward and small enough that we can use them at any moment of design, decision, or even for reactions we might have at work. An example of one of those values is: The simplest thing that works today. This value is intended to depressurize your daily accomplishments by focusing on the smallest thing that definitely works, and iterating on that.
Here is how you might apply that to a coaching system for yourself. Every day, try to be mindful of the moments you might react hastily and only catch yourself. Don’t change how you feel, just catch yourself feeling it. There are many techniques for doing this outlined in “The Happiness Trap” by Russ Harris. What’s important is to understand that your emotions are fine, but that doesn’t mean you have to react along with them, but give yourself some time and space to go through them. It’s not a matter of correcting yourself, it’s simply a matter of processing everything before you say or do something you might regret. The simplest thing that works today is just to recognize you’re about to react and pause. Fix nothing yet. Just allow yourself to go through the feelings.
“You do not rise to the level of your goals. You fall to the level of your systems.” - Atomic Habits, James Clear.
Another value that I’ve found to be useful: Empathy before educating. This is a bit of a challenge for folks who genuinely enjoy teaching others. And it’s a minefield for those who feel like they’re the smartest in the room. This value is straightforward, and focuses us to learn how the other person is experiencing the issue first, before we jump in and possibly miss the mark. This is a value that could be exercised on most days, and it shows up in multiple ways.
The best examples of this value are found in daily interactions wherein someone needs help with code they’ve not written themselves. Especially in production scenarios where they are fixing an issue that is causing serious problems for users. It sometimes comes as “The X service is timing out. Does anyone know what’s wrong?” When we see this, we often take the immediate reaction and give the person ideas for triaging the problem, or how they might figure out why there is a timeout. But what if they did all those things? What if they are a superb developer with exceptional debugging skills and in this case they just have run out of options? Or — what if they are having a terrible day privately and they don’t have the brainpower to push through on this incident? Does jumping in giving them ideas help them?
What if instead we took just a few moments to jump into a meeting with them and first asked, “Hey how’s it going?” It’s very possible they may tell you more about how they are experiencing the issue and this information might change how you approach helping them. Another way to approach this is to assume they’ve done all the smart things and they’ve gotten to a place where they have limited experience. You could jump in to help by replying, “I’m assuming you’ve tried X, Y, and Z already, so maybe we could try something different.” This allows them to feel credible, but also opens the door for a chance that they didn’t think of those things. It’s a reframing of the situation that diffuses the issue and allows each of you to move forward without judgement.
Allowing someone just a moment to give you their side of the issue is the very first step to empathizing before educating.
These examples of values that I’ve created for teams are systems, and they’ve been special to each team. Some have carried over, but typically, each team needs its own set. It would be the same for you. You have your own set of values and you should have your own system for applying them daily. This is how coaching can help you: identify your values, create ways to pattern yourself with them daily, and realize your own framework for improving your daily experiences of building software with teams.