Hacker News new | ask | show | jobs
by ajarmst 3295 days ago
I was there for the first generation of the PC revolution (and my father was a mainframe programmer---he and his colleagues LOVED Apple IIs and TRS-80s). There are echoes of the conflict, but it (as always) is more complex. The problem with Arduinos is not that they're "shit" (they're well-designed low-end general-purpose embedded development platforms). The problem is that their development ecosystem and community seem to purposefully hide the complexity and detail of the hardware. Which is precisely the opposite of what the early generation of hobbyist home PC developers and engineers did --- they revelled in the (modest) complexity of their platforms and actively tried to expand it (our home Apple II eventually had to escape the confines of it's case and sported a Z-80 co-processor so we could play with CP/M, too).

I was a member of the generation that cut their teeth on those simple home computers, and they were a fantastic way to start to learn our profession. They taught us abstractions that helped us move to the next levels of complexity, and the intuitions about computers that we learned were accurate and helpful.

My argument (not really mine, I'm reporting it from others, I'm a little more on the fence) is that, while the Arduino platform could do the same thing for a generation of hardware engineers, its community (and those who hope to make money off of it) seems to be going out of their way to avoid it. People who accept the default tools and attitude of the Arduino are not encouraged to understand how microcontrollers work. They are encouraged to follow a recipe, stuff some parts into a breadboard with no understanding of electronics or awareness that a datasheet is even a thing, download code they don't even read, and start high-fiving themselves when they make an LED glow. (OK, that's a caricature too, but I've decided to give myself some rhetorical license).

3 comments

I know it's not your argument as such, but I still don't really buy it.

I would wager that every engineer gets started by following recipes. I started by copying code from books and magazines into QBasic with no idea what I was doing. I started web development by gluing together magic bits of Javascript that did god-knows-what. I don't recall being encourages to understand how these tools worked under the hood.

But that's just the start; once someone is familiar with the parts (and importantly, can make something do an interesting thing quickly) then they can start making changes to that recipe, and in time writing their own.

It's a totally different game now.

I do a lot of tiny Arduino programs for hire. Before you go off on me, I'm an experienced embedded developer -- my current project is taking a digital input and turning it into a resolver signal for a motion controller. Fun!

The simplicity of the Arduino ecosystem means that a rank beginner can throw together a simple program that provides huge value in just a few minutes . They don't need to know the intricacies of setting up an A/D channel: they just call analogRead() and it's done. These people don't want or need to be programmers. They have a simple task to automate and they found a way to automate it and move on with life.

I have a client that I've written two simple programs for that are essentially latches: take a transient input signal and hold an output constant forever when it's received. But it's faster/cheaper to throw an Arduino at the problem than go wire up a handful of 'LS74 latches and associated hardware.

Your argument is akin to complaining that no one drives stick shift any more because automatics are too popular.

There will ALWAYS be people like that. And those people, if Arduino wasn't available and as easy as it is, wouldn't move over to writing PIC or AVR assembly. They just wouldn't be doing their projects in the first place.

And there are plenty of people who do start with Arduino, and move on. Just like with everything else.