Stop calling them Soft Skills
Over the years, and quite a bit recently, I've given a lot of attention to successful hiring, and identifying the qualities that lead to a successful employee-employer relationship. I've formalized the hiring process to focus on those qualities and the behaviors you might expect to see demonstrated by someone who possesses them. I've tried to blend a selection process focused on qualities and behaviors with one that assesses a candidate's technical proficiency. Sometimes, when I talk about qualitative selection criteria, I get the response "oh, you're talking about soft skills." For some reason, this term makes me bristle. Let me explain why.
Hard skills are defined as specific, learned abilities that you either have or you don't have, but that can be acquired. These skills can be measured directly, by testing for an individual's ability to perform the skill. For example, if a job required typing 100 words/minute, you could measure a candidate's typing speed and they would either pass or fail. In the context of a software engineering role, hard skills commonly equate to your knowledge of particular technologies, and your ability to proficiently write code using those technologies. These skills are measured with coding challenges, white board sessions, and interrogation by an expert.
Soft skills are defined as "a cluster of productive personality traits that characterize one's relationships in a milieu." (I particularly like characterizing a workplace environment as a milieu. ??) According to this definition, "these skills can include social graces, communication abilities, language skills, personal habits, cognitive or emotional empathy, time management, teamwork and leadership traits."
The implication here, and the juxtaposition with the learned aspect of hard skills, is that soft skills are more innate than hard skills. They are also more poorly understood, more difficult to quantify, and therefore harder to use as the primary basis for a hiring decision. They are, however, the most important qualities associated with success in the workplace.
I would argue that not all soft skills are innate, and not all software development can be characterized as a set of hard skills. Even in the case where the act of software development is stripped down to a single individual writing code without any other human interaction, there are qualities that dictate proficiency that go beyond easily measurable hard skills. For example, you might consider the complete understanding of the features of a programming language and the architecture of the systems on which the software will run as hard skills that can be measured. You know these things or you don't. But one person who knows these skills might be considered a better developer than another person with the same level of proficiency. What's the difference? One person may employ constructs that are more communicative to another human (or themselves in 3 months) about the intent of the code, or may be more creative in the abstractions and patterns that structure the program, which makes it more efficient, simple, and satisfying. Apart from the correctness of the code they produce, it is possible for two individuals with the same level of hard skills to be far apart in what you consider a measure of their greatness as software developers. After all, two poets with equal mastery of language, form and meter can produce radically different results.
I admit a personal bias, which may not be fair or accurate, that many of the qualities that make for great programmers (and poets, for that matter) are more innate than learned. I'm not talking about the "soft skills" of communication, emotional intelligence, empathy, etc.—I'm referring to how well you are able to write great software (or how well you are able to write great prose/poetry). I think this skill is related to your ability to see patterns and create abstractions in your head and convert them into an expression in the appropriate form. It is a skill that involves both seeing and synthesis. It is the rare skill that allows you to do this without introducing noise during the conversion process. It surely can be improved with practice, but it comes more naturally to some than to others. A great writer is able to deftly convey a complex scenario involving actors, actions, and relationships without muddying up the picture with extraneous or inarticulate language artifacts. And when they can leverage the language itself to affect how you perceive the story and the pleasure you get from doing so, that is the mark of a truly exceptional author. You could say the same thing about great programmers.
Perhaps my beef isn't so much with the distinction between learned hard skills and more innate soft skills, but the connotations we give them during the hiring process. We include the most skilled members of our technical team to assess the "hard skills" (via coding exercises, white board sessions, and interrogation), and then include one or two non-programmers to judge "soft skills" (sometimes superficially described as culture fit). This can create a bias that favors the judgement of the technical interviewers over the non-technical—hard skills over soft skills. I would prefer a selection process that doesn't use this oversimplified distinction of skills and rather focuses on the qualities associated with success (or greatness), and then figure out how and who can best help you assess those qualities. It is actually quite hard, so to speak.
Author, Enterprise Architect
6 年Agree with this statement /*** It surely can be improved with practice, but it comes more naturally to some than to others. ***/ Many years ago, I have met a programmer in the rural city of India who didn’t know how to converse in English fluently but he had the ability to write at least 1000 lines of C++ program in a day. It’s a natural gift for many. Interview questions about hard skills don’t work these days. One of my friend, an excellent Docker Engineer failed in an interview because he was not able to answer some questions in Kubernetes. It is their loss. I would hire an engineer as long as s/he has good programming with few soft skills. Other technology skills can be learned.
Couldn't agree more: the ability to work with a team, communicate architecture, and understand stakeholders are indispensable technical skills