A couple of months ago podcast I listen to interviewed an embedded engineer. Eventually, the topic of Arduino came up, and all three people on the show let of sighs of disgust. This lead to me to start thinking about why do engineers hate Arduino?
On this particular show, they said Arduino had too many abstraction layers to be useful. All three members of the panel agreed that direct hardware access was critical to success in embedded designs.
On the same episode, the same people talking, the topic changed to using a new chip or sensor. Then this comment was made: “I won’t design for a chip with no high-level software API and detailed examples.” (I’m paraphrasing to protect the innocent.) Everyone on the episode agreed.
Wow. Just what is Arduino then? One view is that it’s a well-documented board, with a high-level API, and lots of detailed examples. But somehow, these features on other platforms is desirable? So why do did these engineers hate Arduino so much when it is what they said every vendor should offer?
Are they haters? Are they trolls? Or are they just engineers who show a behavior common to humans. Let’s take a look at why engineers hate Arduino using other examples and concepts from psychology.
1. It’s too Easy
Recently I got to see three of the Arduino co-founders speak at Berkeley. One of my favorite quotes was from Tom Igoe:[shareable cite=” Tom Igoe”]“Just because it was hard for me [to learn], doesn’t mean it needs to be hard for you.“[/shareable]
And this is where most engineers, especially embedded engineers, take umbrage with Arduino. It makes the world of electronics and microcontrollers ridiculously simple to access. Of course, you might be thinking, but isn’t that a good thing? And if you ask those same engineers they would likely agree.
Arduino-hatred is hardly the first example of experienced engineers disliking non-technical users as a field expands.
Veterans of the Internet and fledgling World Wide Web were disgusted by the flood of uninvited users. These new users didn’t understand proper etiquette, they asked ridiculous questions, and most of them didn’t even know what an IP Address was!
Here’s what I find interesting. Do people whose first access to the internet is a smartphone, know any more or less than AOL users did back in 1993? Probably not. And there is a lot more of them. We don’t see as much backlash against these neophyte users today.
Analog vs Digital
On Episode #103 of The Engineering Commons Podcast, the team interviews Dave Vandenbout. Dave gave a recount of his experience when digital electronics engineering was in its infancy. He recalls that “analog engineers” (were there others at the time?) referred to the digital engineers as “digital dingbats.”
Why? One of the reasons is that digital engineers, especially new-to-electronics digital engineers, didn’t have the base of knowledge the “old-hat” analog guys had. From the experienced engineer’s point of view, these darn kids don’t understand the details of hooking up 7400LS chips together!
And you know what, those darn kids didn’t need to understand 20 years of analog design to make the AND-gates work. Of course, being able to dig deeper is critical when circuits “don’t work” but that’s a topic for another rant.
2. It isn’t ideal (for everything)
When you have a hammer, everything looks like a nail. Many Arduino users aren’t looking for the ideal solution. They are happy hammering a screw into the wall if it solves their problem.
Most people are familiar with the concept of confirmation bias. (In America it becomes the lifeblood of social media during election times!) In short, confirmation bias is focusing on elements that support a preconception.
An example I experienced was when I wrote about the performance difference between digitalWrite and direct port manipulation. The actual point of the article was to show how to make measurements on a Logic Analyzer. One Twitter (ex-)follower responded un-politely about Arduino users, stating they couldn’t see past the “horrible and garbage API.”
There is an element of truth there. Some users cannot see past the API. They’re new. Of course, they can’t. Not yet! In this case, the rude Twitter comment was someone who used confirmation bias, digitalWrite is slow, to support their negativity.
Here’s the thing, though, if digitalWrite() works, it is perfectly acceptable to use it as-is. As Donald Knuth said,
“…premature optimization is the root of all evil (or at least most of it)…”
In other words, even if a solution isn’t optimal to a problem, it may not be necessary to “optimize” to a better one.
3. It’s too popular
People love to hate popularity, which leads to Kathy Sierra’s idea of the Kool-Aid Point.
This concept isn’t some new-age touchy-feely idea. It is how humans behave. Humanity naturally polarize around almost any idea or object.
Nothing makes everyone happy.
Her point boils down to the idea if a group hates you, then you’re doing it right. But what about engineers? Surely engineers are logical people who only make rational evaluations. Logically, they would never hate something that has positive attributes, right?
And so, part of why engineers hate Arduino is that it is the popular thing to love or hate. I’m sure programming languages, smartphones, operating systems, and cars are immune from this effect.
Don’t feed the haters
When you meet someone who demonstrates the behaviors outlined in this post, you might wonder what you should do. If that person is unable to revise their beliefs based on the new evidence being presented to them, they suffer from conservative bias. It’s probably better to just let things go.
Otherwise, you are going to find yourself in the middle of a full-force flame war. The irony? Both you and the other party will think each other are trolls. And in a way, you both are trolls.
You have both drank Kathy Sierra’s Kool-Aid.