Software Apprenticeship

In Software Training Sucks: Why We Need to Roll it Back 1,000 Years, Rob Walling makes a compelling argument for abandoning traditional training classes in favor of apprenticeships:

[Why not] use the time-tested approach of trades that have been doing it for years? Let's take an electrical apprenticeship as an example: in the United States today, the International Brotherhood of Electrical Workers (I.B.E.W.) trains thousands of electricians every year. They learn through two distinct experiences:

  • Attending night school during the week to learn the theory of electricity.

  • Working days on a construction site where they're able to gain experience applying the theory to the hands-on construction of a building

His first day on the job an apprentice is paired up with a journeyman (an experienced electrician), who shows him the ropes. The journeyman typically talks the apprentice through a task, demonstrates the task, has the apprentice perform the task, then gives feedback. Listen, watch, do, review.

Ye Olde Apprenticeship

With software it looks like this: the mentor evaluates the task at hand, be it writing data access code or building a web-based user interface, and holds a white-board discussion with the apprentice (listen). Next, the mentor might write sample code demonstrating a particularly difficult or confusing concept (watch). At this point the mentor sends the mentee off to gain their own experience writing code (do). And finally, the mentor should review the code, providing positive and negative feedback and suggesting improvements (review). Listen, watch, do, review.

[..] the key to any type of apprenticeship is the "do" step. Most software training gives you the listen and watch, but the "do and review" is what inspires growth and advances skills. The beauty of apprenticeship is that it tackles theory and experience in one fell swoop. And it's easier than you think.

Instead of a loose confederation of tribes, maybe we should be cultivating apprentice, journeyman, master relationships in software development.

The mixture of theory by night and real world coding by day is particularly compelling. Maybe this is why I've seen so many talented interns turn into amazing developers – they're working on real business code while getting the computer science courseware theory, too.

Being a good mentor isn't easy, though. I have difficulty mentoring developers who are too far apart from me in skill level. I'm too impatient. If you're putting football players together on a field to scrimmage, don't mix professional players with high school players. The skill disparity is too great for them to actually play football together. And how can they learn without playing the game? Now, if you throw some college football players in the mix, it's on!

Read more

Stay Gold, America

We are at an unprecedented point in American history, and I'm concerned we may lose sight of the American Dream.

By Jeff Atwood · · Comments

The Great Filter Comes For Us All

With a 13 billion year head start on evolution, why haven't any other forms of life in the universe contacted us by now? (Arrival is a fantastic movie. Watch it, but don't stop there - read the Story of Your Life novella it was based on

By Jeff Atwood · · Comments

I Fight For The Users

If you haven't been able to keep up with my blistering pace of one blog post per year, I don't blame you. There's a lot going on right now. It's a busy time. But let's pause and take a moment

By Jeff Atwood · · Comments

The 2030 Self-Driving Car Bet

It's my honor to announce that John Carmack and I have initiated a friendly bet of $10,000* to the 501(c)(3) charity of the winner’s choice: By January 1st, 2030, completely autonomous self-driving cars meeting SAE J3016 level 5 will be commercially available for passenger

By Jeff Atwood · · Comments