The Way I Learn Things
Tags: codenewbie, writing, webdev
Published: 2020-01-23 17:47:04

![Learning new stuff](https://images.unsplash.com/photo-1521714161819-15534968fc5f?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1500&q=80)
_Source: Unsplash by @roadtripwithraj_


Today when we open Twitter, Reddit we come across a new framework, library, tool every next week, sometimes it can get very overwhelming.  You see other people working with this new concept and get excited, inspired by it, now that you have seen so much buzz around it you want to play with it, learn it and ultimately use it. But before you go ahead and make that decision, it is essential to know whether you are not simply learning it, investing your time into it because everyone else is talking about this new thing.



I in such case follow upon questions like:

- Will this new thing engages with my current stack
- Will it add value to my current projects
- Will it be required for plans I have in mind for the future


I usually visit the official website of the tool, library, framework and scan it trying to understand the product. I also watch *what is XYZ* videos on YouTube and when I am convinced by their concept, only then I decide to put the effort into it.


Now that I have decided to learn this new thing, allow me to introduce you to my process getting started with it.


> The way I learn things is not the only way everyone should, but this post will help you in the process. If you don't have a specific approach to grab on new stuff this post will help you to come up with something similar.

Learning something new is never easy, it is always a process for me. You should come to terms with yourself that it is ok to start slow, you should not undermine your efforts. The technologies can be very baffling and confusing all the time, somethings may take time in the beginning for you to grasp but you must not doubt yourself.

> Don't mistake familiarity for simplicity - [Carolyn](https://twitter.com/carolstran)


## The motivation behind it.
Whenever I come across something new that is making buzz over the internet I first research in an attempt to find answers to questions like 

- Why it was introduced, the reason for its existence
- The motivation behind its design and architecture
- What are the alternatives present in the community and how it overcomes them
- How my peers are finding it helpful and how they are adopting it in their projects


## Where to get answers from?

I firstly refer their official docs because that's from where everyone else is getting their information. Docs will have answers to most of your questions, the good thing about official docs is that most of them are structured in an incremental order where they define what you should know first before jumping onto the next functionality. This very necessary because learning the fundamentals is important no matter how good you are with other tools. Anything new you attempt, you should be aware of its fundamentals and should not disregard them.

Sometimes docs are not sufficient or are written in a very complex language or are not available in my first language, in these cases I look into examples and projects implemented using this new framework. Understand what they are offering and how they are structured. I go through videos and articles provided by fellow community members. 


### Go to resources:

**Articles**: Dev.to, Scotch.io, Medium, Reddit, Hashnode

**Tutorials**:  Youtube, Egghead, Frontend Masters, Udemy

Whenever you start with such content try to first finish it thoroughly don't jump into implementation with few reads or videos into them.


## Getting Started.

After you had spent a good amount of time around the new concept you will start wrapping your mind around it. It is now time that you choose a small idea around which the concept can be used or if it is something small try to plug it in your side projects. I find learning a new concept this way always benefits. When you try to implement it through an idea you come across the real-world implementation challenges. Solving these challenges takes you on a ride of incremental learning. 

For getting started, I use starter packs if available, but I make sure once I have a good understanding of the concept I look at what's happening in the starter pack. Then if needed I can come up with a starter pack of my own that meets my needs and style of working.

Once I get started working with the new concept, naturally, I will get stuck here and there. It is very important at such time I don't give up, and rather refers back to the tutorials continuously. If required I seek community help on platforms like Stackoverflow, Slack, Discord, Spectrum, Github repo or Twitter. Also, during the implementation of the concept, I like to maintain a gist or note where I jolt down key learning and implementation points. This document then acts as a cheat-sheet for me in future projects.


![new_skills](https://media.graphcms.com/PIinMspGRj2SMCwdL8eo)
_Credit unknown_
<br/>
Once I have developed this idea of mine into a small side-project I feel confident about this new concept and this very first project of mine becomes a reference point for me around it. 

From here on I now improve upon my skills, I learn about the best practices, patterns used with the concept, how I can optimize performances.


This post was originally posted on my website [Stud2Design](https://stud2design.tech/)
<br/><br/>