Skip to content

Latest commit

 

History

History
858 lines (660 loc) · 32.2 KB

rdmp.md

File metadata and controls

858 lines (660 loc) · 32.2 KB

Roadmap to coding professions

A roadmap of skill development for becoming a web developer or software engineer

Mini-map

Quickstart roadmap

Second, try spending at least 10 minutes on all of these free resources and do the one you enjoy most:

  1. Brilliant.org
  2. Codecademy
  3. Harvard
    • CS50P (Python, medium difficulty)
    • CS50X (C-based, most difficult)
    • CS50S (Scratch, all ages block-coding)
  4. Microsoft Learn
  5. Scrimba
    • Python
    • Markdown
    • HTML/CSS
    • Javascript
  6. Text-based tutorials
    • Python tutorial
    • Mozilla Web Development course
    • Oracle Java tutorial
  7. Youtube
    • VS Code Course/tutorial
    • Python tutorial/course
    • Web development tutorial/course
    • Javascript tutorial/course
  8. Quiz-based university level computer science
    • Princeton Computer Science
    • MIT Python
  9. FreeCodeCamp Learn
    • HTML/CSS
    • Javascript
    • C#
  10. Books

Happy reading! 📚

Please note that the availability of books may vary, and it's always a good idea to check if the distribution rights allow free access. Happy reading! 📚

Source: Conversation with Bing, 08/11/2023 (1) Free programming books - Reddit. https://www.reddit.com/r/learnprogramming/wiki/books/. (2) What are the best books you've read that helped you learn to ... - Reddit. https://www.reddit.com/r/learnprogramming/comments/uq8g9a/what_are_the_best_books_youve_read_that_helped/. (3) Websites to download free programming books? - DEV Community. https://dev.to/enjeck/websites-to-download-free-programming-ebooks-6dg. (4) The 25 best programming books of all-time. https://www.best-books.dev/list/best-programming-books. (5) undefined. https://inventwithpython.com/.

Finally, if you want to take your study further, have a look at the computer science and programming courses at your local universities, vocational colleges and boot camps. None of these are a requirement, not do the negate the need for continued self-directed learning, but they aren't a bad idea if you have the time.

Regardless of what you choose, the next steps are to

  1. Learn Git and GitHub
  2. Create a developer profile
  3. Learn data structures & algorithsm
  4. Practice interview skills

Fundamentals for all coding professions

When looking for courses and learning materials, search for

  • Official tutorial
  • Official documentation
  • Tertiary courses at places like universities and vocational colleges
  • Local boot camps

and search for

  • "best courses"
  • "tutorial"
  • "best books"
  • "Learn"

using:

  • A whole-web search engine like Google
  • A chatbot like Bing GPT-4

The best search results will often be:

  • Class Central "best courses" article
  • Reddit discussion posts

Also check the following websites for materials:

  • Microsoft Learn
  • EdX
  • Coursera
  • Codecademy
  • FreeCodeCamp
  • Scrimba
  • Youtube/Udemy

Here are some abbreviated programming roadmaps from easiest to hardest to get started:

  1. Block-based: Brilliant.org --> Harvard CS50S Scratch --> CS50P --> CS50X
  2. R (Optional: DataCamp/Codecademy) Stanford --> Harvard/Google/MIT --> CS50X
  3. Lua: (Optional: Youtube "Lua Course") Codecademy Lua --> CS50G Lua & C# --> CS50X
  4. Python: (Optional: boot.dev/Scrimba/Codecademy) Harvard CS50P Python --> MIT Python --> CS50X ---> CS50W --> CS50 AP
  5. HTML, CSS & Javascript: (Scrimba/FreeCodeCamp/Codecademy) --> Stanford Computer Science 101 --> CS50X --> CS50W (Optional: Meta Front-end Certificate)
  6. C#: (Optional: Microsoft Learn/FreeCodeCamp) Codecademy/SoloLearn AND University of Colorado C# AND Learn CSharp with CSharpFritz --> CS50X
  7. Java: (Optional: Codecademy/FreeCodeCamp) Princeton Computer Science Java AND University of Helsinki Java Programming I --> CS50X
  8. C & C++: (Optional: Codecademy) Harvard CS50X AND Coursera C and C++ --> Zig & Rust

