

You need to understand how code actually works. If you’ve only worked with highly abstracted languages like Python, Ruby, JavaScript, etc then you should probably start by learning lower level languages like C or C++. Or maybe Rust and Go but they’re kind of low level and abstracted at the same time. If you already know C/C++ then buy yourself an Arduino (or equivalent) and start screwing around. If you’re in school and interested in this as a career, take some electrical engineering or digital circuit design classes.
It sounds like you already know how to do embedded programming, at least at the hobby level. For someone who’s new to that, Arduino IDE is the easiest learning curve I know of. As far as which boards to use, I have no specific feelings which is why I said Arduino or equivalent.