DEV Community

Fred Heath
Fred Heath

Posted on

Smart, nice and gets things done. What to look for when hiring devs!

Joel Spolsky famously coined the phrase Smart and Gets Things Done back in the naughties, when summarising the qualities he was looking for when recruiting new hires. This phrase quickly became the mantra of many a start-up and recruitment firm as it seemed to fully describe the kind of people one would want to work with.

Smart, or 'clever' in UK English, is a much desirable trait. I mean who doesn't want to work with clever people, right? People who can grasp difficult concepts quickly and easily, people who can find innovative solutions to difficult problems, optimise an existing design to the max, see challenges where others see dead-ends, etc. Having smart people in your team gives you a great competitive advantage for sure.

People who 'get things done' is another favoured trait. Efficiency is highly-valued in our industry. I mean, you can employ the smartest, brainiest, genius in the world but if they can't (or aren't willing) to get their hands dirty and implement the solution they dreamed up, or deploy their code to CI, or document their design, then they aren't much use are they?

So yes, people who are smart and get things done is an ideal combination. Or is it.....?

Many years of working in software teams have taught me that there is another trait that we should value as much as any other: Niceness. Now, niceness is a very broad term and can be used to describe a variety of characteristics. So let me narrow it down. A nice person is someone who has the following,

  1. Empathy
  2. Courtesy
  3. Honesty
  4. Generosity

Allow me to elaborate:

Empathy

Is the ability to understand and be aware of the feelings and experiences of another person. An empathetic person is someone who offers to help you with your workload when you are struggling, instead of shrugging and saying "it's not my problem". An empathetic boss is someone who -when they see you down with a bad cold, or plagued by a family or personal problem- say "Take a couple of days off to recover" instead of "Are you going to meet the deadline on Friday?". Lack of empathy is a strong indicator of sociopathic behaviour or psychopathy. Empathetic people, on the other hand, tend to make a team function more productively and much less stressfully.

Courtesy

A fundamental level of politeness to be extended to other people. You don't have to know someone in order to be courteous to them. Heck, you don't even have to like them. Being polite to someone not only makes them feel better, it also makes you more likely to be approached by others, invited to their social gatherings and -very importantly in a work environment- to get listened to.

Don't get me wrong, I would never advocate being courteous to someone who harasses or bullies you, such people take courtesy as a weakness. But, under normal circumstances, being polite and pleasant even to the most annoying colleagues will make you both feel like better persons.

Honesty

Telling the truth is not always a black and white process. It usually works best combined with Empathy. Would you tell a colleague that they have spinach stuck to their teeth? Maybe not, as it would embarrass them. But what if they were about to walk into a very important meeting? It's better that they embarrass themselves to you than in front of the executive board or a very important client. Weighing the consequence of telling the truth is not easy but is something we always need to do instead of just choosing the easy way. The easy way, for instance, would be not to tell your team that the solution you developed fails under some extreme scenario. After all, it works 99% of the time so who needs to know about the 1%, right? Well, they don't until one of your colleagues does an important demo for a client and they hit that 1% scenario and the system crashes and burns. Being honest may be painful in the short term but always pays in the long term.

Generosity

Generosity isn't just about material giving. Yeah, we all love the person who comes in the office with a big bag of doughnuts every week or who buys coffee for everyone when going to the cafe next door. But it's generosity of spirit that makes the difference. A person of generous spirit takes complete responsibility for their lives and work. They do not blame others or circumstances for their problems. They own their mistakes and admit them. They are not afraid to give their time in order to help someone else. They don't boast about their victories and they are happy to share their successes with others.

I've worked in software in many different areas, in various roles and with a variety of people. I've learned to value the above qualities in my colleagues as much -or even more- than I value their intelligence and effectiveness. Our industry has devised many ways to detect and measure people who are 'smart' and 'get things done' but sadly no way to find people whose character qualities can improve a team so very much. So yeah, go ahead and hire smart people who get things done but also make sure they are nice people. You won't regret it!

Top comments (2)

Collapse
 
tuwang profile image
TuWang

Another point I start to seeing in new hires: the desire to “learn old stuff”.

Nowadays at any software dev team, the most challenging part for new hires is to learn existing spaghettis stack

Some new hires are nice, smart, and get things done (in green field with lots inline TODO instructions by fellow engineers).

Unfortunately some are lack of attitude to pick up existing stack, eventually they become useless to the team due to missing context (don’t know what’s going on at all for long term vision)

I’m genuinely worried about this kind of engineers. They pass interview successfully but will eventually become low performer silently.

Collapse
 
redfred7 profile image
Fred Heath

I see your point. Learning capacity and attitude towards legacy systems is difficult to gauge from interviewing alone. But IMO if the hires are nice, smart, and get things done they should be able to provide value in other areas or projects.