For most people I would recommend learning in this order:

  • VS Code:
    • Microsoft Learn, Documentation, YouTube, Frontend Masters free course. Optional: Fireship
  • Python:
    • Microsoft Learn, Official tutorial, Documentation, EdX and Coursera (Harvard, MIT, UMichigan), Codecademy;
  • Git, GitHub, HTML, CSS, Javascript and React:
    • Microsoft Learn
    • Coursera: Google, Meta, etc
    • EdX: Linux Foundation
    • Mozilla course & documentation, Git book, Git/github documentation;
    • Optional: Scrimba, FreeCodeCamp, Codecademy, YouTube, EdX, Coursera;
    • Codecademy: make a Website using NameCheap
    • Youtube/Udemy/FrontendMasters: developer profile tutorial
    • Reconstruct using Vite official tutorial and documentation
  • SQL:
    • Official tutorials and documentation for
      • MS SQL Server, MySQL, PostgreSQL, SQLite.
    • Youtube/Udemy tutorials, DataCamp, Codecademy, SoloLearn, W3 Schools, EdX (Stanford), Coursera;
  • Computer Science, Dada Structures, Algorithms and C++:
    • EdX and Coursera (Harvard, MIT, Stanford, Princeton);
    • Programming: Principles and Practice Using C++ (1312 pages)
    • Google Data Structures (4 hours)
    • Primeagen Frontend Masters (9 hours)
    • FreeCodeCamp (100–200 hours)
    • Youtube
  • More interview prep
    • FreeCodeCamp
    • Frontend Masters
    • Cracking the coding interview
    • Grokking the coding interview
    • Google/Reddit/Coursera
    • Codecademy (paid)
    • Neetcode/Leetcode/Hackerank, etc
  • Testing:
    • Coursera (UMichigan), FreeCodeCamp, Udemy and ISTQB;
  • Anything else:
    • Look it up using Google, Class Central, Reddit, ChatGPT, etc

Fundamentals first

Although these skills can be learnt in many different orders, rather than starting with a specific coding language, I'd recommend starting with the fundamentals that everyone needs to know like your text editor features and version control. Other roadmaps tend to delay the learning of these fundamental skills or even forget to mention some of them entirely, but since they are essential to the workflow of any language, you may as well get them right from the start.

Move on as soon as you like

You don't need to be a master of each of these skills to move onto the next step in the road map. The basics are enough for now. In fact, generally speaking, you should just learn the bare minimum you need to move onto the next skill, as the add-on tool skills like React are often more practical and don't generally require comprehensive mastery of the previous levels. You can then come back and deepen the more fundamental skills as needed.

Google it

If you don't know what a command-line interface is, or anything else mentioned in this roadmap for that matter, and a link is not provided, web search it (Google it) and have a quick read of the definition.

Front-end for back-end developers

If you're more interested in the back-end, you might start coming across skills that you don't feel you need once you get to the front-end skills section. That's where it becomes a choose your own adventure, but honestly I think even if you want to become a back-end developer, you need to know the absolute basics of HTML and CSS, and it isn't a bad place to start. As a markup language, HTML is much simpler than even python, so it's a great language to practice with while you're still mastering the basics of VC Code and Version Control. Building your own portfolio website to show off your back-end skills is not necessary to find back-end developer work, but it's not a bad idea, and if you want to do it, it will require front-end skills. Meanwhile, you don't need back-end skills to show off your front-end skills. You can immediately start showing off what you've learnt with GitHub pages for example.

Back-end for front-end developers

On the other hand, the corresponding argument can also be made that even if you want to be a front-end web developer, learning python fairly early on isn't a bad idea in order to automate the boring stuff. In addition, there are high quality freemium courses in Python program from universities like Harvard and MIT, some of which also serve as a good general introduction to computer science. I'd still lean towards learning HTML and CSS first because it's probably easier for most people, but it's not a bad idea to learn python early on too.

Another back-end skill you may want to learn fairly early on even if you want to be a front-end developer is SQL, if only because for many entry level positions this seems to be the skill that help the most for getting the job, and you can always keep learning front-end development in your own time if you aren't learning enough on the job.

Good resources overall

Here are some of the best resources overall for coding skills. You can check them out for any of the skills in this roadmap to see what's available.

