Hacker News new | ask | show | jobs
by matthewmacleod 3295 days ago
Again, please back off from the personal insults.

"Arduinos are shit because the people who use them aren't real programmers" is the core of the argument there. Similarly, "PCs are shit because the people who use them aren't real programmers" is a poor argument. And we frequently see "Web applications are shit because the people who write them aren't real programmers", which is an equally poor response.

There are no rules about what constitutes a 'real' programmer and a 'not real' programmer. Complaining that inexperienced people are entering a field because the barrier to entry has been lowered is stupid. Instead, we should be focussing on solving and problems that introduces: things like security, safety and scalability need to be made easier.

Opening the field up is always a good thing.

2 comments

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).

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.

> Opening the field up is always a good thing.

It is not like the people who complain about these were born professional programmers. They were born babies and at some point as clueless as current inexperienced newbies.

Just because someone perceived himself to be all knowing all the time does not mean that he was objectively all knowing from the day he was born. In all likelihood, it just means lack of self-awareness.