How to Learn the Right Way : Personal Experience
Hello wonderful people 👋
First of all I want to tell you that today is Friday! Yayy, I have been waiting for this day from past FOOUUURRR days. I can understand your feeling also as a programmer, working the entire week and waiting for weekend to come. So, today I am not going to bore you with any coding stuff. Meh 😒. Instead, I wanted to share some of my personal thoughts on the lifecycle of how I learned programming and what are the different things I have faced in the process - irrespective of positives or negatives.
I wanted to learn web development in my second year of my college. Basically the reason is, I used to hate the concept of Competitive Programming, Data Structures and Algorithms which are kind of buzz-words back then in everyone's minds. I wanted something to happen instantly. Like I wanted to learn 'that kind' of coding, where if I start writing the code, I can able to visually represent what I am doing. You get the idea right? So, I started searching about what technologies will help me to do that. There are two options for me at that time: one is Android Development and another one is Web Development. I choose web development because I don't know Java back then as its the must known language to start with app development.
After that, from someone in the internet, I came to now that Udemy is the best place to learn web development. So, I went ahead and took a course named Complete Web Developer Course 2.0. It even has this description - Become a web developer and build projects. The instructor Rob Parcieval has explained very well, I felt very happy after starting that course and dedicated a lot of time on learning it.
I pretty much watched all the videos and completed every exercise the instructor asked me to do. Even I felt very proud also. It took me around 3 months to complete the course and I also got a nice looking certificate with my name on it.
The real problem!
So far so good. But one day after finishing off with that course, I tried to create something myself. So I opened my computer and opened my editor. Created some .html, .css, .js files and started writing some code. But, the real problem starts at that point. There was some kind of feeling deep inside me that is stopping me to write the code. Some lack of confidence. Doubtful about myself that I am not ready yet. I feel overwhelmed. I don't know where to start or even what to do.
Wait a minute. I should be able to act as a real web developer right? Because that is what the course description says. That's what my certificate says. But why can't I able to write a piece of code now?
So, after so many failed attempts, I felt that the learning I had out of the previous course is not enough. I still have to learn more. So, I went ahead and landed into codeacademy - a website to learn web development. So, I started going through the tutorials and like before, I was really happy that I was able to crack all the assignments and problems they are giving after every topic. I finished entire course and that took me 1 month.
So, now, time to write some code. But.. but.. but.. again the same problem. A feeling of insecurity of putting what I learned in the editor. I was able to do small and basic things. But not what is amazing and what I planned to do before!
So, unfortunately and forcefully, I had to take the same decision like before. Thinking that I need to learn more than I know at that time, I wanted to take another course. Its becoming like a chain now.
What is the problem?
After all these partially-failed attempts of becoming a Good developer, I finally started thinking where I am going wrong. And found that, I myself was stuck into something called "Tutorial Hell".
After some good amount of research, I was able to know what does that Tutorial Hell means exactly, and how to overcome it.
Let's answer an important question: What is this 'Tutorial Hell'? For once on my life, I can reply with a good Urban Dictionary answer:
'Tutorial hell' is typically the stage when beginner programmers come to 'sort of' knowing how to build some simple things, but nothing really complex or scalable. They seem to need a tutorial for every other task they are in need of doing.
Tutorial Hell is when we finish a tutorial with a sense of learning and knowledge, only to chain another one after the first. Or the second. Or the fifth.
And if you dare to try to write code for yourself, you feel overwhelmed. You don't know where to start or even what to do. So what you do? Another tutorial.
Finish a tutorial -> Try to start something on your own -> You feel like you don't know what to do -> Start a new tutorial -> Finish a tutorial…
And the wheel keeps turning.
And then you start a new project, you get stuck because you don't know enough. And what you do when you don't know enough?
Does this sound familiar to you?
I am sure it is.
Now the important part is, how I get out of this loop?
How I get out of this problem?
Now that I know I'm in Tutorial Hell, I know why. Let's escape this hole right now.
The easier way to escape from Tutorial Hell is not doing more tutorials. Ok, don't hunt me down, I know it sounds like "Are you depressed? Be happy, then!".
The only "very important" thing to overcome from it is - Build Something.
Yes, seems like an answer you might not expect. But, that's the right way to do it. Believe me.
I observed that there is a thin line of difference between a person who is already good at programming, and one who is not-that-good at it (like me at the moment).
Everyone starts the same way at the beginning of their learning path. But the one who takes that courage to build something after learning something, can able to easily find the right paths towards becoming a good programmer.
So, I took a challenge myself to create a complete end-to-end website for my college upcoming technical fest. I faced a lot of struggles in the middle like not knowing what to do and got stuck sometimes. At that time I learned how to google things. There are amazing people in the internet who already faced the specific problem I had every time. So, I got solutions. Websites like StackOverflow and GitHub and little bit of self learning and common sense helped me to pave the way to complete my challenge.
Long story short, I worked hard for three freaking months to complete the website which is good looking, responsive and also saves some data to database.
The final piece of advice that I can give you on how you can learn is:
Use the tutorial you just watched (and coded along with the video. Because you are doing that, right?) as an intro to your language/framework. Use to get your feet wet: Learn how to create a project, how to do basic stuff, the tools of the language, syntax, structure of a project, etc.
Then, replicate what you saw on the tutorial or even give it your personal touch.
Did you just finish a design tutorial where you built your own CV that looks amazing? Then build it again without the tutorial. Are you struggling with something? After a few minutes (or hours) of trying on your own, watch that chapter, incorporate it to your project and keep working without videos.
Did you watch a Django tutorial where you build a web app to manage the employers of a company? Nice. Build then a web app to manage a company. Employers, products, RH, products sold, add a nice graph with the current year sales.
You'll find problems you can't solve. And this time you are doing something different that you saw on the tutorial, so it is time to ask your friends, workmates, google the issue, ask on StackOverflow/dev.to/Reddit, look for articles, blogs (like this one!), etc to solve your problem.
It might sound tiresome. And I assure you it is. But also you'll learn a lot. Because there is no hand-holding now. You have to read and find between all the info, the piece that you need and discard the ones you don't.
Use tutorials as a baseline where you will build from, not as a crutch for everything you do.
This is completely based on my own experience. I faced troubles, but at the end troubles is what make you learn and correct yourself.
Hope you get something out of this story.