One of the things I do as part of my job for Pillar Technology is interview prospective new developers.

In the spring and summer of 2009, I was getting more and more frustrated with the interviews I was doing–especially the ones involving young folks fresh out of college.  I was noticing that they had spent four years learning something, but they didn’t know anything we needed them to know.

For example: one promising young man I interviewed probably could have told me the difference between NP-hard and NP-complete right off the top of his head, and maybe made a good stab at writing a shellsort; but he couldn’t write a unit test to save his life.  He was trying to write a test for a method that was–under the conditions in effect at the time–supposed to return 2.  He started like this:

obj.methodThatShouldReturnTwo ();
assertEquals (2,

Note that he had forgotten to save the result of the call to .methodThatShouldReturnTwo () in a variable.

So he stared at the code for a good five minutes, trying to figure out what to put after the comma in the second line. Suddenly he brightened and completed the test:

obj.methodThatShouldReturnTwo ();
assertEquals (2, null);

“Are you sure?” I asked him.

“Yes, yes,” he declared confidently, “that’s a failing test.”  He ran JUnit to prove it to me.

“True enough,” I agreed.  “Now make it pass.”

Unfortunately, I had to draw the interview to a close before he was able to write enough production code to make assertEquals (2, null) pass.

But these were the kinds of kids I was getting for interviews straight out of college, and it was making me angry.  Obviously, the colleges were not teaching the right things to help their students get jobs when they graduated.

Both my wife and my father are college professors, so I’m at least peripherally involved in the academic community.  I decided to try to do something about this travesty.

At the time I was commuting to an Agile project in Michigan.  So I called up a succession of computer science professors (total of three, if I remember correctly) and made each of them the following proposal:

I know the university gives you travel money each year.  So: why don’t you reserve a room at the Marriott Courtyard in Farmington Hills, MI for a week.  I’ll drive you up there Sunday afternoon, and all week you can sit in the team room and see how a real live Agile project works, and what the people who work there need to know.  You can participate in the meetings, talk with anybody you want, pair with the developers, go to lunch with us and talk shop–whatever you want.  You’ll see the whole cadence of an entire Agile iteration.  Then on Thursday afternoon I’ll drive you back home.  (And you’ll have the opportunity to teach your students what they need to know rather than what they don’t.  I didn’t say that part, I just thought it.)  So what do you think?

Without exception, all three of the professors turned me down.  They weren’t interested.  They had better things to do.  One of them even told me, in rather a snide tone of voice, “We don’t train software developers. We train computer scientists!”

Well, you might say that got my dander up.

At that time, I had already been volunteering in various prisons–including MCI–doing other things for fifteen or twenty years, and I knew there were a few guys at MCI who were trying to learn programming, mostly as just something to do to pass the time.  So I got hold of Jo Dee Davis of WinWin and asked her if there weren’t some way I could get a class started there.

I had visions of calling that snide professor back in the space of two years or so and telling him, “You pick your favorite pair of seniors, and I’ll pick my favorite pair of felons, and we’ll put them to work on a real-world programming task and see who comes out ahead.”  Probably won’t ever happen, but it was enough to sustain my interest.

So Jo Dee set me up with four guys, and we got JavaGuys started.

Since then I was moved from the commuter project to one right here in central Ohio with a health-care services company.  In the summer of 2010 I made the same offer (without the travel) to another computer-science professor, and he actually took me up on my offer.  Well, sort of.  He said, “If it turns out I can’t do the entire week, at least I should be able to do a day.”

You can’t experience much about an Agile iteration cadence in a day, but I was excited anyway.  Since the client was a health-care company governed by HIPPA, though, there was a lot more involved with getting somebody from the outside in for a week than simply inviting him.  I got his paperwork started with the higher-ups, and it took a few weeks to come through.  The day it did, though, I was about to call him and tell him so when he called me.  He’d found something better to do that week than learn how to train mere software developers.

Seems to me that if you’re a professor of something like mathematics, where it’s perhaps true that no significant discoveries or advances have been made since Rufus Bowen’s work on axiom A systems in 1978, it might make sense to just teach the same thing over and over from hire to retire and not worry about staying up in your field.

But computer science isn’t mathematics, and discoveries and advances are being made every day. I think it’s inexcusable to still be teaching C++ as the main programming language in a computer science major, and deal with the advent of languages like Java, C#, and Ruby by sticking in half an hour on automated garbage collection in a programming-languages course.

So there’s my li’l ol’ personal vendetta.  Colleges turn out computer-science graduates who are essentially worthless to employers until after a significant training investment has been made in them, and does so over four years at a cost of $70-100,000.  I think smart, passionate guys can learn much more useful things in much less than four years for much less money than that.  So we’ll see.

After a year of JavaGuys, there are two prisoners in the class who, if they were released tomorrow, would make (I think) excellent junior developers for Pillar, and one who would slot easily right into Pillar’s apprenticeship program.  Of course, I have to wait until they’re actually released to find out whether I’m just blowing smoke–and I don’t know when that will be–but I have my suspicions.


But–but there are CRIMINALS in prison!

It’s true enough.  Some of the JavaGuys may well be murderers or rapists or even child molesters.  I could look them up on the Ohio Department of Rehabilitation and Correction’s website and find out, but I choose not to.

This objection has been raised frequently.  Of course the people who raise it are entitled–and welcome!–to their own opinions, and I certainly don’t arrogate to myself the right to sit in judgment of them.  But here are a few points that drive me to the decisions I make.

There’s no need for me or anyone else connected with the JavaGuys to be in the least concerned for our safety around them.  The program is seen by the prisoners as a very good thing, and any attack on it–possibly even something as small as a wolf whistle at a female volunteer–could get the whole program ejected from the prison.  If that happened, life would immediately become very dangerous for the offending prisoner.  Everybody knows this.  As a matter of fact, there’s such a taboo against anything even remotely in that vein that in some cases the normal give-and-take of pairing can be hamstrung when a volunteer and a prisoner pair together because the prisoner strains to be pathologically accommodating.

The JavaGuys program doesn’t address crimes or victims or sentences or any other issues of “deserve.”  Once a prisoner is released from prison, events immediately begin conspiring against him to put him back in prison just as quickly as possible–even if he is determined to do the right thing.  (I had heard this, but had no idea how true it was until I began volunteering with ex-offenders.)  The program is intended not to minimize his crime, further injure his victim, or affect his sentence in any way, but simply to give him a better opportunity to find a decent job when he’s released.

Released prisoners who find that they can’t make it on the outside go back to prison–frequently for committing another crime against somebody.  I would rather see a released prisoner getting a job as a software developer than waiting in the shadows near an ATM as somebody–me?  my wife?  my daughter?–approaches rummaging for a card.

Smart, passionate developers who know what employers need them to know are getting thinner and thinner on the ground.  They are certainly not coming in large numbers out of our colleges and universities.  If it turns out that they’re available from prison…so be it.

And finally…anyone who can experience the passion and desperation of these guys to learn something that he can teach them, and then simply turn and walk away from them–whether because they’re prisoners or for any other reason–is just flat made of different stuff than I am.


The JavaGuys program, as the class is known, is a collection of around a dozen prisoners at Marion Correctional Institution who are part of the WinWin Institute for Response-Able Re-Entry.  The object of the class is to produce professional-level Agile software developers, with resumes containing knowledge and experience that prospective employers will find directly profitable.

We have students who were professional developers before they came to prison; we have prisoners who barely knew how to turn on a computer before they joined the class; and the rest of the students are sprinkled in various places between the two extremes.

Prisoners who are interested in being part of JavaGuys join a waiting list and take a test that is intended to evaluate their potential as Agile software developers, even if they have no prior experience.  I’ll probably describe the test in an upcoming post.

The class itself is divided into three parts:

  • Beginners, sometimes called the “nothin’ from nothin’ ’bout nothin'” guys, who spend their time learning the elementary theory of programming, elementary Java syntax, and test-driven development all at once, frequently with the help of Jeff Langr‘s aging but excellent book Agile Java.
  • Java students, who work through a series of programming problems of increasing difficulty and realism, ending with a cluster of web-front-end problems based on Tapestry followed by a cluster of back-end problems using Spring, JDBC, and Hibernate.
  • Project programmers, who participate in a real-world Agile project creating a real-world website for use by real-world people in solving real-world problems.  (The website is for a volunteer organization, so nobody makes any money on it.)

Students in the last two groups spend much of their time helping students in the first two groups.  Most of the passion and horsepower for the class is supplied by the students; they are certainly much more serious and dedicated than any college students I’ve ever seen.

Still, it’s difficult to impossible for me, as one guy, spending two to two and a half hours a week in the prison, to adequately address all three groups.

In the beginning, the class met with me for two to three hours a week on Friday mornings, because I was on a commuter project that allowed me to work four tens.  Since then, I’ve been moved to a local project that insists on five eights, so I go in for two and a half hours or so on Tuesday nights.

Lately, a couple of colleagues–Rob Conaway of Pillar Technology and Joel Helbling of LeanDog Software–have been hooked by the Code Reviews (I’ll probably mention them in a future post) and have been coming in with me on Tuesday nights.

Huh.  Three groups of students in the class, and now three outside guys volunteering to come in and teach them.  Almost enough to make a fellow believe in God.


I’m starting this blog because this whole thing has turned out to be much bigger than I ever intended.  Since I work for Pillar Technology, I’ve been posting occasional updates on Pillar’s company-wide Socialcast site, but as word travels farther and farther, more people from outside Pillar become interested in the program, and a Pillar-specific venue is no longer sufficient.

The whole idea started in July of 2009 as a personal vendetta of mine; it never occurred to me that anyone but I and the prisoners would be interested in it.  However, almost everyone I mention it to seems to want to know how it’s going on a continuing basis; so here we are.