What to Expect From an Apprenticeship
Even after graduating from a 4-year university's Computer Science program, attending hack-a-thons, building side projects, taking on summer internships and doing everything a college Computer Science student does to get ahead, I felt underprepared for a career in the software industry. As a recent college graduate interviewing for jobs, I couldn't help but feel like a liar when trying to present myself as a programmer who can fully and professionally perform and contribute on the first day of the job. I could only wish for an opportunity that would help fill such a gap - until I stumbled upon what's called a software apprenticeship, that is. A software apprenticeship offers exactly that, an opportunity in which a mentor guides an apprentice in his/her steps to starting a career as a professional software craftsman.
Now, I didn't know what to expect from an apprenticeship; I had never met an apprentice before. So out of curiosity, I read through some of the resident apprentice blogs from 8th Light and made assumptions on what it might be like. But as with anything, it's hard to know what really happens unless you hear it from someone firsthand or you experience it yourself. I did get a glimpse of what to expect from the apprenticeship once I applied to the Resident Apprenticeship program at 8th Light and talked to my current mentor about it. But I wished that I had a chance to sit down with a friend who has been through the apprenticeship and hear it from him. And I'm sure most of the people looking into apprenticeship programs are just as curious as I was about what apprenticeships are like. So today, I speak to you as a friend who has been a resident apprentice at 8th Light in Los Angeles for the past four months, hoping to give you a clearer picture of what you can expect from an apprenticeship program.
I used to think that a mentor was a software engineer who would sit by me and teach me about software for the majority of the week. I even asked my current mentor during my apprenticeship interview how many hours in the week he would be spending with me. I assumed having a mentor was similar to having a private tutor because I was so accustomed to the traditional education system taught by teachers and professors. I couldn't imagine that someone in the position to teach me, was not going to lecture me. Now that I think about it, I was foolish; all I had to do was think about what the word: "mentor," really meant! According to the Oxford dictionary, a mentor is defined as "an experienced and trusted adviser." In software craftsmanship, a mentor is an experienced craftsman who guides the apprentice in the steps needed to become a craftsman him/herself.
Well, what does that look like? I'm sure it differs for different mentors and apprentices, but my mentor and I have a weekly meeting in which he assigns me readings, projects, and other assignments to work on, and he gives me feedback on the work I did in the previous week. During the week, I learn through the resources he provides me instead of having him lecture me on every topic. This doesn't necessarily mean I'm alone in my learning however; I collaborate with other apprentices and ask my mentor and other craftsmen questions regularly throughout the week. It is different from the traditional educational system that many of us are used to; however, the learning experience is comparably deep, rich, and focused with a mentor.
Every apprenticeship is different because the apprenticeship will be catered to the different backgrounds, strengths, and weaknesses in each apprentice. Of course there are skills and practices that resident apprentices are expected to know by the end of the apprenticeship. Yet, it's very different from learning at a school, where students have to follow an exact syllabus of materials. In an apprenticeship, the apprentice and the mentor constantly assess where the apprentice is, in terms of his/her skill, and focus on the skills that he/she needs to improve upon. Also, the apprentice has the freedom to voice his/her opinion on what he/she wants to focus on learning. For example, during the second week of my apprenticeship, I mentioned that I wanted to learn vim because I wasn’t good at it. Immediately, my mentor showed me several resources for learning vim and told me to use vim and only vim for the week. He then enforced this by telling all of the craftsman to keep an eye on me to see if I use any other text editors. Lastly, there were rarely any instances in my apprenticeship when I thought I wasn't taking anything away from the assignments I was working on.
Becoming an apprentice among many craftsmen sounds a little scary. It means you're going to be the "worst guy in the band" as Chad Fowler says in The Passionate Programmer. It's intimidating to be around more knowledgeable people and muster up the courage to ask them questions. For me, I'm used to the odd university learning culture in which people are afraid to ask questions in the lecture hall lest they get judged by their fellow students. In this culture, people help each other learn, but just enough so that they will still struggle to fully understand the problem and get a lower grade on the exam. Within this culture, I grew accustomed to finding answers on the internet through hours of research instead of asking people questions. In other words, I couldn't trust people to give me honest answers without judging me for knowing less than them.
At 8th Light however, I found the culture of learning to be unlike anything I've seen before; it was almost unbelievable at first. Thinking back to the week in which I was learning vim, I remember that not just one, but multiple craftsman, came up to me and offered to help me set up my vim configuration files and teach me tricks in vim. I was astonished by their genuine willingness to help. Nobody told them to do so; they did it simply to help me learn. On top of that, they always respond with the same genuine kindness when I ask them questions. I could only conclude that it springs from the fact that they have all been through the apprenticeship and understand what it feels like to be “the worst guy in the band.” Although I can't speak for every apprenticeship program out there, I am confident that such kindness and understanding abounds in all of the craftsmen that once held this humble position as an apprentice.
Honest Feedback From a Professional
I had a summer internship position in college for 3 months working on a Ruby on Rails project. I wrote a ton of code and I got to touch many different parts of the application. Yet, I felt my skill level as a programmer was about the same as when I started the internship at the end of the summer. What went wrong? I thought internships were supposed to take me to the next level! I didn't realize it until I became a resident apprentice at 8th Light, but it was the lack of feedback on my work. My boss did give me "constructive feedback" at the end of my internship, but I think he was required to do so by the company. What I wish he had done instead, was to give me feedback on my code, on a regular basis, but the only thing I remember my boss saying about my code is, "good job."
But if you have seen the movie Whiplash, the drum instructor, Terence Fletcher says, “there are no two words in the English language more harmful than 'good job.'" He says this because he knows that people cannot achieve greatness without being pushed beyond what they believe is good enough. Andy Hunt also mentions in his book, Pragmatic Thinking & Learning: Refactor Your Wetware, that in order to become an expert, one needs to be self-aware and constantly reevaluating themselves. Seemingly, what takes people to self-awareness, and ultimately, greatness, is honest feedback from a professional. Professional in the sense that this person know the craft well enough and honest in that they are not afraid to tell others what they truly think about their code quality.
In my apprenticeship, I receive honest feedback about my code on a regular basis from my mentor and other software craftsmen. Receiving such feedback does hurt me a little on the inside each time because I realize that I'm not as great of a programmer as I had previously thought. However, I have been able to become a far better programmer over the past four months than I had imagined because of this very thing and I am very thankful to the craftsmen that willingly do this for me.
Apprenticeships are rare in the United States. According to a report by Robert Lerman, published in June 2014, only 0.2 percent of the U.S. labor force was made up by apprentices compared to Canada (2.2 percent), Great Britain (2.7 percent), and Australia and Germany (3.7 percent). I consider myself lucky to be one of the few software apprentices in this country, not only because apprenticeships are rare, but because it's hard to find yourself surrounded by so many software craftsmen. And the ultimate goal of an apprentice is to become one of these software craftsmen. Today, it's hard to find programmers who truly and passionately care about building high-quality software. It's hard to find professionals who stay disciplined to stay committed to code quality over hard-pressing managers. It's hard to find experts who willingly sacrifice their precious time to mentor a newbie in the field. And for those whom aspire to be all of the above, an apprenticeship may be exactly what you're looking for.