Mastery

credit: my oldest daughter

I haven’t always held a positive view of this concept. I mean of course I like it’s results when others have it such as an olympic athlete or a fine craftsman, but I didn’t think it was for me. I preferred to aspire to be a polymath, renaissance man, etc. rather than a master of any one thing.

I would identify with a quote like this and think that this guy has the right idea:

A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.
-Robert A. Heinlein

On the other hand I would see a movie like Jiro Dreams of Sushi and think no … no way. This movie had pretty wide acclaim but I immediately saw a dark side in it. The results of his craft I’m sure taste amazing, but at what cost? I saw he not only sacrificed his own life but his family as well.

Mastery is an old idea that seems to have lost favor in the western world. Mastery takes time and we want quick results. Why am I talking about mastery? There has already been plenty written about it but I want to share my personal experience of how I came to believe in it. I now believe in it’s merits not just for the results it brings when others have it but as a way to live for myself and maybe you will consider it too.

I’ve worked in the tech industry for roughly 17 years and I’ve had a lot of different experiences. Working on web software for the remote control of cameras during the early internet (2000), designing and setting up a Rube Goldberg type tech demo for a TEDx talk, designing a software system for handling the production of short strands of DNA, setting up a massive IP phone system for a call center, adding interactivity to an electronic book on Astronomy, teaching Minecraft programming to kids, helping beta test hardware and software used to dispense drugs and medical equipment in hospitals, you get the idea.

I loved having all these different experiences but recently I realized that the experiences I loved the most were the ones that involved programming. The reason for that is pretty simple, programming work is much more reliable than any other work I’ve done at getting me into a flow state. Mihaly Csikszentmihalyi, the psychologist who researched and popularized the modern understanding of this mental state, calls flow the secret to happiness. In my experience he is exactly right.

I’ve been freelancing for 10 years now and while it has been a fun ride I’ve realized that freelancing itself is not so conducive to flow and doing work that I enjoy. Too much time is spent on sales, administration, etc. Also, as a solo freelancer I’m more likely to be working on smaller projects for smaller companies. I like solving hard problems and usually there aren’t a lot of hard problems on small projects.

I want to work for a good company with a great culture. These positions are more sought after and while my diverse experience may be interesting to some of these companies I believe I will also need to prove that I really know my stuff if I’m switching from being a tech generalist to a pure software developer.

This led me to researching more into code schools and boot camps. I live in Japan with my family so right from the start most of the in-person boot camps were disqualified. Viking Code School emerged as a clear winner for being remote, comprehensive, affordable and flexible with time. However, while doing their prep work I came across Launch School which seemed to offer an experience even better than Viking Code School. Better for me and my experience I should say.

Viking, like most boot camps seems geared toward the beginner. I’ve been making web sites for over 20 years so I’m certainly no beginner but since I never really focused only on web development I’m very far from being a master at it. Most boot camps are only long enough to get you aware of different web development skills not necessarily proficient at them. The problem is that I’m already quite aware of different web development skills, proficiency is what I’m missing.

Viking for example had me watching videos and reading blog posts about UX and Agile Development (among other topics) in their prep work. These are very high level topics and I’m already somewhat familiar with them. At Launch School on the other hand, I’ve already spent over 90 hours over the past few weeks just studying Ruby and doing basic Ruby exercises. I haven’t even reached the level of their Ruby training yet where they introduce object-oriented programming. Web development concepts are even further away.

Now this is the level of fundamentals I was looking for. What’s more is that Launch School has various types of assessments at different levels that closely match the kind of coding questions you may get at a job interview. Also, and this is really the most important part I think, you can’t continue in the program unless you pass these assessments which only have about a 50% pass rate (edit: one of the Launch School founders told me after reading this that the rate had gone up to around 70% recently due to all the warning messages and increased study sessions). If you fail an assessment you may not to be able to take it again for another week or so and you will be given recommendations of what to study to help you pass next time.

As an aside if you’re wondering what learning Ruby deeply has to do with web development the point is that often people jump head-first into a high level web framework like Ruby on Rails without a good understanding of how Ruby itself works. Also, Ruby and Ruby on Rails are besides the point in this program. While web development tools and frameworks do move quickly there are fundamental programming and web development concepts that remain the same. Launch School wants to teach those concepts that don’t change so you learn Ruby to such a level that those concepts will easily carry over to Python, PHP or other languages if needed. Of course Javascript is the current hotness with tools such as React, Node and Angular. Launch School later on teaches Javascript for the front-end but it starts with the back-end.

Most code schools and boot camps have a fixed duration, like most school does, so you get very variable results at the end. It doesn’t matter if you understood everything completely, the course is over and its on to the next. At Launch School one student who has previous coding experience may only take a week or two on a section they have some experience with and pass an assessment on the first try. Another student who is a complete beginner may take several months to go through and pass the assessment on the same section.

The goal of Launch School is for both of those students to be equally proficient in that topic when they pass the assessment so it doesn’t matter how long it takes, what matters is if you know that topic really well or not. Launch School calls this Mastery based learning (yes, with a capital M). If you’re interested in this, these is a video that explains more towards the bottom of this page. Sorry/not sorry if this is starting to sound like a commercial for Launch School but I don’t receive any affiliate fee for this, I just really think they have a great program.

As part of their prep work they have us read a book on mastery (also not an affiliate link) which really turned me on to mastery. Even if you’re not interesting in programming or Launch School I would highly recommend this book to anyone. It’s a short book but it explains mastery much better than I could ever hope to. Give it a read and let me know what you think.

Funny enough the author is Aikido master and Aikido seemed to have helped him develop a lot of his ideas on mastery. So I started this blog post with a master sushi chef and ended with an Aikido master. Maybe these is something to learn from the Japanese here. As an American it is quite common to look down on rote, repetitive or what is sometimes perceived as robotic learning. We think that creativity and critical thinking are much more important.

Creativity and critical thinking certainly are important but think about how you learned your first language. It certainly wasn’t because of your creativity, no that had nothing to do with it. It really had a lot to do with repetition and making a lot of mistakes and learning from those mistakes and repeating again. And finally you mastered that language enough to become a fluent speaker, that’s not to say you stopped learning though. Mastery is a continuous never-ending process. You continue working on your mastery of your first language every single day.

I’ve finally seen the value of applying that same approach to my career. However, my jack of all trades time wasn’t time lost in the wilderness. It was a time where I was discovering what it was I truly loved to do. Now that I’ve found it mastery really seems to be best process I’ve found for deepening that love.