Learning How to Code For Self Taught Developers
Tags: codenewbie
Published: 2020-02-03 04:58:41


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.

1. Check out Barbara Oakley's course/book [Learning How to Learn](https://www.coursera.org/learn/learning-how-to-learn)  This course will give you a toolbox of techniques that you need to learn any subject.


2. Learn some computer science subjects. Whatever language you are you are using it's going to change. If you are a JavaScript developer you know this truth all too well. The human mind is not built for memorizing so much content. Learning a little bit of CS will give you a higher-level understanding of programming. Having this conceptual map makes it easier to understand niche subjects. [Teach yourself cs](https://teachyourselfcs.com/)  


3. 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](https://codepen.io/OG/pen/ReVVxa). To get better at programming you need to give yourself constant knowledge assessments. Create things that spark joy.

4. "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.


5. 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](https://www.100daysofcode.com/) to keep track of what you are learning. Or you can make a private commitment by starting a [developer journal](https://opensource.com/article/19/4/what-developer-journal). If you are more of a visual person then try sketching out a concept map. 

![software carpentry](http://files.software-carpentry.org/training-course/2013/08/OOP-1024x817.jpeg)

source: [Software Carpentry](http://swcarpentry.github.io/training-course/2013/08/concept-map-object-oriented-programming-basics/) 

6.  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.


## Resources

[Software Carpentry training Course](http://swcarpentry.github.io/training-course/2013/08/concept-map-object-oriented-programming-basics/)

[Keep Journals to become a better developer](https://dbader.org/blog/keep-journals-to-become-a-better-developer)

[Classroom Assessment Test](https://www.rit.edu/academicaffairs/tls/course-design/teaching-elements/classroom-assessment-techniques)

["How to teach programming (and other things)?" by Felienne Hermans](https://www.youtube.com/watch?v=g1ib43q3uXQ&list=PLcGKfGEEONaCToXJZ4Uk1NVW70U3C-Im-&index=2&t=0s)

[What is a developer journal](https://opensource.com/article/19/4/what-developer-journal)