Accomplishing Through Others
February 28, 2023
Several years ago, I was tired after a particularly long week. We’d been under a deadline and trying to wrap up final tests for a feature. It had been a bumpy week, to say the least.
One of our tests revealed a bug we needed to fix. Being the (newly minted) senior engineer on the team, I thought I needed to be the one to fix it. I spent the week juggling this fix while trying to keep up with my other work in flight. I got through it but was exhausted after the effort.
The following week I mentioned how tired I was, thinking the rest of the team would feel the same way. And while they agreed it was a long week, they seemed much more rested than I was. I was surprised and asked why. One engineer said politely, “Well, you sorta kept us from helping.”
That helped me realize that “doing it all yourself” is not only a bad idea for your mental health but can also keep others from learning, growing, and accomplishing important tasks too. I needed to learn how to delegate. I needed to learn to accomplish through others.
I’ve learned a lot since that week several years ago. And while I still have more to learn, I’ve been practicing this idea in four key ways that I wanted to share.
One way we can accomplish through others is by helping our teams level up. By mentoring to our teams, we can help our teams grow their skills by sharing our skills, experience, and knowledge. When we proactively mentor other engineers on our team, everyone can benefit from what we have learned in our careers.
The specific skills your team will need to grow in will vary (naturally). You might need to help your team learn and master their coding skills. They might be great coders but need guidance on communicating their ideas clearly. Or it might be something else.
In any case, ask your teammates what skills they want to develop, and offer help in the areas you feel competent. You’ll be surprised by how many people take you up on the offer.
Be careful not to act as a manager here, though (unless you are one 😄). It would be best to avoid trying to manage their career or giving them performance reviews. That won’t go over well.
It’s also not your responsibility to make each teammate improve; you can’t control that. What is on you, however, is how generous you are with your time and knowledge. Be the engineer people seek out to learn from and build a reputation for open, honest, and kind feedback.
Facing problems you don’t know how to solve is essential to growth as a software engineer. It requires learning new skills, thinking critically, and applying unfamiliar solutions.
To accomplish through others as an engineer, you must allow others to solve complex problems they’ve never seen before - even if you have.
This is harder in practice than it sounds. In moments when you see a problem you’ve solved before, you will want to jump in and “save the day.” And sometimes, if the problem is too significant or too complex, you might need to. But you can’t do this for every issue.
Instead, learn to act as a guide or coach. Point your peers in the right direction without giving them the exact map. Act as a sounding board for their ideas, providing proper refinement or additional questions for them to consider.
Find ways to teach your team how to solve complex problems in how you do your own daily work. Practice leaving “breadcrumbs” for others in previous solutions by explaining tradeoffs, providing alternative ideas, and identifying the most critical data points that led you to your final solution. A good guide isn’t just taking people on a trail and calling the task done - they are teaching and explaining how to navigate the area along the way.
And like any good guide, make sure to help them get where they are trying to go. If they start drifting too far off, gently bring them back. Help them solve the problem.
Even though software engineering has some complex problems, it’s easy to get stuck solving the same ones repeatedly. It can be easy to get one year of experience repeated ten times over rather than building ten years of experience.
You might stay working in the same domain for too long. Or it could be that you are never willing (or given a chance) to take on the more complex work for your team. Another day, another ticket in the same system you’ve been building for years. And another day without a new problem.
Part of accomplishing through others is challenging junior engineers to stretch themselves. Nudge them to tackle something ambiguous or new. Or it could be challenging them to write crisper, cleaner code.
Challenging your teammates also means you are paying attention to what is happening on your team. You should be looking for new problems coming to your team you can delegate to another teammate. Be the engineer that asks your teammates to help you work on something challenging and give them a piece of the puzzle. Find a story or working group that aligns with their skills (or desired skills) for them to tackle. Identify a few engineers to challenge or sponsor in this way and help them as they go along.
The last part around challenging moves closer to sponsorship where, as Will Larson says, “you put your thumb on the scale” for another engineer. You are advocating for their development and for opportunities to fall their way.
The last way engineers can accomplish work through others is via inspiration. We can go about our daily work in ways that motivate others to improve and give their best efforts. I’ve always been more inspired by previous leaders whose work was dialed and exact than any dangled carrots or heated reprimands.
Senior engineers can inspire others in how they do write code, how they advocate for change within the org., and how they work through difficult moments on their team. Be disciplined about the size of your code changes, the tests you write, and how you communicate. Don’t be above “grunt” work, either. If something tedious needs to get done, but no one is willing to do it, be ready to tackle it.
Senior engineers should also be casting vision. It might not be in the form of some big plan or document either. It could be convincing your teammates that together your team can do better and will. Or helping your team imagine the systems you could build together and the way you will work as a team. Paint a picture of what’s possible while still being grounded in reality.
Inspire others to do their best work by keeping the bar for yourself high.
Accomplishing through others is a fundamental shift in how to work. You move from always volunteering to tackle complexity yourself toward offering it up for someone else. It means you hold yourself to a higher standard for others to follow. It means looking for ways to challenge and aid those around you.
It means focusing on building your team more than your own career.
This work shift is challenging, and it takes practice and repetition. Once you start practicing this skill, you’ll find you can drive for change and improvement far better than if you attempt to attain it all through writing code faster or better.
I know that has been my experience anyway.
If you enjoyed this article you should join my newsletter! Every other Tuesday I send you tools, resources, and a new article to help you build great teams that build great software.
Dan Goslen is a software engineer, climber, and coffee drinker. He has spent 10 years writing software systems that range from monoliths to micro-services and everywhere in between. He's passionate about building great software teams that build great software. He currently works as a software engineer in Raleigh, NC where he lives with his wife and son.