The Best Way to Learn Development Skills (While Getting Paid in the Process)

Written by michaelmangial1 | Published 2017/06/19
Tech Story Tags: javascript | web-development | startup | developer | entrepreneurship

TLDRvia the TL;DR App

The best thing about modern development is that there is a tremendous amount of available resources. The worst thing about modern development is that there is a tremendous amount of available resources.

If you are reading this post, you can resonate well with this quote. Like me, you probably enjoy the fragrance of modern development. No matter your prior experience, the fact that you can go online to learn development skills and get a new job, do freelancing work, or explore the possibility of launching a startup provides an aromatic bliss.

In my childhood, I experienced the sensation of money burning a hole in my pocket (as my mother would tell me). Someone would get me a gift card to a store. I went to the store. Let’s say Best Buy. I would walk around for an hour (maybe more) tossing back and forth on how to spend my gift card. A lot of times, there was nothing I really wanted, and if I had waited longer, I could have gotten something better. Nevertheless, I felt the urge to buy something immediately and was often disappointed.

This same sensation can be created when trying to learn modern development. There are so many great resources to learn and topics to explore, but there’s only so much time in a day. If not handled properly, this can easily lead to fatigue.

While modern development presents many opportunities, it presents so many opportunities that it is hard to focus on a particular skill-set and it is hard to maintain motivation when fatigue hits.

Unintentionally, I have discovered a solution that allows me to focus on the current skill I am learning and provides plenty of motivation (including financial incentive).

The Test Dummy Method

The solution is the Test Dummy Method.

Test Dummy Method refers to testing a new skill and creating content as you learn.

Let me explain this more with my story on how I unintentionally discovered this method and the benefits I reaped.

My Story

I graduated in December of 2015 with a degree in Computer Science. I learned the fundamentals of C++, Java, and a tad of outdated web development.

Despite the nice degree to slap on a resume, I had no idea what in development I wanted to focus on and I couldn’t land any jobs.

I settled on an IT help desk until I could land a developer job. On my first day, I had to screw in light bulbs which set the tone for months of frustration.

Around the same time, I was getting into entrepreneurial podcasts and such. This got me interested in modern web development as I was interested in the many startups that we based off of web applications. I also picked up on the common advice being circulated which was to create products based on your passion and skills.

As my web development interests increased, I decided to try to learn React in my spare time.

Shortly, I ran into fatigue and wanted to give up. Here’s a made up conversation to summarize my struggles:

Online Resources: React is what you want to focus on for creating user interfaces for modern web applications.

Me: Sounds great! What do I need to do to start a new React project?

Online Resources: Yeah. We can initialize our project with npm. Then, we just need to install and configure Webpack and Babel so we can write in _ES6_instead of ES5. Then, we can install React and ReactDOM so we can start coding with React.

Me: Um. What’s ES6? Why do we need to use Webpack and Babel? Also, React and ReactDOM to use React? Is that a typo?

Online Resources: ES6 is a newer release of ECMAScript. It’s not well implemented in browsers but has some cool features that we can use. Babel processes the ES6 code and makes it compatible with browsers that support ES5. We can use Webpack to bundle our code and apply Babel. React is one library but you need to also include the ReactDOM library to make things work.

Me: _ECMAScrip_t? I thought we were talking about JavaScript. I’m not sure what bundling your code refers to. You know…this seems like a lot of work just to get started. What’s the benefit of React after all?

Online Resources: You can construct a user interface out of components that encapsulate JSX and data. It’s really modular.

Me: JSX?

Online Resources: Yeah it’s just JavaScript syntax for defining what you want your component to ultimately render as. It looks a lot like HTML…just use_className_ instead of class.

Me: That kinda makes sense. Let’s carry on then.

Online Resources: Sweet. Let’s start by me showing you the code for a Hello World component.

Me: Looks kinda awkward at first but these components do seem like a cool concept. I mean that Hello World component wasn’t bad at all.

Online Resources: Great! I know you seemed a bit confused about creating a new React project. Don’t worry. There’s an awesome starter kit on GitHub that comes loaded with Webpack, Babel, and Webpack Dev Server. Go ahead and clone it.

Me: Woah. I have no idea what half of this code does. However, these components look familiar. I get the basic components, but why is there nesting of components going on?

Online Resources: Oh! That’s just because we can break up a view of a user interface into parent and child components. Then, we can pass data down between them.

Me: But there’s way more than a parent and child! There’s like a great great grandparent and great great grandchildren and the whole ancestral line in-between. What gives?

Me: You know what…don’t answer that. React is popular so it must be simple. I’m probably just dumb for asking so many questions. Clearly, I’m not fit to be a developer. I’ll give up on this attempt to learn modern web development.

After these struggles, I found it hard to try to keep learning modern web development after a long day of work (and powerlifting at 5 AM) instead of playing PS4.

I put aside React and played through the Uncharted series.

