To learn the basics there's still no better route than getting an Arduino Uno (or clone) starter kit and learning about digital electronics. The boards are programmed in C++ through the Arduino IDE. As you progress you could program larger-memory boards with python. Some people use other languages like Rust. You aren't limited to small AVR microcontrollers, you can program other microcontrollers such as ESP32, STM32, Raspberry Pi, etc. If you get to the point of having PCBs made you can use KiCad to design the boards.
There is a huge amount of online information and help available. Companies like Arduino, Sparkfun and Adafruit also have online material, some specific to their products, some general.
Apart from the actual hardware all the software used is free. Microcontroller boards, while not free, are cheap but powerful.
I'm a retired software engineer with an out-of-control microcontroller hobby.
https://www.sparkfun.com/documentation
Another option is the BeagleV-Fire which uses a Microchip RISC-V plus FPGA.
You could also take the Arduino route which has dozens of options.