Programming Language Learning Roadmap
I wanted to jot down a learning roadmap by ThePrimeagen I found valuable.
— 3 min read
Table of Contents
Overview
A roadmap to learning any programming language, synthesized from ThePrimaegen's language roadmap.
- Exploration and documentation
- WebSocket chat client
- A larger project
Exploration and Documentation
Understand how to write simple programs. This means immersing oneself in basic constructs like syntax, types, conditionals, control structures, and functions.
Begin by going through problems like LeetCode or Advent of Code and solving a problem or two.
Immediately, it will be difficult, and that's okay. Break down the problem into categories. Then, search through the documentation of the programming regarding that specific category.
Whether it be error handling, string processing, or whatever, reading through the documentation will give you an overview of the primitives that are available to help solve problems.
Resist using AI early on. As easy and powerful as it is to throw a problem at ChatGPT, doing so can be to the detriment of your own problem-solving skills. I'm sure ChatGPT is an all-around good problem solver. That's because it's been trained on vast amounts of data and feedback on errors it makes. Flip the script and let AI help train you to be a better problem solver.
Despite this, however, I still believe AI to be a very helpful tool when used correctly. Examples of situations in which AI can be helpful include:
- It's been over an hour, and you're still stuck on the same problem. Yet, in your hour of attempts, you've developed your problem-solving skills even if the solution was not found. Let AI take the wheel and have it identify the mistakes you were making. Burn those mistakes into your memory. It's one thing to know the solution, it's another to know the many mistakes that are possible to make. Knowing the solution is like knowing the destination, but understanding the mistakes is like knowing all the possible wrong turns on the journey.
- Mapping out the ecosystem of tools, libraries, and features by yourself can be daunting without enough experience. Have the AI give recommendations regarding things and make it compare and contrast. When there are multiple tools available, each with their own strengths and weaknesses, AI can help you pick and choose.
- First and foremost, you are not writing code that is good enough for right now, instead, you should be writing code for other people, like your colleagues or even your future self. Ensure that you write clean and maintainable code that can be easily read, debugged, or extended later. AI can help you identify best practices when it comes to techniques and patterns surrounding solving a specific problem.
WebSocket Chat Client
Build a simple WebSocket chat room server that can:
- Accept multiple client connections simultaneously.
- Broadcast messages when a user joins, leaves, or sends a message.
That's it, no more or no less.
This gives you a good idea of the ecosystem of a language based on the API that the language provides versus other third-party libraries. And, it teaches you about asynchronous programming and how the language handles it.
A Larger Project
- https://austinhenley.com/blog/challengingprojects.html
- https://github.com/practical-tutorials/project-based-learning
- https://github.com/arpit-omprakash/100ProjectsOfCode
- https://github.com/vicky002/1000_Projects
- https://github.com/best-of-lists/best-of
- https://github.com/The-Cool-Coders/Project-Ideas-And-Resources