However, I did get into vector graphic design during my lunch breaks as it felt like good stress relief. I started to get really good and confident in this new skill.

One day, I discovered Codepen and started to make pure CSS images as they were similar to the vector graphics I was making.

Zelda | A Link to the Past | Pure CSS

I started to tweet about the new pens I was making and got a lot of great feedback which was incredibly uplifting.

SNES Controller | Pure CSS

Because of the uplifting feedback, I decided to take things a bit further and write a Medium post called A Beginner’s Guide to Pure CSS Images.

A Beginner’s Guide to Pure CSS Images

Although I only knew the basics of pure CSS images and knew nothing about animations, SCSS, etc., I was getting even more great feedback which provided a crazy amount of encouragement.

After this, I decided to test out Vue.js by making some more visual-friendly things on Codepen.

Then, I would write a blog post on Medium teaching people how to create the things I was making with Vue.js.

I organized all of these posts in a Medium publication I created called Coding Artist.

I stepped further into modern web development and eventually created products as I was learning like an ebook called React.js for the Visual Learner.

React.js for the Visual Learner

Long story short, I was able to finally learn new things in the space of modern web development without hitting fatigue by creating content as I was learning.

I had become a test dummy. I tested out new skills and then created content that would inevitably teach those skills in a super practical way.

Because I was creating content that was teaching what I was learning, I was not getting distracted from jumping ship to learn other skills too early. I also had tremendous incentive to help others learn, get great feedback, make connections with other developers, and create products that I could sell.

Now, I want to give actionable steps on how to implement the Test Dummy Method yourself.

Implementing the Test Dummy Method

Step 1: Find Your Passion

Ethical hacking? Machine learning? Frontend development?

What interests you the most?

This may seem like conflicting advice. On one hand, the Test Dummy Method is meant to be a solution to people bouncing around different skills aimlessly. On the other hand, you do need to explore which skills interest you the most. How can you handle that tension in this step?

You can discover your passion without aimlessly bouncing around different skills which usually involves assigning yourself tasks which are way too tall.

Research different skills in modern development. Look at how they are being used in the modern world and the possible career paths. If possible, you can test it out on a very small scale.

Write out the pros and cons and ask around until you settle on a passion.

Step 2: Bite-Sized Learning

Once you discover a passion, you can start to learn new skills in a bite-sized fashion.

Let’s use frontend development as an example. Instead of trying to start by making a dynamic React application that you can put on Product Hunt (I’ve seen this happen), create mini applications that incorporate new skills that you are learning. In my case, I created a Pomodoro clock as I was learning Vue.js and other mini-apps.

At this stage, you can start sharing your work on Twitter and get feedback from other developers.

Step 3: Write Posts

Once you have started to chip away at learning new skills in your passion, write posts on Medium that teach other people how to create what you made.

Remember how you felt as you were trying to learn the new skill and what challenges you faced. Keep that in and aim to be as practical and detailed as possible in your writing.

A good post should tell a story. Here’s a formula that I like to use:

  1. Mention a problem
  2. Tell story of how I solved the problem
  3. Show people how to solve the problem themselves

At this stage, share your posts on Twitter.

Step 4: Create a Product

By this step, you should understand the basics of the new skill you are learning and contain a boosted confidence after sharing your creations and posts.

However, you may be in need of taking your skill and applying it to a real-world scenario.

As you take your skill and pursue a real-world project, you can create a product that teaches people the entire process.

For example, I had a good understanding of the basics of React by making mini-apps on Codepen. However, I had never created my own modular user interface. I decided to write an ebook that would walk a beginner to React through the process of learning the basics and then creating a modular user interface from scratch. I released each chapter on Medium.

Because you are creating a product as you learn, you will have a huge incentive to overcome hurdles and not fatigue.

You may be thinking: “What types of products can I make?”

For developers, the best products are:

  • Video course
  • Ebook

However, you can get creative and explore other options. In my experience, creating an ebook was much easier and smoother than creating a video course.

For my ebook, I wrote 10 chapters and each chapter took 8–20 hours.

Step 5: Sell the Product

If you put in the hard work and feel like your product is very helpful for the development community, there is nothing wrong with selling it.

If you are selling video courses, a good platform for this is Teachable.

If you are selling ebooks, I really enjoy using a platform called Leanpub.

With my ebook, I have generated $11 revenue in 3 weeks. That might seem incredibly small, however, it can sell passively, it’s better than the revenue of $0 from normal self-teaching methods, and it is a really impressive feat to mention in job interviews.

Out of everything I have tried, the Test Dummy Method has been the most helpful for becoming a better developer without fatigue.

Now give it a shot and provide feedback in the comments!

Thanks for checking out this post. If you would like to support what I’m doing, you can become a patron.

Update: I have written a follow-up to this post called The Developer’s Guide to Creating Ebooks (While You Are Still Learning the Topic)

Cheers,Mike Mangialardi


Published by HackerNoon on 2017/06/19