Arduino and the Arduino IDE are great products. They serve as an on-ramp (and a very good one) for many makers. You can do quite a bit of tinkering, and even build commercial products without leaving the Arduino ecosystem. I give the many developers, volunteers, makers, etc. big kudos for their work.
It is just not for me. I’ve never been one that likes having development steps done for me. I need a lower level. I need to see the gears (rusty or greasy as they may be) turn. So an IDE that does everything for you is great. But at times it gets in the way. And that is when I start to look under the hood.
Let me be clear. I will probably never design my own chip. I am also not one to dig too far in the minutiae of manufacturer’s data sheets. I like a certain level of abstraction. But when something is not working as I expect, my instinct is to check my setup. And when the setup is all done for me, I quickly start groping at straws, and often waste time.
A recent experience solidified my desire to leave the Arduino IDE behind and go it alone. And by doing so, while it was investment of time, added significantly to my repertoire of skills. And it is something I believe is a worth-while investment for many developers.
In my case, I was not working on an Arduino. I was working with a chip and associated hardware that had been twisted to work with the Arduino IDE. That was a great way to get started. Again, a big thank you to all that worked on making that work. But when things get “twisted” to make it work, often things get lost, dropped, or forgotten.
Fortunately in my case, the manufacturer of the micro controller has a well-documented SDK and gcc toolchain. And while I have yet to remove all Arduino pieces of my code, (and may never do so) I can say I am now much more confident in what will happen when I tweak my linker script. I know what goes where and when it will be called. When all of the sudden a reboot is triggered, I am usually certain as to what area of the code is in need of attention.
If you know how to recover from accidentally “bricking” your device, I believe you will love stepping outside of the Arduino IDE and into the world of tool chains, linker scripts, master boot records, and boot loaders. Yes, it is frustrating at first, but the feeling of success at the end often makes it worth it.
That is my $0.02. As always, feel free to chime in with your opinion.