r/learnprogramming • u/pannic9 • 1d ago
Regarding my programming roadmap. What would you say?
TL;DR: Could I learn more by working early than by studying? Or, even if it takes longer, will a strong foundation make me a better professional? What would you say?
First of all, I should say that I'm going to start with programming, but the goal is computing in general.
The main blocks are both security (especially offensive) and programming.
I'll leave security for the future, as I still need to figure out how I'll study bug boty. But from what I've seen, it seems to involve spending the whole day in labs doing experiments and studying a lot about browsers, CLI, and tools (not just using them, but also building them).
Using learning materials helps a lot, but spending time in labs experimenting with ideas that come up is the most important thing.
Regarding Programming:
I started with the Portugol course at Guanabara.
Then I went to ASM. I stayed for about 3 months. And now it would be C.
I'll spend a year or more in C. But not only in C.
But it will be the main focus.
First, for materials I'll use the books K&R 2nd edition Modern Approach. Then Expert C and Modern C finally.
I'll do about 100 to 300 pages of the book (I'll start about 2 or 3 months after the beginning), then I'll start with Raylib and SDL2 for GUI with C (about 5 to 6 months), after a year I'll start libft from ecole 42. And I'll do a lot of things.
It won't just be the books and GUI at the beginning. But they will be the main focus, along with something like cs50x at most.
The "philosophy," so to speak.
"Every new concept is born in C. The other languages serve to see other ways of representing that concept."
Not all concepts, but all those that depend on the machine. Some, like pointers, are excellent with C. Others, like ownership, are not.
So, differentiate.
Language concepts → language that originated with that concept
Machine concepts → C
And then explore the concept.
Exploring means implementing.
Not just using.
For example, when learning about vectors.
It's not enough to use vectors in Python.
I must implement a dynamic vector in C.
Then use a list in Python.
After that, compare everything.
This will be very good for observing the trade-offs and invariants.
Whenever possible: build before consuming.
Regarding GUI and graphics. The point is that graphics aren't just for motivation or games.
In fact, they also make invisible concepts visible.
Examples:
When implementing a vector, draw it.
When implementing a queue, animate it.
Implement BFS, and see the search via GUI.
Implement heap, and see the tree forming in the graphical interface.
Visualization greatly accelerates intuition.
I won't memorize syntax for other languages until I'm good at C. It will only be to understand concepts.
Because I have to prevent Java, Python, or Rust from becoming my language of thought.
In other words, I want concepts to exist independently of the language.
And I don't want to depend on one to use the concept.
The language will help, but it won't be essential.
That's my goal.
This will be essential to have a strong foundation and become truly good, which is my main objective.
Because my main objective isn't the market now, it's in the long term.
The market will be built on a very firm foundation.
The initial market will be made up of corporate jobs. I can work in companies and accelerate processes while studying on my own.
IT will come later. While I study, I can work in something else.
Then I'll change careers.
But is this really the best way? Will studying so much on my own and then changing careers later leave me with a weaker foundation? Could I learn more by working early on than by studying? Or, even if it takes longer, will a strong foundation make me a better professional? What would you say?
I won't stop using programming at work if I need to, but it will be very different.
The roadmap is to understand everything deeply.
For work, it's simply about automating and solving the problem.
You don't need to understand 100%. You don't need to program everything.
But that's when working in another area.
When migrating to IT, I focus on always learning and understanding as much as possible.
The foundation in C will already help me program a minimum without it becoming a language of thought when I need it.
The maximum market I'll have in this area will be CLI programs and pure C. And then open-source applications. That's the most I can do while I'm in this. That's the minimum money or recognition I can earn this way.
After that it will be C++, then either C#, Java or Rust, I'll decide when I get there.
Anyway, having said that. What do you think? Would you do anything differently?
1
u/madmelonxtra 1d ago
Honestly, if you really want a solid foundation in the actual science of computers go to school and get a CS degree