There are two official methods of programming ESP32. The first one is using ESP-IDF, which gives the full control over the hardware. Full control means complex set-up and configuration process. But the second programming method is so easier since it uses the Arduino IDE as a development tool.