Humility in software development

An idea that has been specifically valuable to me in the context of my career in tech.

I'm in the getting-to-know-you phase of a new job, and it's got me thinking about the aspects of my work-personality that I've deliberately chosen. I'm sure I've got plenty of inadvertent character traits that I've no idea of or control over (for good, I hope, but also inevitably for bad). But there are few I've consciously tried to foster, and the biggest of them is humility[1].

It's maybe not the perfect word to describe the concept I'm grasping at, and there's certainly no getting away from the "ever so humble" Uriah Heep references or the image of the 45th US president saying "I am humble. I think I'm much more humble than you would understand". But it is the best word I've been able to come up with to encapsulate an idea that has been specifically valuable to me in the context of my career in tech.

What do I mean by "humility"

I guess the multi-word version of what I'm trying to express is a sentiment I've heard a few times: never be the smartest person in the room. That is great advice for anyone who wants to get better at what they do, and sets up a brilliant atmosphere for learning. And for it to work, there's a prerequisite for possessing the humility to admit to the limits of your knowledge and expertise. It can be tough to admit when you don't know something, but opening yourself up to that level of exposure is (in my experience) a sure-fire way to level-up your own skills.

I also extend this principle to non-skills-specific aspects of my work life. I've never suffered when working with someone who downplays their ability or is not confident in their own skills. I have, however, absolutely hated working with people who think they know it all. When I say "be humble" I mostly mean "don't be a person that people don't want to be around".

I aspire to be a >1✕ developer, and I want my work to be the best it can be. But the concept of a "10✕ developer" is toxic. I don't want to do the work of ten developers; I want to enable the other devs in my team to do better work. I want to be a "force multiplier" to the rest of my team; my colleagues should be able to do better work because I'm around.

When has humility helped my career?

Everyone learns differently, but having someone directly explain a new concept or technique to me is my preferred way to learn. By exposing the gaps in my knowledge and actually asking for help, I get to move to the next level of understanding so much faster.

In meetings, I always try to ask the "dumb" questions. I'm sure someone else in the room will also be wondering what that TLI[2] means, or what the unspoken objectives are. No none has ever shouted at me for being an idiot, and in fact quite the opposite has happened. People thank me for engaging and asking questions (both in public and in private).

When reviewing PRs I try to never, ever, ever, be dismissive of the submission another developer has spent time on. Even if my gut instinct is to literally throw my laptop out of the window in the hope I never have to view that disgusting code again, I step back and take a breath and remind myself how often my gut has been wrong in the past. Plainly put, my gut has terrible instincts. A simple friendly interrogation can often expose the intention that I've missed, or the bug I didn't realise needed fixing. No-one writes bad code on purpose, and even if I've got a lot to say and many changes to suggest, I always try to present my ideas as possibilities rather than edicts. A good PR should be a conversation, and the ultimate responsibility lies with the author.

When digging through "legacy" code, it always pays to have humility. It's so easy to think my ideas are so much better than the garbage code that I've been forced to work with. The temptation to refactor everything into my style and to flow the way I think it should flow is real. Every now and then I'm right - my version is better. But that is so rarely the case. If I start with the understanding that the people who came before me knew what they were doing, I'm more able to spot the subtle bugs they've avoided or the elegant performance improvements they've made by not doing things the way I would expect.

I wish I'd learnt that last point so much sooner - it would have saved a lot of time and painful on-call refactoring!

When has humility hurt my career?

Another mantra I live with is that "a plan is not a strategy unless the opposite approach is also valid". "Eat food" is not a strategy, because not eating is not a valid option. "Don't eat meat" is a strategy, because eating meat is perfectly normal. Each option has pros and cons, but both are valid: it's a strategic choice. So what is the opposite approach to humility? "Arrogance", I guess. And yes, sadly, in tech choosing to be arrogant can be a beneficial strategy. Act like an expert, and some people will treat you like an expert.

Honestly, a lot of this tech-career malarkey is a perception game. If you make a good first impression and your superiors decide that you are "a smart person with good ideas" then you can go a long way without having to actually prove yourself to anyone. If, like me, your whole schtick is "your ideas are better than mine; tell me more about them", then some people might take that to mean that you don't have any ideas. And a bad impression sticks much more thoroughly than a good one. A CEO's good opinion, once lost, is lost forever.

I've had to fight this a couple of times. But even though I'm asking the "stupid" questions and deferring to others' expertise, I know exactly how good I am. I also know how valuable this tactic has been to my long-term career advancement (and general mental wellbeing!), so I've made it my policy never to compromise. A healthy team instinctively knows the value of humility already. And an unhealthy team; well, that's not a team I want to be a part of.

The elephant-in-the-room caveat

I'm a white straight male with a private school education[3]. That alone gives me more leeway to risk appearing "lesser" than the people I'm working with. Despite having done nothing to earn it, people are more likely to give me the benefit of the doubt and assume I'm "playing devil's advocate" or just "digging into the nitty gritty details" rather than seeing me as "slow" or having "not grasped the overall concept".

People with different backgrounds may well find the suggestion to "show more humility" to be unhelpful and downright insulting. So I think my advice only applies to people who never find their abilities questioned. If you've had to fight tooth and nail just to get in the room, then you probably need (and deserve) to show confidence. It's those of us who get all that respect for free that need to tone it down a bit. If more developers in my position showed a bit more humility, it would open up a lot of doors for other people.

Is it a useful concept for guiding my actions?

I've gone from self-taught and self-employed to junior-dev to mid- to senior- to whatever-you-want-to-call-what-I-am-now. I've not always been able to live up to my ideals of humility, and have learnt painfully from those experiences. But when I've been able to live up to (or at least near) my lofty ambitions - those are the times I've done my best work. Those are the times I've made the best friends, had the best experiences, and made the best advancements in my career.

My new colleagues know very little about me beyond my CV, so if all I can do in these early stages is show that I'm open to conversations and happy to learn wherever possible, then I'll call that a win.

  1. I know, I know! But trust me; keep reading. The idea is less gross than it sounds. I promise. ↩︎

  2. A TLI is a Three Letter Initialism. Har har. ↩︎

  3. "Lord, grant me the confidence of an average white man." - I know this is a thing, and it sucks. ↩︎

Podcasts for Nerds

I often bore my friends by going on and on about great podcasts I've heard lately. But doing this one-on-one was getting a little stale, so I've launched a weekly podcast-recommendations newsletter so I can bug lots of people all at once!