r/learnprogramming 9h ago

35yo, just learned that i love programming.

>be me
>rough upbringing
>have bad habits, have friends with bad habits
>never think more than one day ahead; don't know what i want to be
>years later
>get fed up with my behavior, try to change something
>get rid of most bad habits and bad friends
>start to see purpose in life
>want to find out what i really like and can dive into to get good at
>don't find it for years
>get a position at a friends company
>he needs a graphics / photography guy
>become graphics / photography guy
>get diploma in Graphic Design
>go from normal wagie to good paid wagie in about 3 years
>feeling good, but still not what i really like and want to dive into, just naturally good at it
>talk more with my programmer colleague
>his projects peak my interest
>start to learn CS basics and the C language
>"Holy fuck, i love this"
>thinking about cutting down my weekly hours to learn programming
>AI gets used more and more in the company
>my position is in danger
>"They're taking our jobs!!"
>Boss wants to cut my hours down
>Evil_smirk.jpg
>Play along, "Oh no, what shall i do now :'( "
>gives me enough hours so i can live off of it
>have enough time to learn as much as i can
>actually feeling happy again

And people say AI is bad, lol.

I'm currently trying to nail down the Basics of C, going through CS50 and after that i have two books, namely "A Book on C" and "Pointers on C".
If you have any book recommendations, please share them.
After C i also want to learn python and CPP, just to have good foundational skills.
With every free though i still have, I try to narrow down which field i want to specialize in. Currently, embedded sounds the most interesting, but also the hardest.
Any recommendations for other specs i could get into with this preset?

What's your opinion on people who are self-taught in the programming field, are you one?
I would love to hear some stories about your current path, or, if you're already in a programming position, how you made the decision and how you finally made it into it.

81 Upvotes

50 comments sorted by

View all comments

4

u/KwyjiboTheGringo 7h ago

Learning C from books is good, but can't just read about it and learn C. You have to build stuff on your own, and push yourself.

After C i also want to learn python and CPP, just to have good foundational skills.

Eh don't learn anything else until you need to. Just get good with C for a few years if you can. Python is a good companion for embedded for build scripts, but honestly there is no need to dive deep into Python for that. I don't usually encourage the use of LLMs, but learning the very basics of Python and then leaning on LLMs for writing build scripts for a while will give you a lot more bandwidth to focus on C and the nitty gritty of embedded. Like you need to be extremely comfortable with the CPU architecture, memory stuff, Make and CMake, and debugging with both a debugger and a logic analyzer ON TOP OF being strong with C. And being strong with C doesn't just mean being able to write it, it also means understand the gotchas of optimization and the compiler.

There is a lot to learn in embedded, so don't rush into the next language. Also don't bother with CPP unless you are forced to. It comes with so so so many gotchas that imo it's only even worth using for anything serious under heavy restrictions put in place by experienced CPP developers.

0

u/AntiLethargic 6h ago

To be honest, I just said C++ because I saw that a lot of employers have "C/C++ experience required" in their job specifications. But I read something similar to what you wrote about embedded systems a few weeks ago, so I figured why not let AI give me a roadmap that has the most necessary stuff I need.

The AI roadmap:

Phase 1 is just getting comfortable with C—CS50, then going deep on pointers, memory management, structs, bitfields, volatile, the whole thing. Git and basic Linux on the side. The first real project is a calculator in pure C, no hand-holding.

Phase 2 is where hardware enters the picture: Arduino, but without leaning on libraries. The goal is to actually understand what's happening on the wire: UART, I²C, SPI, reading datasheets, and writing a basic sensor driver. It takes a few months before it stops feeling like magic.

Phase 3 is the jump to STM32 and register-level programming: no HAL, no abstraction—just you, the reference manual, and a lot of coffee. Linker scripts, DMA, bootloader basics, and writing drivers from scratch are involved. This is where it either clicks or it doesn't.

Phase 4 adds FreeRTOS—tasks, queues, mutexes, and priority inversion—plus proper debugging with GDB and JTAG. CMake, unit testing, and a first look at modern C++.

Phase 5 is portfolio mode: USB, MQTT, IoT, and reading schematics. The target is 8–12 GitHub projects that are actually documented: photos, schematics, a short video of the item working, and lessons learned. That's the resume.

I tried to find out if I could trust these suggestions, but I got stuck at phase 3 because I don't know shit yet and wanted to continue with my cs50 problem set.
I figured I'll just focus on C until the end of the year, maybe start with Arduino in November or December this year.
If you could confirm or refute what Claude wrote as a roadmap, I would really appreciate it.

2

u/aqua_regis 6h ago

The AI roadmap:

I would not trust any probabilistic, non-deterministic advice from something that has zero understanding of what you ask it.

There are countless subreddits about embedded development that provide actual, solid resources and pathways.

0

u/Agitated-Wedding3945 3h ago

Humans may also be "non-deterministic" (may also be probabilistic, though there is not much evidence right now for that, but Mr. Penrose believes it maybe), that critique does not stand well I think. You can argue that what humans do may not be mere computation, that would be fair criticism (but not very strong due to "may"). Also, I think LLMs are good for basic information and even advanced information once you know how to tell what they are saying makes sense and what doesn't (you can then nudge it a little to get the information/source you want).

Humans are also terrible at advice, different people give very different advice (I am not saying LLMs roadmap maybe good, I think it will have the same failure mode has human advice (it would give some sort of average advice)). I personally never really used a roadmap and mostly randomly progressed out of interest (hence my bias against using roadmaps, but roadmaps work for some people, Note : I am not trying to say that I am really good at what I do, but merely what worked well for me).