Predominantly free or freemium:

  • EdX (Harvard, Stanford, MIT)
  • Microsoft Learn (Free)
  • FreeCodeCamp
  • ChatGPT
  • SoloLearn
  • W3Schools
  • YouTube

Largely paid with some free or freemium courses:

  • Scrimba
  • Coursera
  • Codecademy
  • DataCamp
  • Udemy
  • Frontend Masters

Exercises:

  • Leetcode
  • Hackerrank
  • Codesignal
  • Exercism
  • Neetcode
  • CodeWars
  • GeekForGeeks
  • CodingStudio
  • HackerEarth
  • W3Schools
  • Advent of Code

Other people's roadmaps:

Command-line interfaces

Read some cheat sheets of the most basic commands in the command-line interfaces of your system: bash (Mac/UNIX, Linux and Git Bash on Windows) and cmd (Windows only). Here are some general cheat sheet resources for both systems:

Tip: Ctrl+C can be used to terminate any process. For example, if you type "mk" and hit enter without naming the new directory, you will be asked some questions that no beginner is likely to understand, so type Ctrl+C to cancel.

Mac/UNIX and Linux: Bash (Bourne Again Shell)

It'll probably be on your Mac or Linux system already, but you may wish to update to the latest version, using a web search for instructions.

Cheat sheet twitter thread

Windows vs Linux Geeks For Geeks command line cheat sheet

Resources:

  • Codecademy (Free)
  • Bash Guide for Beginners. (By Machtelt Garrels)
  • Advanced Bash Scripting Guide. (By Mendel Cooper)
  • Youtube/Udemy
  • DataCamp?
  • FreeCodeCamp Relational Database Certificate?

Windows: Command prompt (cmd), Git Bash, Powershell and Terminal

These should be on your Windows system already, but you may wish to understand the difference between them, for example from these two articles:

or if you prefer video that much, from some of these videos:

Resources:

  • Codecademy (Free)

Cheat sheet

Creating files with cmd

Tip: Windows often has more than one version of PowerShell installed. Searching for "pswh" instead of "PowerShell" will generally bring up the more recent version.

Source-code editors

Some roadmaps neglect to mention that learning to use a code editor efficiently is a non-trivial skill, and since you'll be using some kind of editor from the beginning, you may as well learn to use it efficiently right at the start, perhaps before you've even started to learn a coding language such as a programming language or markup language, or perhaps simultaneously with learning the basics of your chosen language. HTML is a great choice for initial practice in a code editor.

VS Code

VS code is what is generally recommended, and with good reasons. It is a great editor (and more), but there are plenty of great free resources on how to use it efficiently, including YouTube videos and playlists, and some basic introductory articles such as this one from Codecademy, or if you want to buy a short course, there are some on Coursera and Udemy.

Other source-code editors

