Ted Neward posted a great article today “Do you fall prey to technical folk etymology?” in which he suggests (correctly) that we based our technical decisions on emotional context.
Ted is a fine writer, and his points intelligently argued. I am perhaps a bit more direct (crass?) and less politically correct, so I thought I might elaborate a bit on his thoughts. It is not just that our technical decisions are influenced by emotional context. In fact, the Dilbert Principle applies – we are all sometimes idiots.
As technologists we delude ourselves into thinking that we make clear-headed decisions based on logic. Nothing can be further from the truth. Not only are we influenced by emotional factors, they are often the dominant factor in our technical choices.
I remember noticing even as a kid how fads would come and go in our neighborhood. One week it would be spinning tops, another paper airplanes, another endless games of Monopoly (today’s equivalent would be video games and web sites – and I date myself intentionally for reasons that will soon become apparent). Technology fads operate in much the same way, though the time span is measured in months and a few years instead of weeks and months.
The C# vs. VB .NET debate has been raging for years, with the VB .NET folks claiming (correctly) that it’s a fine language and raging that Microsoft insiders refuse to give it the support and respect it deserves. Meanwhile the C# folks feign obliviousness (oh, we didn’t provide VB .NET support or samples for that new SDK? Oh… well… uh… we didn’t have the resources?).
This misses the point entirely. The C# vs. VB .NET dilemma is purely emotional. The VB .NET folk (of which I am one) will continue to use the language because, gosh, it really is a bit more productive than C#. Besides, any good VB .NET programmer can read C# examples or even code C# if necessary because we know it’s all about the framework, and any half competent VB .NET programmer can do C# in a matter of hours, if not days.
Meanwhile the C# developers within (and outside of) Microsoft will ignore, denigrate or avoid VB .NET because, let’s face it, it gives them something to feel superior about. When a C# developer says “VB .NET is the language of idiots”, by implication that developer is not an idiot. That’s a strong emotional statement – especially given that the rapid pace of technology change means that each and every one of us spends more and more time feeling like an idiot (which we are, in the sense that the percentage of available knowledge that we know continues to decrease because what there is to learn increases faster than anyone can possibly learn it – I’m just one of the relatively few people willing to admit it openly).
If a C# programmer, can gain some emotional comfort to offset this by labeling VB .NET developers idiots, who can blame him or her?
I’ve reached a point in my career where many working software developers are younger than I am (many of my contemporaries have become managers or architects, and while I do some of that, I still write lots of production code – mostly because coding is what I enjoy most). I’d always bought into the idea that software development was a “young person’s game” and wondered how long I’d be doing it – but I’m beginning to wonder if that too was an emotional belief unfounded in truth. I’ll write more on that later.
What I do know, that many younger programmers don’t, is that the amazing “new” technology that they are excited about that is sure to change software development forever is, more likely than not, just another fad. Moreover, I also know that most of the new technologies coming from major vendors (including Microsoft), though always labeled as “new technology that is going to change the way people develop software or use technology” is, more likely than not, just marketing hype that is trying to create another fad.
Ok, that’s phrased a bit cynically – because it makes it sound like they are being manipulative. They aren’t (mostly) – it’s just that they, like everyone else, are viewing the technology through an emotional lens. My emotional lens is scarred and cloudy, not because I’m a pillar of reason (I’m not), but because after you’ve lived through enough fads you get better at spotting them. Or put another way, once you’ve been burned often enough you start thinking twice about what part of the technology furnace you shove your hand into.
I don’t know that I’ve gotten better at making reasoned technological choices – but I’ve gotten a lot better at avoiding emotional and unreasonable technological choices – and in figuring out when it is ok to make a technology choice based on emotion.
Ted asks at the end of his post:
“In short, I actively seek to defeat technical folk etymology, if only in the small area I personally can affect.
Do you?”
You can’t defeat it – emotions will almost always trump reason. But sometimes you can co-opt it. Fads aren’t defeated by reason – they burn themselves out naturally only to be replaced by the next fad. Just remember that when you’re trying to prevent someone from making a terrible choice based on emotions, it’s not enough to use sound reasoning – you need to come up with an emotional argument as well if you hope to succeed.
Hi, Dan I know your name since that great (and big!) book “VB Programmers Guide to the Win32 API”. It was a difficult one to find here in my country those days. I had no Internet or an international credit card. Now I have 38 years and I’m still a coder. I’ve been offered management positions and I always said no. I like to code. So I feel that most of the time you are writing for me. I want to thank you for that book and all the infuence you have had in me without even knowing (including the “VB or C#” one that I have always at hand!). Keep writing and keep coding.
Thanks a lot
Gabriel, a die hard coder from Argentina…
I cut over from VB to C# on the Lamma island ferry to Central in Hong Kong, which is where I code today, since my “day” job is now “teacher”.
It wasn’t a big deal. The biggest deal, which was independent of language, was that I already had begun to hate Etch-a-Sketching forms and controls, vastly preferred writing code to create them (and more carefully adjust their geometry thereby), and had no room, on the ferry, to use a mouse; therefore I always use code, assisted by some standard creator routines.
One of the reasons I am out of the field, Dan, is with all respect the language of the profession, including the overemphasis on an ultimately metaphorical “productivity”.
When I read THE PSYCHOLOGY OF COMPUTER PROGRAMMING in 1972, I realized that among other things, Weinberg was saying that “productivity” in white collar work, as opposed to most meat space work, can have a negative sign. Weinberg had seen programs that wasted far more time and money than they had saved.
Programmer talk about “productivity” but the direction of their work is in almost all cases under the control of nonprogrammers (and this is not the case in medicine and law). Therefore it seems to me ultimately hopeless to talk about being “productive”.
For example, many “rocket science” programmers “productively” produced a lot of code for financial hedging, credit insurance, and other monkeyshines, which have created the mess we’re in. This code is proprietary and makes “unwinding” the credit mess enormously difficult.
I don’t think it’s meaningful to ask whether VB or C# is more productive. I’d rather be either working on life-enhancing programming projects, which are few and far between, and if I were, I’d be happy to use Cobol.