This post originated from an RSS feed registered with Ruby Buzz
by Dave Hoover.
Original Post: A Call for Apprenticeship
Feed Title: Red Squirrel Reflections
Feed URL: http://redsquirrel.com/cgi-bin/dave/index.rss
Feed Description: Dave Hoover explores the psychology of software development
At Agile2007 last week, I snuck into the last 30 minutes of Uncle Bob's talk about Craftsmanship and Professionalism. When Uncle Bob talks about Craftsmanship he is generally talking about nitty-gritty details of the craft, such as specific practices and tools, but he did have one slide on apprenticeship. He ranted a bit about how most universities do not equip graduates with sufficient skills to allow them to deliver quality software from day one. (Not to mention the significant number of people who come into software development from other fields and have never even received the inadequate computer science education that Bob was referring to.) Bob asserted that we need to apprentice these young people, these graduates and newcomers. Bob asserted that the most effective learning situation is one where a small number of apprentices work alongside an even smaller number of journeyman, who are receiving guidance from a master craftsman. It was music to my ears until Bob polled the audience for anyone who was working in that environment.
I proudly raised my hand, but my heart sank as I looked around and realized I was the only one raising my hand.
For the rest of the conference I felt a sense of pride at the revelation that Obtiva's Craftsmanship Studio is such a unique phenomenon. But I also struggled with a sense of sadness and frustration at the lack of apprenticeship opportunities our industry is providing to graduates and newcomers. My biggest point of frustration is with small companies (1-20 people) made up entirely of super-experienced, world-class developers, coaches, and trainers. I understand your compulsion to only hire people with over 5 years of professional experience who have established reputations, but I believe you're hurting the industry by implicitly refusing to take on the responsibility to apprentice a few people along the way.
Where do graduates and newcomers go when they're looking for their first gig? They go where people are hiring entry level people. This is where we lose some of our greatest potential because people who had the potential for greatness lose heart sitting at the bottom of mediocre, bloated, beaurocratic development organizations. Imagine if young Nathaniel Talbott, inexperienced and unqualified to do much of anything interesting, had found an "entry level" position, rather than becoming the first apprentice of RoleModel Software. Sure, someone else would have probably written test/unit. And Nathaniel would probably still have become a good software developer. But I am convinced that Nathaniel's apprenticeship made an impact on our industry, and we're better because of it.
Apprenticeship is more than simply hiring entry level people. Apprenticeship is coupling an apprentice to a journeyman. That doesn't mean they're pair programming all the time, but it does mean that the journeyman is overseeing the apprentice's progress and that the apprentice has an experienced developer in close physical proximity to turn to for guidance.
Furthermore, apprentices are not necessarily entry level people. Our first apprentices generally had a year or two of experience under their belt. Some are in the middle of college degrees. Some had recently graduated. One is re-booting his IT career later in life. Apprentices are people who are willing to take on a junior role that maximizes their learning opportunities as opposed to people who try to climb as quickly as they can into roles that maximize their financial opportunities. In my experience, if the apprentice has talent and the right attitude, their financial success will eventually follow their learning success.