Being a self-taught programmer can be daunting. There is so much information out there from articles, Youtube channels, MOOCs, and more. The world of programming is massive and it's constantly changing. It is great to have so many resources to learn but it's hard to be able to process all of this information into your own skill. To have some sort of mastery over the subject. I feel like I improved my skills through brute force i.e. staring at code and repetition. I don't want anyone else to go through what I went through. So here is my advice on learning how to code.
Check out Barbara Oakley's course/book Learning How to Learn This course will give you a toolbox of techniques that you need to learn any subject.
You can't study theory or watch videos without writing a line of code. When I was in college I would watch code along videos. Whenever I tried to sit down and code on my own I was completely lost. Somewhere along the way, I did not understand what I was learning. Now I spend no more than 30 minutes reading or watching a video. Then I try to duplicate what I learned without looking at the answer. Once I duplicated the exercise I try to apply what I learned to a fun assignment i.e CSS images. To get better at programming you need to give yourself constant knowledge assessments. Create things that spark joy.
"If you steal from one author, its plagiarism; if you steal from many its art" Learn from others. I spend a lot of time online reading other people's blogs, websites and looking at code on GitHub. I take elements that I like and apply them to my own projects.
Take notes. Taking notes re-enforces what I learned for that day. If I can't put what I learned in my own words then I know that I don't understand the subject. You can create a log similar to 100 days of code to keep track of what you are learning. Or you can make a private commitment by starting a developer journal. If you are more of a visual person then try sketching out a concept map.
source: Software Carpentry
- Do projects. Whenever someone gives me this advice I get intimidated. In my head doing a project means to recreate Facebook from the ground up. A "Project" can be writing code based on what you learned for that entire week. A "Capstone Project/Portfolio" is what I would put in my portfolio. It's an accumulation of what I've learned so far.
I know the grind of being a self-taught developer is rough. Don't be afraid to share your story.