Getting The Developer Experience Right
I must admit, having now done a few project with Arduino, I am truly impressed with the developer experience and ecosystem that has been created around it.
The first time experience with Arduino is probably as good as it gets. You can get started with a simple LED blink program in matter of seconds. The auto detection of hardware and a very simple USB Serial console, enhance the ease of use.
Where things start going a bit south for me is on the more advanced steps. There is an incredible wealth of libraries out there to interact with any sensor or board you can imagine. I found the ITEADLIB for the ESP8266 wifi chip extremely useful. However, it was like looking for a needle on a haystack.
The Arduino IDE is super-simple, and while that is a good thing.. it could do a bit more. Good IDEs teach developers good practices, automatic code indentation would be nice for a start..(i am using 1:1.0.5).
I have recently fallen in love with the Android Studio, after switching from the Eclipse-base ADT. I am much more efficient with it and bugs are squashed faster! However, building a basic Android app requires sooo much boiler-plate code that I can't believe every single new developer is not put off by it.
Ok, so what am I getting at? I think often an ecosystem takes the developer experience and focuses it into "making it easy to start" or "making it powerful for advanced users". Both approaches have their merits, but if you are trying to build an ecosystem you need both. Ignoring either is a road you take at your peril..
I leave you with the first steps of the rover autonomous 4WD that my 5 year-old and I are putting together: