The Case for Mastering a Skill Before Moving On

I'm Gonna Need Both Cheeks For This One

My path to learning development has been anything but linear. There have been moments where I was ready to quit because I couldn't foresee learning all the skills needed for employment.

I started learning HTML, CSS, and JavaScript. Then I got a job where I would be teaching Java. So I started learning Java. I realized that even though I was getting really good at Java, I had a love for Front-End development. So I went back to my first path while still in Java. Looking at job listings and falling for the "which languages are the best" blogs made me jump into Python. I wanted to be Full-Stack. No, I want to just do Front-End. Is Back-End better?!?

I was overwhelmed and felt like I would never get down all the skills needed.

That's when a close friend of mine, who manages a team of devs at a Fortune 500, gave me some sage advice: become a master of one thing.

It made me think of Ron Swanson's sage advice:

Ron Swanson saying "Never half-ass two things. Whole-ass one thing"
Never half-ass two things. Whole-ass one thing.
I am someone who follows this rule in almost every aspect of my life, but man did I lose sight of it in learning to develop. Job listings made me feel woefully inadequate. I thought to myself, "Why would anyone hire a guy with an English degree who can't master all 75 languages listed in this job description?"

But wait, I teach for a living. I know that people who take on too much at one time, without processing it, really learn next-to-nothing. It's the reason I started taking all writing-based courses after my freshman year of college! My friend's words really just did a simple thing for me: they affirmed my gut-feeling that I should become a master, not a jack-of-all-trades. 

My Path to Mastery

He told me that his path to success was mastering JavaScript. He decided to learn JS so thoroughly that he could write a book about it. After talking about my goals in development and how much I loved Front-End, we agreed that my goal should be the same. I would master JS and then pick up the next skills to move further towards Full-Stack.

You may be wondering at this point how this is even going to work. How will I know Python? SQL? APIs? HTTPS? etc, etc, etc, ad infinitum!

Well here's the cool part about learning: when you master a skill and you really get it, other skills start to "glom on" or connect to that other skill. I am now solely focusing on JS. And yet, most of the resources that I am using have projects to help you master the content. Those sections are usually followed by descriptions on how to host those projects or run them in the command line. Because of this, I've learned the following technologies in my quest to master JS:

SQL, PostgreSQL, SQLite, XML, Python, APIs, Bootstrap, Flask, Unix, and more.

Am I master of these technologies? No way! But have I learned ten times more in my current quest than when I was on the war path to learn a whole job description's worth of tech? ABSOLUTELY!

My New Mental Frame

I am no longer rushing through courses and getting burnt out. I am on the path to master JS and that will come in time. I am jumping into tech in May 2019 and that can sometimes feel daunting. That's when I go look at my portfolio and how far I've come since I dedicated myself to mastery. I had nothing to show for my previous approach. 

I am going to be a great developer. I think critically (I am trained in the Liberal Arts) and am able to focus intently now that my scope of responsibility is manageable. There will come a time that I know JS so well I might change my scope. But for now, I'm whole-cheeking it.

Here's an added resource that really put the job search in perspective for me: