The topic of hiring and interviewing developers is one that has been on the main stage for quite a while now. Hiring and the interviewing process is key to building diverse high functioning teams. But it's a topic that also has some very bad publicity.
Some times the interview process is full of bizarre technical challenges that lack any footing in real life. Other times the interview process is to lax and doesn't focus on getting to know the individual or how they work. In my opinion, both of these options can be bad.
In the former, you are ruling out candidates based on hypothetical situations. The situations don't actually evaluate what it would be like to work with them. Throwing bizarre technical challenges at folks is likely going to fail. This is because it's not evaluating people based on what the team needs and how they fit into that team.
The latter isn't much better. Software development takes a knack for wanting to learn and dig to the bottom of issues. It also requires being able to communicate and articulate what you are working on. So assessing someones ability to learn and communicate is as important as gauging their technical skills.
This is why this tweet from Emily Freeman jumped out to me.
The three traits she hires for are traits we should all be evaluating throughout the entire interview process.
Technical skills are great, and you need them in software development. But, communication and curiosity are powerhouse skills that can add exponential skill to a team.
But, why is that?
Curiosity feeds technical skills
Learning to program is step one in your development career.
Technical skills are going to change over time. The tech landscape can change in a matter of weeks and thus the skills that folks have today could be outdated next month.
To be successful and evolve in your career you need to be able to adapt to these changes. Stay curious about what is changing and why. That curiosity enables you to jumpstart your own learning.
Curiosity isn't about only being curious or interested in the new emerging technologies. It also means you are curious to understand the why behind a feature, bug or support issue you encounter.
In my time as a software engineer, the best folks I have worked with have an incredible balance between being pragmatic and curious. They walk the line between over engineering and just enough to scale to make great products. They also have a natural curiosity to understand concepts, problems, and features at a deeper level.
It's not surprising that these engineers have also a large breadth of technical skills. Curiosity to understand and try different approaches fuels the advancement of technical skills.
Hire folks that are curious enough to dig deeper. These folks are more than capable to learn whatever technical skills you need in your team. They will also have a curiosity to understand why things are the way they are and help propose different solutions.
Communication spreads knowledge
Working in a software development team is often 20-25% coding and 70-75% communicating.
Communication takes on many forms and too many different audiences. It might be face to face where you are pair programming on a tricky bug. Or it could be you are writing an email to your executive team. Either way, clear and concise communication is critical.
Being able to modulate communication to different audiences is critical as well. Sometimes team leads or product managers don't need the fine grain technical details. You have to be able to speak to things at the microscopic technical level and the big picture level.
Communication done well, increases the knowledge of the team. Maybe it's a quick
README that has the necessary steps to configure your development environment. Or it could be a quick post in Slack about why emerging technology X is interesting.
It might sound like a rather simple skill, but communication is learned like any other technical skill. Thus, some folks are great at it and some are terrible. When it is there, teams can thrive and when it is missing they can be total dumpster fires.
Look for individuals that can communicate their ideas and thought processes. Confirm they can communicate complex ideas in easy to digest ways to folks at different levels of the problem.
When it comes to hiring in development teams we tend to get very caught up on the technical skills. But there is a swath of other skills that are even more important. Communication and curiosity are two of the skills that I value more than whether you know framework X or tool Y.
Why? Because those skills impact me and the team directly.
Someone who has the curiosity to digger deeper into issues and explores new ideas allows others to do the same on other problems or ideas. But that is only half of the equation. They must also be able to communicate their findings, ideas, and thoughts so others can consume them.
These two skills, highlight an individual that is accountable, responsible, and can deliver in a development team.