A few weeks ago, I attended a tech meetup. This meetup, like many others, was organized by a company trying to hire for a specific position. This happens all the time. In fact, most of these meetups try to gain access to prospective talent by offering valuable content. Almost every high tech company is struggling with one outstanding challenge: recruitment. At the meetup I attended, the company was looking for what is considered the most difficult recruit of all: engineers.
Recruiting engineers is especially difficult, taking three to six months to fill most engineering positions, with some specialized positions taking as long as one year to fill. Companies lavish generous bounties for recruitment, ranging from expensive gadgets like iPads to one month’s salary in cash (which is also what most recruitment agencies charge). In one of our portfolio companies, recruiters represent ~7.5% of the workforce.
Why is it so hard to recruit engineers? United States census data shows that the number of software engineers has almost doubled in the past decade. When you see such a sustained increase in supply, you know that demand is even higher, as evidenced by rising salaries. It seems that demand for software is growing, with no end in sight, especially with startup companies popping up like mushrooms after the rain.
I would argue we are experiencing Jevons paradox: When something becomes more efficient or easier, we find new uses for it and demand skyrockets. In 2019, starting a software company is easier and cheaper than ever. Ten years ago, you would have spent $1M on hardware before deploying a single line of code. In contrast, today, you just open a cloud account and start programming! As the cost of starting new software ventures and services drops, we experiment more and find new uses for software everywhere.
Of course, we still need people to build software. It is here that we hit a new bottleneck: a shortage of talent. How can we continue to increase the number of people building new software-based products and services? How do we solve the scarcity of software developers?
The answer is simple: stop recruiting like it’s 1955.
Recruiting in The Machine Age
When Henry Ford created the first factory based on the assembly line to manufacture the famed Ford Model T, the first car to use standard replaceable parts, he famously paid his workers $5 a day, up from $2.25 a day in 1913. Legend has it that he paid his workers well so that they, too, could own a Ford Model T. But in reality, Henry Ford was dealing with a problem so serious that it threatened his business. In 1913, he hired 52,000 workers in order to maintain a steady workforce of 14,000 men. Yes, that’s right — attrition levels were through the roof.
People were so bored by the repetitive work at Ford’s factory that they sometimes left the assembly line at midday and never returned. This cost Ford dearly, as the entire assembly line would have to stop until the worker could be replaced . In addition, it cost time and money to train new workers. Ford’s solution of increasing pay levels is often cited as the birth of the middle class. This mode of employment and the recruitment of “standard replaceable workers,” although somewhat evolved, remains the dominant style.
Essentially, the way we thought of work in the machine age was top-to-bottom. Take a job to be done, reduce it to fundamental tasks that you can assign to your subordinates and repeat the process until work is broken down into atomic parts: tasks so simple that they are not worth dividing further. This is the natural extension of the Division of Labor, a core principle of machine efficiency. We tend to think of organizations as sophisticated machines composed of specialized replaceable parts — much like Ford’s Model T.
When you think of work in this way, recruiting is pretty simple, isn’t it? The job for which you are recruiting is well-defined, as are the skills needed. The job itself doesn’t change much, and when it does, workers can just be moved elsewhere or laid off. The workforce is a commodity you can procure from the hiring pool as needed, based on strict job requirements.
This approach reflects the world of 20th century corporations, in which a career path could be plotted 20 years into the future because machines, and the organizations modeled after them, were deterministic and predictable. As a hiring manager, you would receive a predefined workplan and fill the ranks to execute it. You would treat the workload as a constraint and manage resources appropriately. Note how we still think of humans as resources (that we still use “HR” to refer to some company activities is appalling, but that’s a topic for a different post).
Starting from First Principles
Technology does not stand still, and over the last 40 years, we have witnessed endless dramatic changes. Probably the most significant of these changes is software. Software is the most flexible industrial tool we have ever worked with. It is flexible, scalable, and amenable, and enables us to encode knowledge. We do not “manufacture” software like we manufacture cars, with each car being identical. Rather, software development means changing the software in new ways. As developers like to say, DRY! — Do not Repeat Yourself! We constantly adapt software for our work. In the process, we change work itself in a prolific cycle of learning, allowing companies to grow at unprecedented rates.
This shift in the work paradigm presents an interesting problem. If work keeps changing, what is the value of a “job description?” How long will that description be relevant? How well will these job requirements reflect the job one year from now? When your company is growing as fast as it does, the organization will be very different in two years. And what if the company pivots?
Often, when I hear someone saying they need “to hire 10 developers in the next year,” I wonder, how do they know how many developers will be needed before they’ve even built the product? And suppose that they do know; will they succeed in hiring 10 developers in one year?
So let us rethink the concept “workload is a constraint, manage the resources.” In a startup, resources are constrained . You have a finite amount of money, time is running out and hiring is difficult. But workload can be controlled. Indeed, startup companies strive to be focused and eliminate any work that isn’t absolutely necessary. Thinking in this way, we can conclude that hiring is an opportunistic process. Instead of setting a target quota for hiring, we can allocate a budget for hiring, and whenever we encounter an individual who can bring value to the company, we create a position for that person and hire!
In essence, we are always hiring for a job we imagine, in an imagined company that exists only in our heads, because the company in which this person will work will be very different from the one that exists now, as will the job they need to do. Instead of looking for the “right fit,” we should instead ask ourselves how will the company be changed by the addition of this person, and is that adaptation something that will bring value to the company?
Talent is Not Hired — Talent is Grown
Twenty years ago, the war for talent was declared. Organizations everywhere understood that talent is what drives success. They worked hard to expand their talent pools by hiring and retaining the best people they could. This represented quite a revolution, as until this point, most organizations had nothing more than a vague notion that “people are our most important asset.” Yet, in the quest to hire the best talent, we forgot to ask the most important question: where does talent come from?
Over the last 10 years, the number of software developers has almost doubled. Where did they come from? Where did DevOps engineers, full-stack developers, data scientists and data engineers come from? These professions didn’t even exist until about seven years ago. Is talent really a finite resource we need to battle other companies for? Our experience says otherwise.
Yes, you can hire existing talent. But that is a finite resource.
Potential talent, however, is practically infinite. If you accept that talent can be grown, as we have witnessed repeatedly across the industry, then perhaps we should be hiring based not on the specific knowledge a person currently has, but rather on their potential expertise in learning. If we remove all the arbitrary requirements from job listings such as, “minimum 5 years experience in Java” or “BSc in Computer Science,” suddenly we have a lot more people we can hire. Do you really care about “experience using K8 and Docker?” Your current developers didn’t have this experience two years ago; and chances are your company won’t care about “strong familiarity with Jenkins” in five years (will you still be using Jenkins?). So why do we have job requirements filled with such transitory criteria?
Instead, hire people with the ability and motivation to learn and adapt, and then build an organization with the right culture to support them. Take note that the word “culture,” in biology for example, also means “conditions suitable for growth.” Building such a culture is a vast challenge, and involves many elements, based on research and experience, which deserve a blog post of their own. But it all begins with changing our mindset on “human capital,” “human resources,” and “talent.”
As technology evolves, the world around us is changing rapidly, and with it, our homes, our offices, our jobs and our organizations. Long-time constraints have been lifted and long-held beliefs should be rethought if we are to build organizations that allow their members to fully utilize advancements in technology to achieve their goals. The key is to design your hiring process around the future of the company rather than its present and past, and to focus on the potential joint future of the person to be hired and the company; on how they can grow together. Hiring is an investment in people, and just like a VC invests in the future of companies, you are investing in the future of your employees, hoping to reap rewards together with them.