When building a team of software developers, it is very important to define the profile of the engineers we want to compose it: Do we want to give importance mostly to the software skills, or do we want also to give a big weight to the soft skills?
This is how Wikipedia defines soft skills:
“Soft skills is a sociological term relating to a person’s EQ (Emotional Intelligence Quotient), the cluster of personality traits, social graces, communication, language, personal habits, friendliness, and optimism that characterize relationships with other people. Soft skills complement hard skills (part of a person’s IQ), which are the occupational requirements of a job.”
It is clear that the ideal developer must have a combination of the two types of skills. We don’t want someone in our team who is a brilliant programmer but is never ready to share his knowledge with others. We also do not want someone who is very nice and pleasant, but writes low quality code and has low productivity.
I think it is natural that in the software industry, in general, companies will have some preference for hiring the best engineers, even if they are not the best team players. For example, this is what Eric Schmidt recently said in an interview about Google’s hiring process:
“You are going to have to deal with the odd people. Not every single one of these incredibly smart people is a team player… even if people don’t want them around, we still need them.”
In some cases, people with poor soft skills can be really prejudicial. My experience is that a problematic personality is normally the main reason for a software developer to be fired or transferred to a different project.
The amount of damage that a developer with poor soft skills can cause to the team depends on the development methodology being used:
- If the developers are working following traditional methods, in which they do not have many dependencies on each other tasks, then it is easier to make the most benefit of that black-belt programmer that does not happen to have the best inter-personal skills.
- If the team is using Agile methods such as Scrum, then we do expect that the developers will work closely together, and being a good team-player becomes essential. In a Scrum team, a programmer with poor soft skills may cause more damage than benefit.
At the bottom line, when considering a candidate for an engineering position, I believe there should be some essential requirements regarding the software skills, but I would never hire someone who clearly has poor soft skills.
After all, you can always teach a good engineer some new technology, but it can be very hard to improve someone’s soft skills…
Nice Article. Keep it up.
I think the answer, at least partially, lies in the question. What is most important for a developer?
From my experience, if you are talking about the person responsible for executing specific tasks on a project team, software skills 80%, 20% soft-skills ( enough to be able to communicate effectively so that they clearly understand the requirements ).
If it is a developer primarily responsible for production support, then communcation, calm and confident attitude along with top notch customer service skills are critical, I would say the shift becomes 60 to 70% focus on soft-skills … they can, in turn, research or rely on more techncally skilled collegues & contacts to solve the problem itself if their software skillset are somewhat lacking.
It really does depend on your role in my humble opinion. I would say, however, that the 50/50 balance is a jack of all trades, master of none … not really adding all that much value in the big picture. Find your naturual niche and then strive to be the absolute best at it, everyone benefits!
Pingback: How to find the best candidates without interviews | Effective Software Design