I've been lucky to be part of several powerful organisations and startups, and even more so luckier now that I get to run my own firm.
Like many, I've made pretty bad hiring decisions, and when I trackback on them, several patterns emerge that cluster my bad hires from the good ones. Of course in any situation, a bad hire's root cause is the hiring manager because they picked the wrong personality.
And this is the topic I wanted to touch on.
This was the most obvious trait I could find when I tracked back on the many many people I've hired in my corporate, SME and Startup career. People who are tolerant of failure and are open to taking risks in coding or approaches were the ones who flourished the most in my experience.
A friend who's scaling his company from 60 to 80 people said the same thing, "we don't need people who just listen to orders, we need people who are daring enough to try something, fail quickly, dust themselves and move on to bigger things."
This can come in many ways:
1) Employing a new folder structure
2) Trying a new machine learning algorithm to better fence your data
3) Introducing coding patterns that were read online
4) Trying a new database that might be faster which is newer
5) Implementing a new git-flow that might remove bottlenecks in Pull Requests etc
Another thing I noticed with failure tolerant personalities was that they were willing to own up to their mistakes and grow when the upper management enabled them to. I would classify myself as a failure tolerant personality and remembered struggling at one of my first firms because the executive team wanted innovation but didn't understand the process of innovation (i.e try - fail - repeat) till something works.
Which brings me to the next segment, if you're a hiring manager or you're someone looking to hire, look out for failure tolerant people because they're the ones who will innovate and grow your company and engineering practice. More importantly, make sure you give them the arena to try and fail.
We recently wanted to improve our server interaction on the front end, and decided to try Apollo's front end store and it just didn't work for us. So 2 of my team members literally took a week off day time duties to just try and test different ways to make sure the new pattern would match our needs, which of course meant a lot of grunts and failures along the way but we finally came up with a super slick pattern and a mechanism that does caching really well for us whilst keeping the dev API simple
What does this mean for you as a developer (if you're reading as a dev)? Push yourself to enter into a mindset where it's okay to continuously try, fail and not get demotivated. I mean this is quite literally Data Science in its core - trying different algorithms and bias factors and variances until something finally matches a desirable pattern we're looking for.
Actionable steps you can take to create this mindset:
Assess the current work environment, look into areas that you would personally like to see improvements in. Do some research into plausible solutions and work towards implementing them.
At all points in implementation, look not to achieve the end result in step one but grow your solution in an iterative path. When implementing a new GQL and Apollo service, we didn't just pull out REST and put this in, we introduced the experimentation in phases so all parties were happy
Abstract your emotion from your solution. The common saying in startup land goes "Love the problem not the solution" So work your heart out of your approach, because you'll make your mind access newer ways to experiment ideas, rather just iterative into a rabbit hole
My team, the 2 devs on the task at least, would chat with me on a more regular basis to keep me updated on what they were doing. This really flexed their learning and helped them further grasp the concepts of their solution, more about this on the next blog - Feynman Technique
This is also the bit you let your senior management team know that no code is permanent, so let's not get too attached to a solution, and hence let's try new ways to succeed.
People respect new solutions that are better ways to solve problems, not because they're just better for the sake of being better.
So in short? Hiring managers, look for this personality and Engineers, experiment - people will really appreciate you! Trust me 😀