I really hate the attitude that "only people who have dedicated their lives to the technology should be allowed to use it". I see this a lot on the internet. I think it's great that thousands of people who wouldn't otherwise use microcontrollers have had fun with Arduino blinky-LED projects. And for people who want to dig deeper, it's all right there for them.
When you're starting out with something this complicated, you need to start with a system that hides most of the complexity. Otherwise you can't get anything done, and you just give up. I would never have bothered getting back into electronics after many years, if it weren't for Arduino. It was a simple step to move beyond the built-in functions to fiddling the MCU control registers and bit-banging the I/O ports.
I really don't understand why some people consider Arduino or the maker movement to be negative things, unless they're just opposed to other people figuring out how to use "their" technology.
I think it's wonderful that people who wouldn't do electronics (e.g. artists, the original intended audience for Arduino) get access to the capabilities of Arduino. At the same time, I think it's pretty obvious that some people who might have been interested in electronics end up getting sidetracked and bogged down into the very cozy but limited world of Arduino.
The IDE is OK, but the documentation and website is the really nasty part in this respect. AFAICT there's absolutely no little hints or attempts to help users grow. Really intelligent people that I know who grew up with Arduino have no idea how slow digitalWrite is, how taxing software serial is, and so on. It become a "plug-these-things-together-and-hope-for-the-best" grind; if two different libraries both unilaterally decide to use the same hardware timer/counter, their code mysteriously breaks. Does the IDE link you to the underlying code like any other IDE? Nah. Is there an option to see the assembler output, a
trivial feature to implement which would spark the "what is
this" response hinted at by Ganssle? Nowhere. On-chip debugging?
The most puzzling thing to me is that the arduino hardware
could have been used a real serial ISP, rather than a hacky bootloader coupled with an FTDI chip. That decision lives on in
this abomination of a page, which thanks to the instructions to include an Arduino bootloader and due to the poorly written IDE's inability to set up a 8MHz internal RC clock, is massively longer, more complicated and more confusing to the n00b that the instructions for how to use the PicKit with a standalone Microchip part on a breadboard, or the instructions for how to use the JTAG ICE with a standalone Atmel part on a breadboard. This is not education, this is harmful misdirection -- as far as people who might have been really good electronics engineers are concerned.
I bought a JTAG ICE a long time ago (nowadays they are a lot cheaper) and I haven't felt inclined to mess around with other chip providers. So I fully understand when other people fully buy into the Arduino bootloader approach and would consider programming an Atmel chip the normal way a weirdly alien concept. Oh, how sorry I feel for those people -- I
want them to figure out how to use "my" technology, but the normal, easy way of programming a chip is a massive mental shift for them. Let alone
actual electronics!