A Comprehensive List I'd Like to Give my Past Self
Tags: codenewbie, beginners, tips, webdev
Published: 2020-08-20 15:36:28

I'm incredibly lucky to be starting my path in a generation where there are so many good (and free) learning resources! However, that's what makes it a bit daunting to get started, because we sometimes don't know what will work best for us as individuals.

I've recently shipped [my first project](https://moreeyesplz.com/), and I wanted to write a post to others in case my journey may be helpful for them. 


If I could rewind time, I'd tell my past self to start here:

1. [FreeCodeCamp](https://www.freecodecamp.org/learn/) - It's literally a free code camp. This is a great resource that got me kick-started with HTML, CSS, and vanilla JavaScript. Everything is there for you in the browser, so you don't even need to download a code editor to get started. They have a YouTube channel as well that goes through the exercises if you want someone to help "instruct" you virtually.

2. [Eloquent JavaScript](https://eloquentjavascript.net/) - I found JavaScript hard to pick up (still do!) I'm still going through this book and rereading chapters over again, but this was really helpful in getting a deeper understanding of JavaScript, and the online version is free!

3. [JavaScript in 30 days](https://javascript30.com/) - Essentially 30 days of small JavaScript projects that are pretty cool to help you get more experience understanding DOM and vanilla JavaScript. What I liked best about this resource was that I could see some better ways to organize or write my code as it comes with an answer key and each lesson has a walk-through video. However, you're going to need to download VS Code or some code editor, and you're going to have to learn how to use GitHub and CLI commands to get started.

4. My free trial of bootcamp - Bootcamp isn't for everyone, and I found out that it wasn't for me. But one of the days were extremely valuable as it got me quickly familiar with git bash, GitHub, and workflows. However, if I were to go back in time, I'd take back the few weeks I spent here and learned how to use version control via documentation or youtube videos.


I'm ready to start coding my first project! What do I need to get started?

1. [VS Code](https://code.visualstudio.com/) or any code editor. For VS Code, after you get it, search on YouTube for a few VS Code extensions people recommend for Web Dev and download those. You can always remove any you don't like later!

2. [Git Bash](https://git-scm.com/downloads) - This looks scary! But you'll need to learn it so that you can use commands in the git bash terminal to get your workflow up and running. This [CLI cheatsheet](https://www.git-tower.com/blog/command-line-cheat-sheet/) will help you.

3. [GitHub](https://github.com/) - Make a GitHub account and get started by learning about [git commands](https://www.git-tower.com/blog/git-cheat-sheet) and how git works. Essentially this is how you work on code with others via version control. Think of it kinda like how google docs work, kinda.
 

Cool! I've done the JavaScript in 30 days and I've done a few small projects. I want to learn how to do things more efficiently now! What tools should I use?

1. [Sass](https://sass-lang.com/) (or Less) - It lets you write your CSS in a more efficient way which then preprocesses into CSS. You can nest your CSS, use mixins, functions, and do so much more.

2. [React](https://reactjs.org/) (or Vue or Angular) - These are frameworks/libraries that help structure your JavaScript. I went with React because it's been around awhile and so there's a lot of resources around it, and it's currently the most widely used. MDN has a [great tutorial](https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started) for learning this.

3. [Material UI](https://material-ui.com/) (or Blueprint.js or some other React toolkit) - Never make components again! Need a button or a tag? Grab it from the toolkit and override any CSS as needed. Spend your time coding, not designing from scratch. 

4. [TypeScript](https://www.typescriptlang.org/) - This is so helpful as it really helps to give you errors that are more descriptive so that you can debug quickly. It's a bit painful for me sometimes since I'm still learning how to use it and I don't understand what all the errors mean, but I can already feel the value!

5. [Jest](https://jestjs.io/) - Test, test test! It's important to write test scripts for your code! It's something I'll be working on in the coming weeks so that when I make changes, I can see the downstream impact.


Youtube sites that are worth taking a look at when you just want someone to show you something because you're tired of reading documentation:
- [FreeCodeCamp](https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ)
- [Fireship](https://www.youtube.com/channel/UCsBjURrPoezykLs9EqgamOA)
- [Web Dev Simplified](https://www.youtube.com/channel/UCFbNIlppjAuEX4znoulh0Cw)
- [The Net Ninja](https://www.youtube.com/channel/UCW5YeuERMmlnqo4oq8vwUpg)
- [Programming with Mosh](https://www.youtube.com/channel/UCWv7vMbMWH4-V0ZXdmDpPBA)
- [CodeSTACKr](https://www.youtube.com/channel/UCDCHcqyeQgJ-jVSd6VJkbCw)
 
Other sites worth mentioning:
- [MDN](https://developer.mozilla.org/en-US/) - the place to go for documentation around web dev. Don't forget to sign up for their emails!
- [CSS Tricks](https://css-tricks.com/) - As the name implies, a great resource to see how to use CSS in fun/creative ways.
- [GFonts](https://fonts.google.com/) - a place to get fonts for your website
- [Unsplash](https://unsplash.com/) - free photos for your website
- [unDraw](https://undraw.co/illustrations) - free vector/svg illustrations for your website (we used them for more eyes, plz!)
- [favicon.io](https://favicon.io/) - create a custom favicon (that icon/image on the webpage's window tab)
- [Font Awesome](https://fontawesome.com/) - so that you can use icons
- [Vim](https://www.fprintf.net/vimCheatSheet.html) - download Vim as an extension on VS Code and use keyboard shortcuts. Never touch your mouse again
- [Normalize.css](http://necolas.github.io/normalize.css/) and [CSS Reset](https://meyerweb.com/eric/tools/css/reset/) - a ways to get your CSS to render all elements more consistently

General Tips:
- Code everyday!! Even if that means doing a few [HackerRank](https://www.hackerrank.com/domains/tutorials) or [Edabit](https://edabit.com/challenges/javascript) problems.
- Don't fear the documentation! It's the best place to read first to solve your problem. Don't guess and check, read the source documentation and then google for additional help.
- Reiterate your code! The first time is almost never going to be your best code. It's going to have some bandages as you try to fix it up because of some oversight. Clean it up and look for ways to make your code more readable.