It's hard to imagine the days when the entry cost to working with a microcontroller was several hundred dollars worth of board-level products and EPROM programmers
I remember them, and it was daunting and kept me out.
I designed and built some things using 74xx, 555, 741 and transistors when I was in high school in the late 70s. There was a company in Auckland, David Reid Electronics, that sent a huge bound catalogue (with a Moire pattern on the cover) to anyone who asked for one, including kids. You could post an order to them and usually get your stuff in a week.
In my 3rd year at university (1983) I worked on an extra-curricula project with two others, designing and making a wire-wrapped M6809 with DRAM (with software refresh), a UART, and an 8" floppy interface. One of my contributions was the clock logic, which could independently make each of the HI and LO phases either 0.25µs or 0.5µs based on the hi bits of the address bus: 2 MHz for RAM, 1 MHz for peripherals, and 1.33 MHz (asymmetrical) for the Motorola monitor ROM based on a careful study of its timing diagram :p We also wrote a BCPL code generator for it (running on VAX), and a mini multi-tasking OS.
After that I didn't touch hardware for a LONG time.
I became aware of BASIC Stamp in the late 90s I think, but that didn't appeal. PICKit seemed too expensive and fiddly. A friend got the first Arm MBED in 2009 I think, and I was thinking about that when someone locally in NZ started selling Arduino Uno and BOOM I was in.
People criticise Arduino a lot here, but the on-ramp is SO GENTLE, and yet it doesn't constrain you in any way. You don't have to use their editor. You don't have to use their libraries (or only use parts of them). You can see exactly what commands it is running, so you can easily copy&paste the right commands to run gcc or avrdude directly if you want. But it is all there to be used up to the point that you don't want it. I actually often use the Arduino IDE terminal emulator in preference to minicom or something even when I'm working with boards that aren't supported in the IDE.