Introduction

Has there been a time where you said to yourself “I want to learn how to use Angular!” or “I want to learn Ruby on Rails!” So being probably completely clueless as where to start, you go over to trusty Google search with “How to learn Ruby on Rails”. This takes you over to a random tutorial, you read it over, take some notes, and never actually go anywhere with it. The tutorials would throw so much information at you, or sometimes too little and you would have wither incomplete knowledge of how it all works or be completely confused and overwhelmed.

Well lucky for you, I have spent so much time through trial and error, I have come up with a process that could take you from zero to application creator in much shorter time.

Start with the End in Mind

Many people attempt to learn a language or technology with no purpose behind it. Without the purpose, you are limiting your ability to retain the information you just learned and you are not nearly as interested in the material.

Solution: Create a Goal. This is where side projects come in. You need to have an idea of something you want to make. It does not need to be something new and revolutionary. In fact, it could very well be something that has been created 100000 times over (think a to do app). The whole point here is to give your mind an idea on what you want the end product or project to be and how you would like it to function. From here you want to create exact requirements on what you want this project to look like.

Select Tools

Once you have a clear picture of what you want to build, that is where you can choose the technologies for implementing it. For example, if you wanted to make a client side application, maybe I would chose React or Angular as the framework to use. Once I have selected the technologies to handle all parts of the application and what you would like to learn, it is time to start coding!

Minimum Basics Training

This is finally where you get to playing around with some tutorials. Except this time, instead of blindly attempting to find random tutorials, you now know what direction your project should be heading in.

The best way to start learning something is by attempting to handle the smallest and easiest thing first. In most cases this will be a version of a hello world app. The key here when doing the tutorials, is to type out the code exactly as it is, get it working in that example first. By spending the extra time typing out the example, you mind will build connections within the code and how the technology works and the individual parts interact. This is crucial for making progress. Once you have that down, what could be next?

Ask Questions

Now that you have some working code that produces some sort of output, you want start altering it to serve your purpose (this depends on your project/product you are making). Start searching (using either online or hard resources) for the specific parts that you are looking for. For example, if you needed to have a table in a PostgreSQL database with a column representing an id, I would search “ How to create a table with an auto incrementing key PostgreSQL”.

This process usually involves breaking down a requirement that you established in your project’s goal into what it means in computer science terms.

Now the process of being able to ask the right questions is definitely a skill that is learned and does not come natural to plenty of people. I used to be REALLY bad at searching. With enough practice, I have become significantly better, and it has saved me much development time. Please do not get discouraged if you struggle with this. Keep pushing.

Repeat

Now, that you have found a good example of a specific thing you need to implement in your code. Get it working. Then repeat for the next set of functionality.

You will constantly be repeating this process:

  1. Asking Questions
  2. Type up + Follow Along with Example/Tutorial explaining what to do
  3. Change it for your project’s needs

Conclusion

I hope you enjoyed this post and implement in your learning process. If you have any advice on how I can Improve this process I would greatly appreciate the feedback. Reach out to me on twitter. Check out my GitHub for my projects that I build using this method.

This post would not have been possible without the help of my mentor who taught me all about this process himself. The credit for this post goes out to him. I would highly recommend following him on twitter, GitHub, and check out his blog.