Why do (some) people hate Arduino? a summary of my research

To my great surprise, I found some posts talking about how some people "hate" Arduino. I've summarized them in this forum post, and it includes a great example if you just want to scroll down. Personally my take-away is actually extremely positive. Reading the objections carefully puts the Arduino project in an extremely positive light. Basically the reasons (some) people "hate" it end up all positive.

If you have anything to add to that thread, I'd appreciate if you would do so there as well as here please.

The link goes nowhere.

ChrisTenone:
The link goes nowhere.

sorry about that! should now be fixed.

Cross-post removed.

@curious48, you have been here long enough to know that cross-posting is verboten. Don't do it again.

My apologies. I'm careful not to double-post, which is why it didn't happen before. (In this case I personally thought the two posts were different, since in the one you removed I asked for a technical review from people who worked with different microcontrollers; whereas this one is general and does not ask for that kind of review.)

Since that one was removed, I'll ask in this one now: if there are experts in microcontrollers who are used to working with different famililes, not just Arduino, (such as PIC) I'd welcome your technical review of the article posted above. Does it match your experience or the attitudes of your colleagues or other engineers you've worked with, not just on Arduino? I base this question on some of the threads I see in the Microcontroller thread. I'd be curious in your perspective in this case.

and could be used to code in a standard "Arduino" language (close to C)

There is no Arduino language! This is part of why some people hate Arduino, because they never took the time to actually understand what Arduino is and is not. If there really was an Arduino language that would be a good reason to hate it but instead we're using real, professional, programming languages. Sure, the IDE takes care of a bit of the less beginner friendly stuff but you can override any of that if you want.

The microcontrollers had to have the Arduino language loaded onto them, which in the case of buying an Arduino board, is the state in which they came.

Huh? Do you mean the bootloader? That has nothing to do with the "Arduino language" and is not unique to Arduino. In fact you can easily program an Arduino board or microcontroller without using the bootloader. Sketch > Upload Using Programmer

"It's easy"

I think this is the true underlying reason behind a lot of the Arduino hate. They learned this stuff the hard way so everyone else should too. It's threatening to them because microcontrollers are no longer the exclusive province of geeks. I actually think a lot of this technical stuff has been intentionally made more difficult than it needs to be for purposes of job security. If there is only a select group that understands the secret language then they can charge any wage they like.

"It's not perfect"

Very true but if all these geniuses spent 1% of the time improving Arduino that they did hating on it imagine how much better it would be. In the end, Arduino will never be for professionals, it was never meant to be for professionals. This doesn't mean professionals can't get involved with the project and use Arduino to share their knowledge. If you're some super smart kid on the fast track to MIT and a degree in embedded systems engineering then just skip right over Arduino, but for every one of those there are hundreds of people who are not willing to spend a week setting up a toolchain and reading datasheets just to get to that first blink when there are TV, video games, skateboarding, social media, etc. competing for their spare time. My theory is that if you can get them to the fun part fast then they will get hooked enough to go back and learn the basics. In the end Arduino might lead them to a career in electrical engineering even though they will not be using Arduino in that career, maybe it will be a new hobby, or maybe they'll just have a great learning experience and gain a better understanding of electricity, programming, and these amazing little chips that are in everything.

+1 to @pert.

If people want to use up server capacity on other Fora complaining about the Arduino system that is fine by me. But it's a bit unreasonable to complain about it on this Forum if you are not prepared to make an effort to improve things.

Does it matter if some people dislike the Arduino system? Nobody is forced to use it. Just like nobody is forced to drink Pepsi if they dislike it (Asda (WalMart) Cola is fine, and much cheaper).

...R

@Pert, phenomenal review! Exactly what I was looking for, thanks so much Pert. I'll also incorporate the couple of changes that you found.

Robin2:
+1 to @pert.

If people want to use up server capacity on other Fora complaining about the Arduino system that is fine by me. But it's a bit unreasonable to complain about it on this Forum if you are not prepared to make an effort to improve things.

Does it matter if some people dislike the Arduino system? Nobody is forced to use it. Just like nobody is forced to drink Pepsi if they dislike it (Asda (WalMart) Cola is fine, and much cheaper).

So just to be clear, I didn't have any complaints about Arduino at all :). I wanted to show some of this push-back that I've seen against Arduino. I think it's fantastic, and, actually, in my opinion in many cases it is okay to ship Arduino code.

More broadly, the reason for discussing this question there, is because I'm working on a product that is a combined Raspberry Pi/Orange Pi/etc embedded Linux + Arduino subsystem, and although I think this forum is good to discuss it, people here suggested I make my own forum due to the intersection of technologies. So, that's the reason that I have that stuff over at curious.boards.net. By the way, I think what Pert just pointed out about "My theory is that if you can get them to the fun part fast then they will get hooked enough to go back and learn the basics" is such a great observation. I think my goal will be making a completely compatible and Licensed ARM subsystem, that can also be used in production, meaning that someone can begin to tinker, then move on to selling a few hundred units of their prototype - before they have to take the dive into deep embedded microelectronics work. There's absolutely no hate from me on any of this :slight_smile: I was attempting to understand the perspective of some professional EE's. By the way, in some of the messages I received personally, it's clear that many professional EE's do use Arduino in prototyping and testing. So in many cases even if Arduino doesn't seem to be in the final product, it's there every step of the way.

