In my post “Don’t Just Prioritize User Needs, Prioritize the Process Too”, I discussed the need to prioritize the elements and artifacts of the software development process. In this post, I’m turning my attention to the hiring process.
When your team needs to bring another developer on board, what do you look for? If yours is like most teams, you compile a list of technical skills something like this:
- Spring framework
You may add some non-technical skills to the list like this:
- Good communication skills
- Team player
- Works independently
And just for good measure, you might add…
- Walks on water and doesn’t leave foot prints
(Okay, maybe that last one is slightly exaggerated!)
These lists of job requirements are often lengthy and at times contradictory (such as “works independently” and “team player”). You need to ask yourself a critical question — “What really matters?”.
I can’t give you a direct answer to that question because the answer depends upon your situation. I’ve hired many people over the years (and, sadly, fired a few). Here’s what I’ve learned.
- Focus on what really matters.
- Highly specific technical skills don’t matter. (For example, someone who knows several computer languages can readily learn a new one.)
- Getting along with people, even difficult ones, really matters.
- Knowing how many stuffed animals fit in a Volkswagen Beetle doesn’t matter.
- Ability to learn new things really matters.
- Writing elegant and eloquent specifications doesn’t matter (unless you’re a big consulting firm).
- Being able to convey an idea to a group really matters.
- Solving problems doesn’t matter (that’s a team activity).
- Identifying problems before they ruin your day really matters.
Who should you hire for your team? It depends on your company culture and your work environment. If your company favors top-down, command-and-control, you need to hire people who are good at following procedures. If your company favors distributed, self-organizing teams, you need people who work well in an open, team setting.
Bottom line: Focus on the soft skills. People who are smart, open-minded, team players will learn whatever technical skills you need. The opposite is not true — people with great technical skills and poor soft skills are unlikely to change. Firing them won’t be pleasant.