Interview with Doug Bradbury, One World Coders – Part 4

In this installment, Doug talks about the apprenticeship model he helped to create at 8th Light and uses at One World Coders to on-board and develop new hires. To read previous segments of this interview:

Walsh: I know from my own past experience working with 8th Light and from what you’ve told me about One World Coders that you have a very evolved apprenticeship program.  I am curious to know more about that.  How long does it typically take someone to progress through the program?  What skills are you looking to develop in your apprenticeships?  How do you measure their growth and progress, and how do you know when they are done?

Bradbury: We have essentially taken, licensed, and adapted the 8th Light program.  We’ve got 18 areas of very specific learning outcomes.  Those range from automated testing to development process to consulting skills to algorithms.  We have this big matrix of learning outcomes for the apprenticeship, and we track progress against that list of outcomes.  The work that apprentices do is all project-based, all hands-on, giving them the opportunity to demonstrate their proficiency in each of those learning outcomes.  The apprenticeship is really about giving the apprentice the right challenge at the right time so they can learn the next thing.  We want to give them a challenge that has just enough learning in it that they can get that next thing and demonstrate competency with it.  Our typical time frame is around six months, but it varies depending on the apprentice and how many of those learning outcomes they come in with and how quickly they progress.  However, the learning never ends.  We do eventually put the apprentice on to projects with clients, and that is really what the end of the apprenticeship looks like.  When they have achieved those learning outcomes, or at least a sufficient number of those learning outcomes, that they can be successful on a project, they’ll move into direct work with a client.

Walsh: I know, too, that your apprentices are mentored by a more senior person in the organization, so do you consider the mentoring to be a part of the learning?  Is that structured in any way, or is it just implicit?

Bradbury: Immediately after somebody learns something, there’s always somebody in the organization to teach that thing to.  In fact, learning actually happens better when you are learning from somebody who just learned the thing.  It is hard for me after 18 years of professional coding to be able to explain something I first learned 15 years ago.  I don’t remember what it was like not to know it.  We talk about that as scaffolding.  We learn stuff only in proximity to things we already know, and we need to build scaffolding from what we know to the new concept.  An expert has basically torn down their scaffolding, and they just have the concepts.  They don’t know how they initially built up those concepts.  Somebody who has recently learned a thing still has their scaffolding in place, and they can help somebody else take that journey a lot better.  I rely a lot on the apprentices themselves and people who have recently learned something to be the primary teachers.  I’ve struggled with this throughout my career – what does it mean to master something.  In reality, mastery is a journey more than it is a place where you’ve arrived.  We can say that you’ve mastered a concept when you can teach it to somebody.  Essentially the definition of having mastered something is being able to turn around and teach it.

Walsh: Another thing that I find interesting in what you guys do as a routine part of your practice are what you call weekly katas.  Tell me about the katas.  Where does the idea of come from and what benefit do they provide to your staff?

Bradbury: Kata is a Japanese word that comes from martial arts practices.  Particularly in jujitsu and karate, they are these sequenced series of physical movements that somebody will perform for a group.  They are very precise, very sequenced, and a way to build fundamental martial arts skill.  We use the kata in a similar way.  They are practiced solutions that are then performed for a group of people. Often, we will use the kata as a way to introduce a concept or a new programming language to apprentices.  For example, if you are learning a new language and you ask somebody to solve a problem they have already solved in another language, then that exercise is really just focused on the language, not trying to figure out this other problem.  It is a way of focusing learning.  We use these inside of our team, and we go live on Facebook each week.  It is a chance for an apprentice to teach something, to demonstrate something, they’ve learned with live coding.  We’ve had katas focused on pair programming where the whole point was to demonstrate the process of ping-pong pairing back and forth.  We’ve had katas focused on editor optimization; using the built-in editor tools to refactor, for example.  Every kata has a purpose, and doing it live puts a little bit of pressure to do well.  It makes it more of an event, more of a big deal.  The people who perform do spend quite a bit of time practicing and perfecting, and they learn a lot from doing it.  It has a side benefit of producing some content for us, but the real purpose is as a learning tool.

In the next and final installment, Doug gives some advice to new programmers (and those who aspire to be), and he talks about conducting safe code reviews.

To learn more about One World Coders…


Leave a Reply

Your email address will not be published. Required fields are marked *