Finding talent is a huge problem for the software industry. And the common solution to that problem doesn’t work very well.
Many in the industry want to mine talent. When one mines, one looks for a resource-rich place and starts digging. That doesn’t work very well when it comes to developers because the best talent is in places that:
There’s a better, less popular method: Farming for talent.
Farming has a few similarities to mining. It is the same in that you have to pick the right location or you won’t get good results. It is hard to farm on a rock, just like it hard to mine on a piece of ground that has no valuable resources under it. There is some preparation you need to do. But after that, it is very different.
A successful farmer needs good soil, good seed, and a way to provide nutrients. Then comes a lot of hard work, wisdom, patience, attention to what is happening with the crop, and a hopeful harvest.
Farming is hard work. It requires lots of risk, lots of patience, lots of know-how, lots of investment. But there is something significantly different about farming than mining. The fruit of farming produces both a result and seed for the future. If done well, it has a multiplicative effect rather than a subtractive one.
Because of our nation’s strong farming history, we enjoy an ample supply of food filling our grocery stores and restaurants.
But because the software industry has preferred mining to farming, there is not an ample supply of developer talent.
The software industry has recognized the talent issue slowly over the last 30 years or so. Colleges and universities seem to be even slower in adapting. Comparing computer science curriculum from 30–40 years ago to today will reveal few differences. While the foundations of software development were being developed, the universities relied on their previously defined Computer Science curriculum and a 4-year general education model mixed in with it. Software Engineering programs were added. It was not sufficient.
Coding bootcamps arose to fill the gap. But, they too had fundamental flaws. Claims that they could turn just about anyone from a novice to a professional software developer were ill-founded and based on wishful thinking rather than any evidence. However, they certainly can provide a more marketable starting point than your average “Intro to Programming” university course by immersing people in software development and introducing students to relevant tools being used actively in the industry. The best bootcamps had access to experienced software developers as opposed to a staff of many academic professors who rarely — if ever — “programmed in the wild”.
Though the bootcamps promised experienced developers as instructors, the reality is that the most experienced software developers were paid well to develop software, not teach bootcamps. Some of the bootcamps had (and have) talented teachers with real-world experience (though typically less than 3–5 years). But, pretty soon many bootcamps became victims of their own early propaganda: the “gold rush” happened. Early adopters in the industry looked to mine the bootcamps rather than the universities for talent, and some found gems. However, as the bootcamp industry grew, the average quality of bootcamps started decreasing. Soon, the quality of software companies willing to take a risk on these grads also began to decrease. Expectations of these graduates in the industry were adjusted. At the same time, many bootcamps started taking in lower and lower-quality candidates.
People who hired the bootcamp grads found that they either produced sub-par software that couldn’t stand the test of time, or they realized how much more they needed to invest in these graduates was more than they counted on. Many started questioning the value and sustainability of the majority of bootcamps.
In the late 90s, as pioneers in software craftsmanship, we recognized that universities were not producing people with a solid foundation and that solid foundations took time to build. For that reason, we decided an apprenticeship model to growing Software Craftsmen was the way to go. It took time , but we found that by intensely nurturing those who had already learned the basics and desired to build software well, we could produce really solid developers in 12–24 months. Our model produced results far better than what we saw of those who spent 4 years in a Computer Science program, even those with a couple of years of experience. It was an investment that paid off in the long run, with a lot of short-run challenges.
In 2002 we hosted a Software Apprenticeship Summit and invited a few prominent people in the industry. Only a few showed up. Micah Martin, future founder of 8th Light, was there. Now 8th Light has a long track record of growing their own talent. They didn’t take shortcuts.
Just like a good farmer can produce both sustainable farms farmers in a slow-and-steady-wins-the-race kind of way (like Joel Saladin’s farming techniques), good apprenticeship models can produce both Software Craftsmen (who in turn produce software) and a way to produce even more Software Craftsmen.
We started slow — an apprentice or two at a time. We were careful to find good seed — people with an aptitude for software development and an attitude to match their desire to grow. The best seed are those who had already taken some initiative in their own learning, recognized they had a lot more to learn, sought to serve others through software development, and showed willingness to work hard to become a Software Craftsman.
We recognized that the best seed needed a whole lot of initial attention, then more attention, then nurturing. We eventually came to group these into three phases:
Each of these phases would take 3–9 months depending on a variety of variables, but even the most talented under ideal circumstances would take at least that long.
We never misrepresented what the apprentices could do to them or our clients. On any project, there are simpler tasks that need to be done under supervision, so we charge much less for the apprentices to do them to make it cost effective. Once they had the foundation, they could produce value… and as they learned with supervision, we built on that foundation to produce more and more value.
Eventually, we announced our Software Craftsmanship Academy in 2011. We figured we could do the Immersion Phase for a fee that could come close to paying for itself. Then we would pick a few for our Apprenticeship phase, and pass the others on to a few key places that understand what apprenticeship is like. We didn’t spend much on marketing and we didn’t make any radical claims. We didn’t get many students., Meanwhile, we watched in amazement as bootcamps making radical claims sprang up across the country and filled their classrooms.
Even though we had many years of success (and some missteps) with apprenticeship, we continued with the “build-measure-learn” philosophy. We knew that taking several through an immersion phase at the same time would be different than our original apprenticeships in some ways — but we had a pretty good track record of seeing what talented and hungry people could learn. Our hypothesis was that we could do Immersion in three months. We found there were those who could absorb what we were teaching at that pace, and those who could not. We watched as several eager candidates washed out in the first week or two and it was painful. We knew we had to get better at screening our “seed”.
There are many ways to learn the basics of programming. You don’t need a 4-year degree to learn the fundamentals of programing get the basics — we’ve seen that many times — but an 8–12 week tutorial on some modern framework doesn’t do it either. We don’t teach the basics of programming. We teach how to craft quality software, this requires the basics and much more.
To be set up for success in our program, candidates must have a firm grasp on the fundamentals and problem solving. We developed a basic programming skills assessment and we put all serious applicants through it. It clearly separated those who had some introductory programming (and got it) from those who didn’t. Our assessment is live and interactive so we can look past whether they got the right answers and focus on how they approached problems they had not seen before. We have found that those who do very well also make it through the immersion phase well. We haven’t automated the process, and don’t plan to.
When we run into bootcamp graduates, our experiences consistently affirm that what we are doing through our Academy results in a better foundation than either computer science programs or bootcamps produce. Sadly, one recent bootcamp grad did miserably on our basic programming skills test.
You can’t reliably mine software developers from the general population by using a bootcamp any more than you can expect to mine gold from the average person’s backyard.
At RoleModel, we’ve determined that sustainable growth of 20–50% per year is healthy. We try to start a new Academy every 18–24 months and we train our own farm team that way. And when they become competent developers, we continue to mentor them.
Clients have been consistently amazed at the quality of the people from RoleModel and keep asking us whether they can have some of the people we trained or if we could do some short-term training to produce talent for them. The answer to both was and is “NO.” There are no shortcuts to farming. There are better ways and worse ways, but the hard work is still there.
We are happy to help our clients screen potential developers. We are happy to help them develop their own farm program. We’ve offered to do so for several clients (or potential clients), and they say they can’t afford the time to train them. Yet, they seem to think they can keep doing the same thing they’ve always done and get different results.
I’m sure there are other approaches to finding new talent. We know people who do blind programming tests — that can screen people, but what happens when they pass the test?
When we hire some people who have experience elsewhere, we often find that they have holes in their foundation that we need to fill. That’s why we have been developing our own RoleModel Way training for those coming in through channels other than our Craftsmanship Academy. Also, every developer in our company is assigned a mentor, whether they have been here one year or ten. We are always challenging and refining our best practices based on the experience of those we bring in and the experience of crafting software on a daily basis.
If you are building sustainable software and a sustainable company, what else do you do?