Woke up at 4:30 this morning (with a headache), so I might as well write today’s post while I wait for the server to reset on the ridiculous phone game I’ve been playing. Aside: I am becoming more and more convinced that my headaches are controlled by some sort of Markov process. I’m wondering if my beloved drug studies should be using some sort of time series analysis when analyzing the effectiveness of medications.

But. Back to the matter at hand. We’re working really hard to hire a lot of new people so that we can get back up to the staffing levels that we had six months ago. (We all got so fat from all the delicious snacks and meals at the farewell parties and lunches.) Yesterday at lunch I was talking to the person in charge of hiring software developers, and she expressed an opinion that the candidates who come out of these “code bootcamp” programs are rather inconsistent in quality. In particular, a lot of them can’t do simple tasks, like putting the data into an some sort of array-like data structure and then iterating over the elements and doing simple comparisons. And, to be fair, the most accomplished tier of boot camp completers probably get snapped up by very large companies before they have a chance to go on the job market and apply for jobs at small companies; we get a shot at the leftovers.

Greatly influenced by my academic heritage, I am wondering if we couldn’t use some more coding finishing schools. I know an awful lot of underemployed physicists and mathematicians and whatnot who have taken a small handful of undergraduate computer science courses and who have been writing code in MATLAB or Mathematica or some other proprietary langauge for years and years and years and years. But no way are they ready for prime time as software developers. There has got to be a way to take people who have been writing snippets of code (quite succesfully) for their own purposes for a very long time and get them trained up to work in production environments.

On the one hand, this would take more individualized attention than a one-size-fits-all bootcamp that assumes that everyone starts from nothing. Each student in finishing school would come to the program with a different background and a different set of strengths. On the other hand, a well-structured finishing school could leverage the students’ existing skills and have them work on well-curated teams. Here, management from the staff would be essential: Someone would need to tell Helen that she is on this team to help Pauline with a particular skill; Pauline would need to know what she should be helping Helen with.

To some extent I see a bit of this dynamic emerging organically in our local R-Ladies group during our “book club” meetings. One member didn’t understand some of the highly mathematical lingo used in one section of the book, and a mathematician helped her out. And her expertise was helpful in discussing a different section. I think that it could be a really powerful part of a “last-mile” program for building software development talent. I think it could also serve to model best practices in managing developers (which is a giant problem that I don’t hear anyone at all talking about these days). And while finishing-school might require more resources per participant, it might compare favorably with boot camp if you look at resources per successful participant.