garann means > totes profesh

a defunct web development blog

where do junior developers come from?

Sat, 29 Nov 2014 12:08:51 +0000

There's a cartoon I read when I was a kid. This guy is in a job interview and the interviewer says it's too bad he doesn't have any experience and so they can't hire him or something. The guy responds, "Yeah, but neither did Neil Armstrong." Last week Jan Lehnardt tweeted that it would be cool if there was a recruiting agency focused on diversity, which is something I've been thinking about since. As part of that, I remembered the cartoon, which I thought about a lot when I was a very new developer.

My first job after getting my computer science degree was selling cell phone accessories at a kiosk in the mall. I want to make sure you understand: not during, as in I was in school and needed a low-demand part-time job to pay for textbooks, but after. I tried for a few months to find a programming job and finally, out of options, had to move back into my dad's house and get a job in a mall.

There are a lot of holes in the pipeline, but I think this is one of the most crucial. If you have no network to help you, getting your first programming job is very hard.

Eventually I found a programming job working for the Washington State Department of Corrections. There are two reasons this was my first dev position. The first is that they were required to advertise in the newspaper. I knew how to look for ads in the paper (or the online equivalent), but that was all I knew about how people found jobs. I'd been surrounded by people who were going on to be programmers, and professors with professional networks, but I had literally no idea I was supposed to talk to them finding work. That was not how you got shitty retail and cleaning jobs and, therefore, was a completely foreign idea.

The second reason I ended up working for state government is that they had an aptitude test. If you were not already in their tiered system of job titles, you applied to be considered for the bottom tier, which meant taking a test. What that means is that no one had to take a chance on me, or depend on whiteboarding alone to reveal what I could do and what I couldn't. I was a known quantity, even if all that was known about me was that I was breathing and could type some very basic Java syntax.

It's possible that if I hadn't gotten my foot in the door through state government I would have found another way in. But when I read the statistics about CS graduates who make it into tech in this excellent article on blacks and latin@s I couldn't help but think, "WTF, people are still getting stuck in the fucking cell phone kiosk." My experience isn't everyone's, but my experience provides me two clear hypotheses about how to stop that: find people networks and don't create Catch-22s where people with no experience can never get it.

So when I saw Jan's tweet, I thought I would start a recruiting agency and just put those ideas to the test. But I asked around a little bit first, and found something disheartening, which is that most people in my extended network who are hiring are not the Washington State Department of Corrections. They do not want raw graduates for their junior devs. They want people who've got some work to show. People who've done side projects or open source work. Bootcamps were mentioned repeatedly as the best place to hunt for junior devs. Bootcamps are great and I know a lot of excellent people who are involved with them. However, I believe there is some proportion of people with the skills to be great devs for whom "I should sign up for a bootcamp" is as improbable an idea as "I should create the next great front-end framework" for reasons ranging from lack of resources to bigger problems like not realizing that's a thing people just go and do.

I no longer feel confident that starting a recruiting agency would solve the problems I want to solve. I still feel like it could be helpful as a stand-in for strong networks for people stalled mid-career (for whom the danger of attrition is high) but catching diverse people already mid-career is harder than catching the people trying to get a foot in the door. Several people told me they don't like recruiting agencies because of "low-quality candidates". As a former low-quality candidate myself, that's frustrating. Especially because of Neil Armstrong.

Continually beating people over the head with junior devs they consider too inexperienced is unlikely to work, so I'm putting this one back on y'all. If you get candidates who seem smart and have a resume that shows a history of working hard in unrelated jobs, why not train them? I've been a proponent for a long time of the idea that if you need five great programmers, the most foolproof way to get them is to grow your own. If your tiny startup lacks training resources, avail yourself of those same bootcamps. They don't cost much more than what you'd pay a recruiter for someone who already had experience.

And where do you get these brand-new developers? This is something I felt a recruiting agency could do, but I don't think it's sustainable as a business. Fortunately, I also don't feel it's very hard. Stop going to top CS schools and start looking instead at state schools without great CS programs and at community colleges outside of major tech cities. Stop expecting diverse, vetted programmers to drop out of bootcamps like they were slot machines and go find the people who can't afford a bootcamp on their own and don't have enough of a network to know there are scholarships. Make a call to the CS teacher at the community college an hour outside of town and ask if you can sit in on a forty minute class.

I took CS courses at a Seven Sisters school, a community college, and a state school that most definitely wasn't University of Washington in terms of its reputation. They all wrote Hello World the same way. Over four years, I got very little experience writing real software, but I got familiar enough with the idea to know how it was done and that it was something I was interested in continuing. My very strong opinion is that you don't need any more than that in an applicant.

If someone makes it through to a Bachelor's degree, or even an AA, they can be a competent coder. These are people you can go and find yourself. They are probably all around you, seeing the interesting work and greater opportunity your company can offer, but with no clear idea of how to reach you. You can reach them, though, right now. By the time they demonstrate their chops on their own it will be much harder. If they never find a way in, that's a catastrophe not just for you but for the system as a whole.

Another thing I think about a lot is the guy whose car I once helped find in my neighborhood in Austin during SXSW. As we were walking around looking for it, he mentioned he was a chef, and asked what I did. I told him and he said, "Oh, I used to do some coding." I stopped myself from screaming at this black guy, "COME BACK WE NEED YOU" and instead said something about how there were always lots and lots of jobs dot-dot-dot. He didn't explain why he'd gone back to cooking and made it clear he didn't want to talk about it. Since becoming an ex-programmer, I have a lot of guesses about what might have happened. That fucking sucks, tech industry. That is a very poor outcome, both for the guy who's probably making much less as a chef than he would as a dev, and for the company in Austin that's tried every recruiter in town looking for another person who can work on their webapp.

While I like the idea of being a recruiter and working on solving just this problem, I'm sad to say I don't think the demand is there. I'm hoping that if you're hiring, you'll read this and use the same strategies I was going to. I'm also hoping you'll reconsider the value of investing in people, and how little it costs vs. how much you and your industry will gain. If you want the great programmers the tech industry is currently losing, why not go and get them before they give up?