Contrast that with STM32 where you have to constantly reference the data sheet to make sure you're using the correct pins for say, I2C when you're running in a particular mode. And since you're running in that mode, you now can't use other pins for certain things. Ugh! I hate it!
Then there's the issues with picking the right-size part number and making sure the pins you want are 5V tolerant, checking that you're using the correct ADC, and... Ugh! It's a pain in the ass!
Other chips aren't much better as they all have those same problems.
ESP32 is nice because of the zillions of built-in peripherals but configuring the damned thing can get really complicated really fast. It's so complicated, in fact, that they had to make a Makefile (as in `make menuconfig`) that rivals the Linux kernel in the sheer number of options/submenus.