There is no doubt that when you want to test something quickly or find a library that's all ready available that Arduino is the way to go if your were using AVR and more recently Arm , the ESP8266 and also the ESP32 the only problem i have with it is In my opinion is its very dated editor which does the job but really hasn't changed a lot over the years. With each new version that arrives you download in hope rather than expectation that it may of suddenly been given a modern make over with a bit of code completion some nice syntax highlighting but alas its pretty much the same. The compiler and language is for all intense and purposes c++ with a neat bits added to make accessing the hardware a lot easier. Now there are ways to use different IDE's eclipse for example but they tend not to work as well as the little Arduino IDE which although basic handles uploading firmware has a nice comms window , board manager and library manager. It was while writing some PC code in c# using Visual Studio community that i Accidentally discovered Visual Micro the c# app was to talk to my linkit one board and when searching for a template i saw arduino in the list so installed and it worked as advertised on there web page intelisense code completion syntax highlighting and mutliple files nicely organised into a project.. The plugin works in Visual Studio community and Atmel Studio (for AVR although not tried it with other variants so may work but as its visual studio based stick with the full version for ESP32) , both of these IDEs available for free.
When writing code with Visual Micro, if you adhere to the Arduino.cc rules so the code you create will remain Arduino IDE compatible.Visual Micro new project templates (from vs2015+) make it easy to create arduino compatible libraries and share project code. Tip:if your Library is created in official arduino library folders are automatically available to all other arduino projects and the arduino ide should wish to use it.
It has its own board manager and library manager which works pretty much as there equivalent in the arduino IDE so you can use the Arduino compatible library and board managers to discover and download hundreds of Arduino compatible boards and libraries.
It uses the same configuration file as your arduino IDE so if you add new hardware to one it will appear in the other. just write build and upload. for a small fee at time of writing it was £35 for 3 non commercial use with a years support what this adds is debugging although not in the sense of jtag (although they introducing GDB) but a simplified see debug messages in a separate window without it being in your code and break points hit counters which pause your code just like a jtag but without being able to see registers you can also watch variables so for me it was money well spent.