They learned this stuff the hard way so everyone else should too. It's threatening to them because microcontrollers are no longer the exclusive province of geeks. I actually think a lot of this technical stuff has been intentionally made more difficult than it needs to be for purposes of job security.

Says it all, really! And this is what Arduino upends :).

Thanks for everyone's thoughts, keep them coming if you have more.

I think the article I posted was actually a decent example of what you were talking about in your writeup. It starts out as an anti-Arduino rant, but in the end it underscores many of the strengths of Arduino, most prominently that "There is no Arduino language".

The author complains about how slow digitalWrite() is but then explains that you're not forced to use it when speed matters. I had posted some links in the comments showing efforts that had been made to improve the performance of digitalWrite() and the reasons why they weren't accepted by the developers and after looking at them the author softened his stance a bit.

He also knocks the EEPROM library but it sounds like he was thinking of the old EEPROM library from a couple of years ago instead of v2.0, which does offer some added functionality over the standard avr-libc EEPROM library. That's a common problem I see with Arduino haters. They're basing their statements on their experiences with the Arduino IDE years ago. This does make some sense because why should they keep up to date on a program they hate, but there has been a lot of progress and will continue to be.

pert:
I think the article I posted was actually a decent example of what you were talking about in your writeup. It starts out as an anti-Arduino rant, but in the end it underscores many of the strengths of Arduino, most prominently that "There is no Arduino language".

The author complains about how slow digitalWrite() is but then explains that you're not forced to use it when speed matters. I had posted some links in the comments showing efforts that had been made to improve the performance of digitalWrite() and the reasons why they weren't accepted by the developers and after looking at them the author softened his stance a bit.

He also knocks the EEPROM library but it sounds like he was thinking of the old EEPROM library from a couple of years ago instead of v2.0, which does offer some added functionality over the standard avr-libc EEPROM library. That's a common problem I see with Arduino haters. They're basing their statements on their experiences with the Arduino IDE years ago. This does make some sense because why should they keep up to date on a program they hate, but there has been a lot of progress and will continue to be.

Good stuff!!! I added more to your karma. Your impressions about the article you linked are the same as mine :). I think later I'll put on my forum (which has raspberry pi as well as arduino readers) the information about just how close it is to C, and how C can be added.

Out of curiosity, without looking deeply at the library could you summarize why digitalWrite() has to be 28x slower? That seems quite a lot, even if there are a few branches. There must be a delay in there, right? if so, why?

@pert +1 (need not comment)

Out of curiosity, without looking deeply at the library could you summarize why digitalWrite() has to be 28x slower? That seems quite a lot, even if there are a few branches. There must be a delay in there, right? if so, why?

The function, and not only this one, is written like for the beginners. It treats a variety of conditions just before simply set/clears the bit for ATmega's pin (Arduino's port). It is a tax on ease of use and reliability. I could not be a problem to bypass for advanced users/programmers. And also, there are plenty of examples on the internet with the "direct digital I/O" for time critical use.

There must be a delay in there, right?

Wrong.

Don't be ridiculous; why would anyone deliberately nobble a key function?

1 Like

Granted, I'm in academia. But I've never encountered an Arduino hater. Plenty of Mac haters, Perkin Elmer haters, etc., but here, people either love Arduino or don't care.

I think the crusty old guy mumbling about how hard he had it, so all future generations should also suffer, is a stereotype. If any of them DO exist, they are a dying breed. Only scientists beat out engineers looking for an easier way.


The idea of strewing delay() calls throughout the compiled code is hilarious. I heard that on the 99,999th write of the EEPROM, the Arduino erases the hard drive of any computer it's attached to. Hate that!

Who could be a Perkin Elmer hater?
Apart from the small matter of the Hubble mirror, what's to hate?

Exactly.

I have one of the first FTIR machines. It works as well now as it did 25 years ago.

curious48:
So just to be clear, I didn't have any complaints about Arduino at all

To be clear, to be clear ... my comment was not about your Blog, just about complaints in general.

...R

AWOL:
Who could be a Perkin Elmer hater?

Price?

ChrisTenone:
I have one of the first FTIR machines. It works as well now as it did 25 years ago.

In a previous life I operated an atomic absorption spectroscopy machine from Perkin-Elmer. As far as I know it is much older then your FTIR and still works beautifully.

Mmmmm. A.a. ...
These days it's "Mass spec! Mass spec!" so Agilent is my new favorite company. :expressionless: Talk about expensive!