Skill, Baby, Skill!
Anyone can learn to code. No really, anyone. Since the pandemic started and New York City schools closed in March, I’ve been spending many of my lunch hours teaching 4th graders to program games and web apps, both in text-based languages like JS and Ruby using my own projects to explain core concepts, and in visual programming languages like Blockly, through educational sites offering courses specifically designed for young learners. The kids understand the technical content just fine, even fairly complex issues like inheritance or state, they ask great questions, and have built fun little projects together. Some of them even have their own blogs and YouTube channels to showcase their work. We’ve never run into an issue with the tech.
Hard skills are easy.
We can not, however, get through a single lesson without running up against the limitations of the soft skills children have acquired by age 10. Poor communication skills, refusal to work together with a partner, unmitigated mood swings, horrible time management, low frustration threshold, the attention span of a hamster, and no strategic or organizational skill whatsoever. None.
Soft skills are hard.
Of course, they’re children, they’re precious and fun and we must protect them at all costs, which is why I haven’t quit this dev team of horrors yet. But through this little experiment I have learned a lot about what to look for in a team that’s all/mostly grown up.
Once you have a decent foundation of technical skills, adding additional ones is a piece of cake, technical deficiencies of otherwise intriguing candidates can be easily remedied with a very minor investment of time and effort from the employer’s side. I acquired most of my programming skills in a 15 week bootcamp, if I can go from not knowing that my laptop has a terminal to building React apps with Rails APIs from scratch in just over 3 months, surely a skilled dev team could guide me to learn their stack within a reasonable timeframe as well. The learning curve is slightly steeper when you are brand-new to any specific programming language or framework, but the process of working your way into any existing product tends to be the same, for novices and veterans alike:
- incremental progress
- cautious optimism
I have worked in many teams in various industries: I have hired interns and assistants, I have put together production teams for small editorials and major ad campaigns, and I’ve hired people to work closely with our family, in our home. I can’t say that I care much about resume points, or resumé points, when I assemble my squad; the more difficult the job the less I care about a potential team member’s stats. I filter by the basic hard skills needed to complete the task and then I focus on the things that matter most in challenging environments: clear and concise communication, integrity, creativity, ability to play well with others, independent critical thought and initiative, willingness to admit mistakes and correct course, meticulous attention to detail, ambition paired with humility, orthogonal thinking, and intellectual curiosity.
High speed, low drag.
I’d gladly compromise on hard skills and spend time and money on training someone who’s checking off all those boxes, but I would never hire a technical luminary who falls noticeably short in any of those areas. It takes decades of hard work and discipline to cultivate those traits, and while a good team can and must, of course, compensate for weaknesses of its individual members, hiring a myopic jerk who believes himself a genius above reproach into a great team is equivalent to taking C-4 to an ant colony in your backyard.
Invest in great people. Let them invest in your product. Profit.