I had a really interesting question presented to me recently:
"I hope you don't mind my messaging but I've been following your posts for a while now and am really struck by your enthusiasm and passion towards creating the right environment for software delivery and creation! So many seem to focus on the delivery rather than the process in getting there.
I was then wondering what you were looking for in terms of mid level developers as kind of an aspirational goal so that I might possibly be in a position to apply if a role were to become available some day?"
Firstly, I was blown away that someone actually read the stuff I share on here - I do it as a mixture of catharsis, assimilation (I find it far easier to absorb the content of something if I write about it), and hopefully that some may find it useful.
The question caused me to reflect - what do I look for when recruiting software engineers/technical staff? I don't think I've ever fully elucidated what I look for, so I thought I'd look back over my own career, my own growth, and look at some of the best people I've worked with.
In terms of recruitment, I guess the key things I look for in any candidate aren’t so much the technical skills - it’s the human that is most important. Four things spring out from me:
- Growth Mindset - some demonstration that the person you are today is not the person you were 6months ago, or the person 12months ago. Carol Dweck’s work in this space is key - a fixed mindset person (and I’ve worked with many) isn’t going to go anywhere near the same success as a growth mindset. You will approach challenges differently, you will approach complexity and setback differently, and it’s infectious to work around people who view these things as ‘something to overcome’.
- Empathy - software development isn’t (at its best) an isolated sport - pairing and mobbing, code reviewing, the daily standup, retrospectives - these are all opportunities to interact with humans. Those people who do best at this are great at putting themselves into the perspective and space of others, and the best people I’ve ever worked with maximise their empathy, and it’s a vulnerable choice. I love Brené Brown’s work on this - see her video on empathy - her book ‘Daring Greatly’ is a book I’ve bought for so many people as it changed how I viewed my own courage and vulnerability.
- Emotional Intelligence - Daniel Golemans’ work on this is critical - how we react ‘in the moment’ and how we view our own interactions is hugely impactful to our careers, and becoming more aware of ourselves and choosing how we interact is within each of us. Even as far back as 6 years ago, I was very difficult to work with, and I had a tendency to ‘get in the faces’ of those who got in my way. It took a significant period of depression and thoughts of suicide to really get me close to realising what was important in life, and realising that I was going down a wrong path in all things in life. Emotional intelligence is a skill you can evolve, and it stops those amygdala hijacks ‘what do you mean you merged it to fecking production!’ into ‘help me understand why you felt the merge to production was the right thing to do’
- Humble - be aware of your work, be aware of how good you have done, but avoid approaching it with ego. I often joked of my time in previous orgs (where my team was shipping amazingly regularly to production, and the majority of the architecture was mine) that I made the tea, and when I wasn’t doing that, I was making it up as I went along. I’m not suggesting self deprecation, but avoiding ego and approaching things with a humble mindset is powerful.
You notice I don’t list any technical skills amongst them - these are your bread and butter, and I’m sure you’ll have read things like Clean Code and will follow technical blogs, and will be evolving your technical skillsets - in todays tech landscape, this is a given, so I thought I’d focus away from the technical for this discussion.
In todays knowledge economy, it is the human and the cultural that begets commercial success, not having the most rockstar 10x software engineers. A team is a set of individuals if they can’t interact, trust, challenge, share, and grow together, and a set of rockstar engineers as individuals will be beaten every single time by a team of less experienced engineers who employ the above skills.