I just got back from the Software Craftsmanship North America conference in Chicago. I knew that the industry was ready for a new model of training, but I was a bit overwhelmed by just how ready. I can honestly say that they were actually beyond ready… they were hungry.
At the welcome reception, one craftsman or journeyman after another greeted me (whether they knew me or not) and congratulated me on the opening of the Craftsmanship Academy. They all stated in one way or another that the universities weren’t preparing people for the realities of software development and didn’t seem to care. Many asked how I was going to approach their education and nodded approvingly when I told them what and why I was going to do. I probably told the story about teaching data structures in context, a half dozen times to people whose collective response seemed to be saying “I always suspected how much easier it could be to teach theory in the context of practice.”
Corey Haines gave a great keynote at the opening of the conference. He started out saying that he was a little bit worried about the future of software development. He was concerned that we might be “doing it again.” Doing what? Making the mistakes the industry did in the late 90s… Hiring anyone who had a particular language on their resume, and producing a lot of disappointing results.
One of the reasons was that the universities weren’t preparing its graduates for the realities of software development.
Corey said that though learning a language is not trivial, it is also not that hard. (This was echoed by Zed Shaw and others later at the conference). Software development, especially the kind that provides real value for business, is hard. No one in the industry who actually does software development for a living would tell you that the majority of their job consists of typing code into files that will eventually compile. There is so much more to software development. Corey feels for the many unfortunate business people who don’t know enough to tell the difference, so they often hire people who know a language but don’t know how to develop software, and they waste a lot of money because they don’t get the value they need.
Corey also pointed out that he had a lot of hope. He listed RoleModel Software’s Craftsmanship Academy as one of the reasons for his hope. He was not only pleased with our offering, but also pleased that the community attending this conference and beyond was intent on training up the next generation.
Shortly after Corey’s talk, Chris Parsons from the UK gave a talk entitled, “Universities: Who Needs Them?” He challenged the value of teaching theory without much practice and ignoring all the things that actually makes for success in software development. He challenged the audience to begin figuring out how to get entry level folks from high schools before they spent too much money learning a lot of theory out of context. One thing he said that a university might be good for is teaching theory after they had more practice under there belt, but that it would be better to get “just in time” theory that could be pulled as it is needed in smaller chunks. He, too, mentioned our Craftsmanship Academy by name as a much better solution.
Though I must admit all the free publicity was great, that really wasn’t the point. It seemed that about half the sessions at the conference at least mentioned the fact that some sort of apprenticeship model was absolutely necessary for training up software craftsmen and, either explicitly or implicitly stated, the universities were not even beginning to prepare its graduates for real world software development. There was a very well-attended panel on software apprenticeship, the theme of which pointed out that taking on apprentices was hard but necessary work, and openly shared the lessons learned from trying. Interestingly, this panel, hosted by Michael “Doc” Norton wasn’t led by those who were just experts on the theory, but who had actually had practical experience with apprentices. Though they acknowledged that the theory taught at universities had some value, it was easier to fill in the theory in the context of practice than to teach those who were taught the theory how to effectively do the practice.
There was a lot of excitement about our program because it made it much easier for those wanting to take on apprentices/interns to find qualified people. As of the moment I write this, I have two qualified software craftsmanship shops who already signed up to pay for the privilege of interviewing the program’s graduates, and a bunch of others who told me they were planning to apply when they got back to their office.
I talked to people in several shops who told me how hard they have been looking for sources outside of college graduates. Some used local tech colleges to search for people who were on top of the class and hired them in the summer, trying out summer students and hoping that one would stick. Others would just look for young people who had done some programming and spent a long time interviewing them. Though they found better success with these methods than hiring university grads, they just swallowed hard about all the things they had to teach these entry level folks that they had not picked up elsewhere. No one even mentioned recruiting from any of the several week certificate programs. Though I did not discuss it at length, I believe that they recognized that many “certificate programs” just taught enough to pass some test and get a certificate, They don’t teach very deeply and often prey on people who were just looking for an easy way to get a job and did not realize how thin a slice of training they were getting and how limited their opportunity might be afterward.
The industry is crying out for better and deeper training, but it seems like the offerings are quick-hit certificate programs or four (or more) years of your life and a bunch of money getting a lot of theory, much of which is not very practical or appropriately framed, with gaping holes.
I was recently pointed to the article What They Don’t Teach Law Students: Lawyering in the New York Times. It seems that software development isn’t the only field with this problem.
We need more programs taught by people who are good in their field and really care about teaching. It is a hard balance to strike. Those who are good at their craft want to practice it and get better at it. Even if they love to teach, they have to limit their time at it so they don’t become academic and lose their edge. I was asked about starting a school for years but couldn’t come up with a model that I thought could work until I finally heard about the farrier model of teaching craftsmanship and Chris Gregory’s approach at Heartland Horseshoeing School. Chris only keeps his school open for part of the year. He uses the rest of the year to keep on top of his trade in a variety of ways. That’s what we’re doing.
Though we are encouraging others to do the same, it is still a hard thing to set up. In the meantime, I’d encourage parents and young people and anyone looking to switch careers to heed what the best professionals already know. Universities teach theory (and some certainly do it better than others). Those who are best at their practice are looking for those who are prepared to practice. Theory is only a piece of that and needs to be placed in context.
Look for alternatives. Create alternatives. You will stand out from the crowd.
By the way, people who care about being good at the practice of their craft are rarely out of work. There are up times and down times, for sure. The folks in the software craftsmanship movement are hiring, but only the kind of people who, like them, care about the practice of their craft.