Why do engineers (love to) hate Arduino?

Engineers love or hate Arduino, but why?

why engineers hate arduino

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:

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.

Remember AOL?

One of the passages that resonated with me in Walter Isaacson’s book “Innovators” (my review here) revolved around when AOL users started using the Internet.

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.

Physics of Passion

Physics of Passion

Sierra is a developer that taught Javascript-based classes. Javascript is another technology engineers, software engineers, love to hate. Sierra makes the point that the existence of a passionate group means you also create passionate haters (she says “detractors.”)

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.

Your questions, comments, and even corrections are encouraged and very much appreciated! However. I have zero-tolerance for inappropriate or harassing comments. I try to reply to everyone... -James

Leave a comment

10 thoughts on “Why do engineers (love to) hate Arduino?

  1. It’s not hate of Arduino, it’s the lack of professionalism of the Arduino creators.

    They say it is made for hobbyists, tinkerers, … but the shield connectors are not in a 0.1″ grid which makes them incompatible to commonly available breadboards.

    Why does the IDE automatically include “arduino.h” instead of teaching people to do that themselves at the start of a source file? This also prevents some “hacks” where you do not want “arduino.h” included.

    The IDE should start the compiler with maximum warning level (-std=c++11 -Wall -pedantic) and with warning-is-error compiler option (-Werror). This is a simple tool which prevents lots of mistakes. I don’t understand why people are not using it.

    Why did the ports have to be numbered and in such an awful way? What do you gain by using numbers instead of port name and pin number like B3? Pretty much everything that can be done using numbers can also be done using port/pin pairs. It would also be easier to mix low level code like directly accessing code with high level arduino library functions.

    It’s annoying that everybody has to stamp “arduino” onto everything. For example your post “5 Common Arduino Programming Mistakes” is also good advice to people programming other things, but since it is realted to Arduino that’s OK. But what’s really annoying is to find “Arduino compatible resistors” on Ebay.

    And finally the Arduino-versus-Arduino war… a very questionable thing which tells me keep the fingers away of it.

    Too bad these things can’t be fixed anymore. I would have been a very nice platform for everybody, from beginner to wizard.

  2. Hei i just found your blog after watching your talk about capacitors and it was a very interesting watch! (i’m a software engineer but i love electronics and have a special interest in embeded systems)

    Anyway, regarding the topic on this post, i do completely agree with your point of view and i just can´t understand the reason why engineers love or hate the arduino and other products. It makes no sense.

    In my point of view, these are tools and i’ll use whatever makes my life easier. Sure, i do love my ARM Cortex’s but if i can make the same job in half the time on an arduino, i’ll gladly use it.
    It’s like all those flamewars about linux being better then windows and vise versa… Operating systems are also tools and as such some are better at some things and others are better at other things. i use both and i love both.

    My only real complain about the arduino environment is that sometimes it feels like i never “learn” anything. For example, a few days ago i used a arduino for testing a OLED display from ebay. I had never done this before and yet it took me around less then 10 minutes to connect the display, download an example, install the needed libraries and presto, a working OLED display. I didn´t even touch a single line of code or read it for that matter…

    Sure, i could do the same on my Tiva-C Launchpad but i would either need to find a library already made (not so easy sometimes) or make my own which coud take a few evenings just to get the same result.

    Best regards,
    nippius

  3. I’ve been playing around with some small electronic projects after a break of thirty years and the availability of microcontrollers like the Arduinos makes projects that would previously have been very complicated simple to implement.
    I use a microcontroller for even very straightforward applications with only a couple of inputs/outputs because they are so cheap. I recently bought some Arduino nano clones from China for £2 each. This makes the hardware incredibly cheap and half the fun is playing with the software and thinking of new and improved ways of controlling the hardware.

  4. Good post James. I’m a retired engineer, I don’t do it for a living any more, but I still enjoy the creative process.
    I am also a photographer and I remember having photos rejected because they were “digital” instead of film.
    I was an engineer before the advent of the microprocessor. The old school digital circuit designers scoffed at those also. We had a project that my boss, an old school guy, was lead on. After five or six pages of schematics of discrete logic circuits he got stuck. I showed him how to accomplish the task with an 8 bit 8080 and some assembly code.
    I became project lead and the project was finished and worked without a hitch. I’ve done scores of highly technical embedded processing projects, written my own compilers, interpreters, RTOS implementations and been as close to the bare metal as you can get. I use Arduino because it allows me to quickly and relatively easily prototype a system idea and get it running. Many times the prototype is very close to the final implementation. Every project is different
    and you don’t need an RTOS or a complex toolchain for every project. Once you have that depth of knowledge it is yours as long as you live. Letting someone learn a simpler way doesn’t diminish it. There is no threat from Arduino.
    Really, there is nothing to fear, so there is nothing to hate. Imagine.

  5. Oh yes, on another note, I recently noticed Arduino experience listed as a requirement in a job add. That tells me something (bad) about the company…

    • Really? I see it is a positive. It’s a way to identify someone who enjoys working with electronics and experimenting on their own. Of course, it depends on the specific job.

  6. Interesting article. I have to admit that I was one of the haters, initially – but I have since matured. :o) To an engineer it does feel too easy, and being use to being in full control at first it did feel very limiting. However, there are times when all you need is to get something up and running quickly and its is great for that – yes even for an engineer. I think many engineers don’t like the notion that everything is easy, there is a big difference between an Arduino prototype and a production product. It does seem to create the perception that anyone can put together anything and its easy – what do we need engineers for? Companies with this conviction will learn the hard way, but that’s what makes engineers angry and hate it – I think. On the other hand, if it gets more youngsters (and older folk) into electronics – then why not?

    Everything does not have to be hard and sometimes we need to look past the hard stuff and how we think we’ll do it to the actual idea. I think sometimes good ideas get shelved just because it looks to hard. If Arduino brings a new generation of innovators with new ideas who naively (maybe) see past the hard stuff – that will be good for us all…

  7. Another good post James. I’m not sure I’m an Arduino acolyte but I am happy to use it for lots of my designs and prototyping. For the stuff I’ve used it for, stepper motors, sensors, simple servos I’ve had lots of success with the Arduino.
    I am inclined to dislike the Arduino Yún which I spent a long project working with, that does seem to be a bit of a frankenboard and does not have any strong use case in my opinion. However the Uno and Leonardo are great and I’ve also worked with a Pro Micro clone which I’m happy with. Trinket has is peculiarities but again was just the job for my Christmas project.
    My main gripe which is related to the popularity is that there are a good few examples of shoddy code. Also because some of the libraries are trying to be a jack of all trades solution they can be a bit resource hungry.
    Not tried the newer more powerful Arm boards yet but the MKR1000 is on my radar as something to check out.