You're waiting at the front-desk of Google's campus in Boulder, Colorado, waiting for your coding interview to start. Across from you in the lobby sit two other candidates:
- A charismatic airpods-flaunting developer who can charm the pants off of anyone in the room but requires an agonizing 8 hours to get a linked list working
- A programming prodigy who writes games in assembly, but is such a colossal jerk that nobody will play their game anyways
Which of them will provide more fierce competition for the job spot? Let's tackle the age-old question: Which is more important, hard or soft skills for programmers?
First I'll annoyingly explain what hard and soft skills are, but then we'll dive into the reason I wanted to write this article: the rectangle analogy. This analogy will help you understand where you should be spending your time improving to maximize your chances of landing a job.
Hard Skills: The Foundation
First things first: what are hard skills? These are the tangible, measurable abilities that you need to get the job done. As a developer, you'll need to:
- Code in specific languages - like Python, JavaScript, or Golang.
- Use technologies and tools - such as Git, Docker, or AWS.
- Understand algorithms and data structures - because nobody wants to be that developer who can't reverse a string without Googling it first.
- A boatload of other things - because programming is a vast and ever-expanding field.
Importance of hard skills for landing a job
Hard skills are the bread and butter of your programming career. They're an absolute requirement for most programming positions, and they demonstrate your technical competency. In fact, if you could only have one type of skill, hard skills would be more important. After all, it's pretty tough to write code without, you know, actually knowing how to code.
Keep hardening your hard skills
The tech world moves at breakneck speed, and if you're not continuously leveling up your hard skills, you're gonna get left in the dust. Remember, Rome wasn't built in a day, and neither is your programming expertise. Invest time and effort in learning new languages, tools, and techniques over time.
You don't need to be an expert on everything, but you need to know how to deliver working code that solves real problems within your domain. If you want to be a back-end developer and work at SaaS companies, then you should at the very least:
- Have a solid understanding of a couple of programming languages like Python and Go
- Be able to set up and use a SQL database
- Know how to build a REST API using those technologies
- Know how to deploy that API to a cloud platform like AWS or GCP
Soft Skills
Soft skills, on the other hand, are the intangible, interpersonal abilities that can give your career a nice boots. They might not be as easy to quantify as hard skills but they're nearly as vital. Soft skills include:
- Charisma - people like working with fun people.
- Communication and writing abilities - so you can articulate your ideas and keep everyone in the loop.
- Kindness and empathy - because you're working with humans, and humans don't like assholes.
- Hard work and follow-through - if you're good, but you don't deliver, then no one cares.
Importance of soft skills for long-term success
Soft skills are the secret sauce that can propel your career to new heights. They facilitate collaboration and teamwork, making it easier for you to work with others and get the job done. Plus, having solid soft skills can enhance your overall job satisfaction and career growth. After all, nobody wants to work with a genius who's also a jerk.
Hard skills are a requirement to get a job in tech, but assuming the gap in hard skills between two candidates is similar, I've actually seen the more charismatic and likable candidate get the job over the slightly more technically competent one. Why? Managers are people, and people like working with other people they like.
How do I improve my soft skills?
If you have a crappy personality, don't worry too much. You don't need to be a brilliant orator or a master of the written word just to get a job as a code monkey. The number one rule should be easy to follow: don't be an asshole. If you do that, you're halfway there.
The related follow-up rule is to balance confidence and humility. If you're a kind, open-minded developer that knows what you're talking about, you'll do great.
The Rectangle Analogy: Combining Hard and Soft Skills
Now that we've explored both hard and soft skills, let's dive into the rectangle analogy to understand how they work together. Imagine your hard skills are the length of a rectangle, while your soft skills represent the width. The area of this rectangle corresponds to your probability of landing a job. The larger the area, the better your chances of finding a gig that suits your skillset.
This means the equation for your job probability is:
hard_skills * soft_skills = job_probability
To maximize job_probability
with the least amount of effort, spend more time on whichever skill you tend to lack. The area of a square is larger than the area of a lopsided rectangle with the same perimeter.
The misconception of limited skill points
If you're thinking this sounds a bit like a Dungeons & Dragons character sheet where you have a limited number of skill points to allocate, that's not how the real world works. In the real world, you can just get more skill points. You can excel in both hard and soft skills.
- I've worked with amazing people who are easy to get along with and are brilliant programmers
- I've also worked with incompetent jerks who are somehow also bad at writing code
If you work hard and do your best, you can be both a great programmer and a great person. It's not an either-or situation. In the immortal words of Shia LaBeouf, "Just do it!"