There's so much arguing over code on the internet. Let's try to get to the bottom of the debate.
So, here’s a thing. It’s a sweeping generalization on my part, but please indulge me for a bit. In our line of work, I tend to put people into one of three groups: you’re primarily a hardware-oriented person, you're primarily a code-oriented person, or you’ve achieved some amount of fluency in both, making you “hard core enough for the scene.”
But every time I find myself browsing through a forum and the topic turns to code, it invariably erupts into a code-infused flame war between all the code-ly types. It really is worse than a debate over religion. And any aspect of code will set these people off: variable declaration, choice of libraries, structure, best practices, comments…and I think the biggest one, languages. “Your code doesn’t work? Wait, you’re using JavaScript? Well, there’s your problem right there. You should be working in Python! What about C++?” Then somebody pipes up saying, “Why would anyone ever use C++?” They then list their reasons for hating it. Nothing like an over-inflated sense of self-importance coupled with anonymity to bring out the best in people. Hooray, internet!
Now, all cards on the table, I tend to be more of a hardware person. I became an electrical engineer not just because I had an interest in electricity, but because I was bad at topics where there could be multiple lines of interpretation. Math and science seemed to be a good way to go, you know? I wanted to have something concrete under me in my professional life, something where I wouldn’t be at risk because I made an incorrect assessment of a task. Something where the rules of engagement were well-defined would suit me and my limited ability to understand human nuances quite well. And yet, even in circuit design there is room for creativity, but the laws of physics keep that creativity loosely bound. I would find my home in circuit design.
And as such, I generally hold the opinion that writing code is a necessary evil, at least where embedded (or otherwise) electronics are concerned. Because, let’s face it, there are some things that are just way easier to get done with a microcontroller. Right? How much time do you want to invest in any given project? My drive for an analog solution at all costs isn’t nearly enough for me to swear off writing a little code. But I’m definitely more at home with an iron in my hands rather than a keyboard under them. That said, I can still hack my way through with C well enough to get all my projects done. A datasheet and Google are usually enough reference. And I might peruse a forum for an answer, but I sure won’t post anything. Why? Because of all the vitriol I’ve witnessed on various online forums. Hey, I’m a snowflake, I’ll admit it. I can find my answers without subjecting myself to that kind of abuse.
But let’s look at this critically. Can it possibly be true that all primarily code-oriented people are just so territorial that you can’t have a civil online conversation about code with any of them? Without having to do any real soul searching, of course the answer is no. So why does it look to me as though so many more arguments come about over code than hardware?
First, let’s look at the numbers. Just go to Reddit and check out how many people subscribe to which subreddits. For example, Electrical Engineering has 32K+ subscribers (give or take; these numbers are a few months old). Electronics has 69K+ subscribers. But then you’ve got Python with 163K+ and JavaScript with 107K+, just to name a couple. But is this a good data set? Maybe this just isn’t where hardware people hang out. Heading over to Wikipedia, we find that the estimated number of EEs in the country is 183,770, while the number of software devs looks to be something north of half a million. That supports what Reddit is telling us. Now of course, these lines of division aren’t hard and fast, but I would suggest that they at least describe trends in the population. Generally, there are many more people working in coding positions than hardware design positions. And honestly, I’d be amazed if this surprised anyone.
So just by the numbers of people involved, you’re more likely to come upon a code-induced flame war than one based on hardware design. But what about the subject matter? Programming languages are human constructs, subject to lots of interpretation as to how to implement one best. I mean, it literally is a language, just like any spoken language. And it follows that as there are grammar nazis for English (or any other spoken language), there will be grammar nazis for Python, and they will be just as mouthy on the internet. Add to that some of the entrenched loyalties people maintain for their favorite language, and you’ve set the stage for some wild times.
On the other hand, you’ve got a science (meaning hardware design topics) that doesn’t change all that much over time, and most of the rules are known. Surely there’s less to argue about…? Well, just pop over to the diyAudio forums and have a look around. That should clear up any misconceptions about how there’s less arguing over hardware design. But while that may be the case, I have to think there’s still some truth in my statement that there should be less to argue about. Maybe?
Why are there more code-related flame wars than hardware? It’s got nothing to do with being a “code person” or a “hardware person.” These are just people who are passionate about their favorite topics and seem to enjoy being right and making everybody else deal with it in the forums. And there are more people actively involved in writing code than there are designing hardware, so likewise there are going to be more topics of conversation visible in the public sphere. Lastly, it’s a volatile topic because it’s a human construct. Nobody ever says, “I think Ohm’s law is stupid; why do you even use that?” If you’re designing hardware, you’re going to have to use Ohm’s law. But you've got a choice about the the code you write and the language you use. And you know what they say about opinions, right? Humans will be humans.
All of this can make advancing more difficult than it has to be. When explaining electronic concepts, I try really hard to make it clear that while some design choices may be better than others, there are still many paths to success. I’ve seen less of that sort of acceptance and encouragement in code circles, but I’m sure it must be out there somewhere. If you’re one of those who are always trying to take your game up a notch (and who among us isn’t?), whether it’s your code or your circuit chops, try to take the negative waves with a grain of salt and don’t reciprocate. Cultivate a beginner’s mind and maintain it through your professional life. And remember that, either by age or experience, you’ll be the expert one day.