There are basically two types of alternative to VS Code that are meaningfully different in functionality: command line editors that are designed to be used without a mouse like Helix and NeoVim, and IDEs like those from JetBrains, which are designed to offer more features (that you probably won't need as a beginner), and are often premium paid products. The best bet, until you have a very good reason not to, is to use VS Code.

Neovim kickstart.nvim Helix

Version Control

Git and Github

Complete the following steps, using documentation or tutorials where necessary.

  1. Decide what e-mail address to use for Git commits, perhaps setting up a new one for that purpose if you want privacy but also want people to be able to contact you through your commit email address.
  2. Create a GitHub account. If you do settle on a real email address rather than a no-reply address, use that to create your account.
  3. Create a new repository on GitHub
  4. Follow a tutorial on how to set up Git on your machine through your command line.
  5. Link Git to your GitHub account and clone your GitHub repository down to your machine.
  6. Follow a tutorial like Colt Steele's that shows how to do things in the opposite order, initializing an account and a repo on the machine and pushing it up to GitHub.
  7. Complete a course like Colt Steele's that goes into detail about using both.

If you don't want to use GitHub at all, just do a Git-only tutorial, like the first half of Colt Steele's course, but I wouldn't recommend this.

Courses

  • YouTube/FreeCodeCamp/Microsoft Learn (Free)
  • Colt Steele (Free/Paid)

Resources

Markdown

Markdown is a a great tool. It's a markup language that is generally used for README files, to give them basic formatting, which makes them look much better than a plain text file while being easy to write in any plain text editor. GitHub supports Markdown README files by default, such that the file you will see open when you open a repository is the formatted readme.ms file if one is present.

Markdown can also be easily converted to HTML with various tools such as the Markdown All in One extension in VS Code (I recommend turning off "Auto update TOC on save" at the bottom of the settings), https://markdowntohtml.com and $md = ConvertFrom-Markdown in Windows PWSH. This a great way to start any website that requires a fair amount of text and basic formatting, because it's easier way to format text with markdown than with HTML. More detail on conversion options can be found here: https://adamtheautomator.com/convert-markdown-to-html/

Basic automation

*   [Automate the boring stuff](https://automatetheboringstuff.com/)
*   Google IT Automation with Python

Choose your adventure

Although my suggestion is to learn the fundamental language-agnostic skills like VS code, Git and GitHub first, I otherwise think the roadmaps at roadmap.sh look great, especially the Frontend and Backend road maps. Feel free to use those from this point onwards, but here are the courses that I've tried myself, or that I'm planning to try, and those that look the best value as alternatives.

Traversy - Web Development In 2023 - A Practical Guide

HTML and CSS

Thread on some additional project tutorial & challenge resources

References

Courses

  • Scrimba Learn HTML and CSS (Free)
  • FreeCodeCamp (Free)
  • Microsoft Learn (Free)
  • Frontend Masters Several free courses
  • EdX
    • W3C (180-190 hours) (Freemium)
    • IBM (Freemium) (4-8 hours)
  • Youtube project tutorials
  • Coursera
    • University of London (26 hours)
    • John Hopkins University (Freemium) (40 hours)
    • University of Michigan (80 hours)
    • Meta Front-End Developer Certificate (180-190 hours) (HTML, CSS, JS, Git/GitHub, React)
  • Colt Steele (Free/Paid)
  • Udemy projects

CSS

CSS Grid

  • Scrimba (Free)
  • Youtube project tutorials
  • Udemy projects

Flexbox

  • Scrimba (Free)
  • Youtube project tutorials
  • Udemy projects

Bootstrap

  • FreeCodeCamp (Free)
  • Scrimba (Free)
  • Udemy/Youtube/Microsoft free project tutorials
  • John Hopkins University (Freemium)
  • Hong Kong University (Paid with free trial)
  • Udemy projects

Tailwind

  • Documentation
  • Youtube/Udemy project tutorials

PicoCSS

  • Documentation/Youtube.

Developer profiles, portfolio building and interviews

Javascript

  • FreeCodeCamp (Free certificate)
  • https://developer.mozilla.org/en-US/docs/Learn
  • YouTube project tutorials and courses
  • Microsoft Learn (Free)
  • IBM (Freemium)
  • Stanford Computer Science 101 (24-36 hours)
  • Harvard University (Python and Javascript) (Freemium) (70-110 hours)
  • UC Davis (21 hours) (7 day trial)
  • YouTube projects
  • Udemy projects
  • https://javascript30.com (Build 30 things in 30 days with 30 tutorials)
  • FreeCodeCamp (Free)
  • John Hopkins University (Freemium)
  • Back-end pathway: Python, Javascript and Go: https://www.boot.dev/tracks/backend
  • Javascript: The Good Parts (180 pages)
  • Javasctipt: The Definitive guide (600 pages)
  • Javascript: The Comprehensive Guide (982 pages)

React

** FreeCodeCamp (Free certificate)

Other JS Tools

Typescript, JSDOc, Node.js, Astro, Vite, T3, Docusaurus, Redux, Next.js, Solid.js, Bun, Turbopack, Just-JS, esbuild, SWC, Babel

https://krausest.github.io/js-framework-benchmark/current.html

  1. Solid
  2. Vue
  3. Svelte
  4. Angular
  5. React
  6. Alpine

https://lookerstudio.google.com/s/ikC-beS2LkY

Average

  1. (4) React
  2. (5) Solid, Docusaurus
  3. (5.5) Svelte, Vue, HTMX
  4. (6) Node, Next
  5. (6.5) Vite
  6. (7) Astro, JQuery

Page weight:

  1. React
  2. Svelte
  3. Vue
  4. Node
  5. Next
  6. Vite
  7. JQuery
  8. Solid
  9. HTMX
  10. Docusaurus
  11. Astro

CWV:

  1. Docusaurus
  2. Solid
  3. HTMX
  4. Astro
  5. JQuery
  6. React
  7. Vite
  8. Node, Next, Vue, Svelte

https://twitter.com/codepsychology2/status/1718121860037308603

https://lookerstudio.google.com/s/qzZVw9hxBjs

Other front-end tools

Website builders:

Wordpress, GoDaddy, Shopify, Duda, GoDaddy Website Builder, MyWebsite, MyWebsite Creator, MyWebsite Now, Ochanoko Maybe: GoDaddy Online Store, Wix, Squarespace, Webnode https://lookerstudio.google.com/s/mGtEucOzVUA

Frameworks & libraries:

Flutter Turbo + Ruby on Rails htmx https://lookerstudio.google.com/s/qzZVw9hxBjs

htmx

Kotlin

  • Codecademy (Free)
  • Android official resources
  • YouTube including Free Code Camp
  • Class Central

Swift

  • Codecademy (Free)
  • Official resources
  • Class Central

UX/UI Design

  • Georgia Tech (Free) (6 hours)
  • HECMontrealX (Freemium) (30-60 hours)
  • Google (Under 260 hours) (7 days free)
  • Meta (22 hours) (7 days free)

Other programming skills

Python

  • https://www.boot.dev/tracks/backend
  • Scrimba (Free) (5 hours)
  • Codecademy (Free) (50 hours)
  • Harvard University (Freemium)
    • CS50P (30-90 hours)
    • CS50W Python & Javascript (70-110 hours)
  • MIT (Freemium) (120-150 hours)
  • Project ideas: automate bold headers in markdown
  • FreeCodeCamp x 2
  • Angela Yu (YouTube, 100 Days Of Code)
  • Fred Baptiste & other Udemy projects
  • Automate the boring stuff

SQL

  • FreeCodeCamp (Free certificate)
  • W3Schools (Free)
  • SoloLearn (Freemium)
  • Stanford University (Freemium)
    • Intro (16-20 hours)
    • Advanced
  • Games
  • Data Camp (Paid)
  • Udemy projects

R

  • DataCamp Introduction to R (4 hours)
  • Stanford R Programming Fundamentals (8-12 hours)
  • Harvard Data Science: R Basics (8—16 hours)
  • Codecademy (Free) (20 hours)
  • Google Data Analysis with R Programming (37 hours)
  • MIT The Analytics Edge (130—195 hours)

Java

  • Princeton University (Freemium)
  • Duke University (Paid with free trial)
  • UC San Diego (Paid with free trial)
  • Codecademy (Free)

C#

  • Microsoft Learn https://www.freecodecamp.org/learn/foundational-c-sharp-with-microsoft/
  • Codecademy
  • SoloLearn
  • YouTube
    • Microsoft Learn first hour
    • Traversy (1 hour)
    • TutorialsEU (7 hours)
    • FreeCodeCamp (Tim Corey) (24 hours)
    • Learn CSharp with CSharpFritz
  • Pro C# 11 with .NET 6: Foundational Principles and Practices in Programming
  • Coursera
    • Colorado C# Programming and Unity
  • EdX
    • Harvard Gave Dev
  • asp.net core
  • aspcore-ado-pg
  • aspcore-mw-ef-pg
  • W3 Schools

Systems programming

C

  • CS50X (110-220 hours)
  • UNIX system calls and subroutines using C by A. D. Marshall
  • Coding for Everyone: C and C++ Specialization (50 hours)
  • Introductory C Programming Specialization (200 hours)
  • Codecademy (Free)

C++

  • Object-Oriented Data Structures in C++ (21 hours)
  • Programming: Principles and Practice Using C++ (1312 pages)
  • Problem Solving in C++ 10th Edition https://booko.com.au/9780134448282/Instructor-s-manual
  • Coding for Everyone: C and C++ Specialization (50 hours)
  • Codecademy (Free)
  • Effective Modern C++ (336 pages)

Data science, data analytics and data engineering

  • Coursera/Google
  • EdX

Node.js

Cloud, APIs, AWS, Azure, DevOps, Linux, Cybersecurity, Servers etc

  • Microsoft Learn
  • EdX and Coursera
    • AWS Cloud Solutions Architect Professional Certificate
  • Class central
  • Udemy projects

Golang

Rust

  • Microsoft Learn
  • Youtube
  • Class Central

Lua

  • Codecademy (Free)

Frameworks

React, Node, Next, Asp.net core, Nuxt, Solid, Flask, Django, officefloor-sqlclient, h2o, xitca, atreugo-prefork, vertx-web-kotlin-coroutines-postgres. uvicorn

Fast frameworks

Fastest: https://www.techempower.com/benchmarks/#section=data-r21

Drogon-core; crow cpp https://www.techempower.com/benchmarks/#section=data-r21

Kotlin/Swift

  • YouTube including Free Code Camp
  • Official resources including Android
  • Class Central

D

Programming in D: Tutorial and Reference Educative (15 hours) (Paid)

Further skills for all coding professions

Data Structures and Algorithms

  • Google Data Structures (4 hours)
  • Primeagen Frontend Masters (9 hours)
  • Standford/MIT/Princeton (24-60 hours)
  • FreeCodeCamp (100–200 hours)
  • Leetcode
  • Hackerrank
  • Codesignal
  • Exercism
  • Neetcode
  • CodeWars
  • GeekForGeeks
  • Youtube
  1. "Grokking Algorithms" by Aditya Y. Bhargava
  2. "Introduction to Algorithms" by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein
  3. "Algorithms" by Robert Sedgewick and Kevin Wayne
  4. "The Art of Computer Programming" by Donald E. Knuth
  5. "Competitive Programming" by Steven Halim and Felix Halim
  6. "Algorithms" by Jeff Erickson

Paradigm learning

Seven Languages in Seven Weeks https://www.youtube.com/watch?v=crk0t5j3icg

Functional programming

Javascript: https://github.com/MostlyAdequate/mostly-adequate-guide Multiple languge Youtube playlist: https://www.youtube.com/playlist?list=PLmlFTQpG6F3kFvzYTd1zC-Xff0pUTM7rf Mastering JavaScript Functional Programming (614 pages) Typescript: https://www.youtube.com/playlist?list=PLuPevXgCPUIMbCxBEnc1dNwboH6e2ImQo Typescript: fp-ts https://gcanti.github.io/fp-ts/ https://paulgray.net/the-state-monad/ Functional Programming in C# (425) Functional Programming in C++ (320) Functional Python Programming (576 pages) PureScript: Functional Programming Made Powerful (127 pages) Haskell: https://haskell.mooc.fi/part1 Haskell: https://learnyouahaskell.github.io/chapters.html Get Programming with Haskell by Will Kurt Elm: https://guide.elm-lang.org/ Elm: https://www.youtube.com/playlist?list=PLZEZPz6HkCZmhuLE6W7HDNomfTMgsDw03

Real-World Functional Programming: With Examples in F# and C# (500 pages) Get Programming with Haskell (616 pages) Grokking Simplicity: Taming Complex Software with Functional Thinking (592 pages) (Javascript) Grokking Functional Programming (475 pages) (Java and Scala) Production Haskell (430) Functional and Concurrent Programming: Core Concepts and Features (528 pages) (Scala) Programming Clojure Learn you a Haskell for great good Learn Physics with Functional Programming: A Hands-on Guide to Exploring Physics with Haskell (648) Ocaml https://cs3110.github.io/textbook/cover.html

Testing

Unit testing

  • Scrimba (Free)
  • Class Central

Robotic Process Automation

  • Pega Robotics System Architect

Business

  • CS50's Computer Science for Business Professionals (12-36 hours)

Troubleshooting

  • COMPTIA A+
    • Official resources
    • Udemy/YouTube

Computer Science and Software Engineering

  • The most influential programming books on programming: https://github.com/cs-books/influential-cs-books
  • "Computer Science: An Interdisciplinary Approach" by Robert Sedgewick and Kevin Wayne
  • "Structure and Interpretation of Computer Programs" by Harold Abelson and Gerald Jay Sussman
  • "Introduction to the Theory of Computation" by Michael Sipser
  • "Patterns of Enterprise Application Architecture" by Martin Fowler
  • "Design Principles and Design Patterns" (essay)
  • "Structure and Interpretation of Computer Programs"
  • "How to Design Programs"