Orientation Day
Welcome to Natan Coding School đ
SOâŚ
The topics weâll cover will generally fall into 2 categories:
- Stuff you need to get in a company
- Stuff you need to do your job in that company
Dedicated 20% of your time for the first category and 80% for the second.
Recommended Languages
-
JavaScript
Learn this first if you wanna do frontend/fullstack. If a company wants anything web-based, they have to use JS. -
TypeScript
JavaScript is full of flaws, but this language makes up for it. Learn this alongside JavaScript. -
Bash
a.k.a âLearn how to use the terminalâ. -
Python
I use this + bash to automate a lot of things. A lot of companies are also using this as their backend. (Google, Meta, Spotify, Dropbox) -
Go
If you wanna go do backend or if your server needs to scale to 10k daily users, learn this. Very popular and might be even more popular with Web Assembly. (Twitch, Netflix, Uber, Discord, Gojek) -
Rust
Gaining popularity. Super fast + super secured. Used in Web3 stuff and also Web Assembly. A bit confusing to learn if youâre a beginner, but super future-proof. (Netflix, Meta, Discord, Figma)
Recommended Front-end Frameworks
-
React
This is my favourite and most companies (not Google) are using this, which means that youâll have an easier time looking for jobs, but also means that youâll have way stronger competitions. Some companies using React: Meta, Twitch, MejaKita, Netflix, HereToShare, Amazon, Twitter.
-
Vue
People say if React is not the most popular, Vue will probably the most popular. I had a quite pleasant time using this at work 2 years ago. Some companies using Vue: Adobe, Apple, Xiaomi, 9GAG, Nintendo.
-
Svelte
Rising in popularity and was voted most loved framework in 2022. Some companies using Svelte: Spotify, Stack Overflow, Chess.com, The New York Times.
-
Solid
New framework. Came out in 2021. A lot of potential.
Recommended Rendering Frameworks
These are built on top of front-end frameworks. Youâll probably be using one of these instead of plain front-end frameworks if youâre building interactive apps.
-
Next (React)
Iâve been using this for around 3 years and is my favourite for sure. The team behind Next is probably one of the few teams who advocate the use of bleeding edge, so youâll see really cool (and fast) patches/updates to Next. Some companies using this: Twitch, Github, Netflix, Hulu, HereToShare, Airbnb, Uber, Notion.
-
Remix (React)
This one has a cool data-loading pattern which is a bit different than Next. Not as popular as Next, but itâs getting there. Recently acquired by Shopify. So if you want a job there, learn this???
-
Nuxt (Vue)
Vueâs version of Next. A bit behind on features compared to Next, but still really damn good. Companies using Nuxt: TikTok, Ecosia, NASA, Stack Overflow
-
Astro
This one is another favourite of mine. If you want to build static sites (blogs, portfolio, etc) Astro is perfect. Astro allows you to âbring your own front-end frameworkâ. You can use React, Vue, Svelte, or just plain JS. This website is built using Astro (fun fact wow).
-
SvelteKit (Svelte)
Svelteâs thingy.
Tools
-
Git + Github/Gitlab/Bitbucket
Learn git. You canât go without it once you learn to use it. Then host these projects on github/gitlab/bitbucket. Also, learn common collaboration workflows.
-
Your terminal of choice
Most of the tools youâre gonna use later works way better in the terminal. Youâre gonna be constantly interacting with it, so if you can survive with just your browser + terminal, youâre golden.
-
Editor
-
VSCode
The most popular and most supported editor out there. A shit ton of great plugins to make you productive, and super customizable in general.
-
Neovim
Terminal-based editor. If youâre gonna be renting servers from AWS, GCP, Digital Ocean, or whatever provider, a terminal-based is gonna come SUPER HANDY. This is what I use and what Iâm most familiar with. I donât recommend it if youâre still getting your feet wet, but I highly recommend this as you become more familiar with code. After switching to Neovim from VSCode, I code way faster.
-
Microsoft Word
Ye.
-
Operating System
If youâre using Windows to code, youâre basically setting the difficulty to HARD. It should be fine to start with, but anything code-related will just work in Linux or Mac. If youâre currenly using Windows and are not using any Adobe products or you just donât game much, switching to Linux will make you have an easier time running your programs. You can even start off using Linux in a virtual machine so you donât have to leave Windows. And Mac is great if you can afford it. Most companies will give you a Mac when you join (even Microsoft).
Recommended paths and how to get good fast
Path
JavaScript + TypeScript â Git â HTML + CSS â React.js â Vercel/Netlify â Express.js â PostgreSQL â Digital Ocean/Vultr/AWS/GCP/some host â Next.js â Get fullstack job.
OR if you want to super-scale, learn Go instead of Express.js, and if Go is not enough, learn Rust.
Get good fast
You need to get good at translating logic to code. Do practice problems every day for a month and youâll be great at it. Then, learn to build stuff with it. It should take 1 month to get good at frontend and another month to get good at backend. In total, you can probably build apps all by yourself if you go at it for 3 months straight. The hardest part in all this is starting, and the 2nd hardest part is maintaining the momentum once you started.
Please note when I say â1 monthâ, I mean 30 consecutive days. It will not count if you do something like: 5 day streak â 5 day break â 4 days streak â 2 weeks break â 7 day streak â 3 days break. You should take breaks, but it should probably be a 2-day break max.
Itâs actually fine if you do a lot of breaks, but it will take a lot longer to get good. The people at the top who codes every day will have days where they donât feel like doing anything, but they still do. You need a little bit of motivation, but more importantly, you need discipline.
Your roadmap should look something like this:
-
Start off in JavaScript and be decent at it. Once you understand functions, arrays, sets, objects, and maps; learn TypeScript by changing your JavaScript files to end in
.tsinstead of.jsand try to make all the red lines disappear. If you use a good editor, it should tell you exactly how you should get rid of those lines. (2 weeks) -
Once youâre comfortable in JavaScript, learn HTML and CSS. It should be quite a bit easier than JavaScript. Learn flexbox and grid for layouts, and learn common element attributes like padding, margin, position, etc. Once you kinda get it, practice by copying simple websites. Make sure itâs an exact match. Copy 1-2 websites a day for a week, and then youâll be comfortable. (1 week)
-
Learn a JavaScript frontend framework (like React, Vue, Svelte, or Solid) to make your website interactive. Learn how to fetch data from an API. Copy more complicated websites. By copying complicated website, youâre forced to learn some technique you didnât have to use when copying simple ones. (1 month)
-
Learn to make your own API. Learn to integrate a database to âsaveâ/persist data and then integrating this API with your frontend. (1 month)
-
Build and ship every day. Iterate over your app. What can you improve? What is something that you know now that can be useful last month? If your app is done, think of something else. What problems do I face daily that I can make an app for? Do any of my friends have problems they face daily that I can make an app for?
You might have a lot of ideas for projects, but try your best to finish them one by one. 2 complete projects is better than 12 nearly complete projects. You should also make sure that you set good goals. Avoid goals that have a vague line between complete and incomplete (e.g âbe a good engineerâ, âlearn reactâ), and make goals that have deliverables (e.g âget a job at netflixâ, âbuild a todo app in reactâ).