Programming language expert != programming expert
I got into software development by way of the journalism world.
I started my career as an editor at a magazine, and I continued working for various magazines and newspapers for almost 10 years1 before making the leap into full-time software development.
Having a professional background in both journalism and software development has helped me to recognize a few parallels between the two.
Let me share one of those parallels, which I think many budding software developers fail to fully understand, but should:
Being an expert in a programming language does not make you an expert at programming.
During my career in journalism, I came across a number of writers who wielded vocabularies much more extensive than my own. And not only did they know a bunch of words that I didn’t know, but they knew how to use them correctly2.
There were some who were able to use their language skills to communicate truly difficult concepts with eloquence and accuracy. If a big word was the only word that could adequately convey what they wanted to say, they used a big word. If a smaller word would do, they used the small word. I admired these writers not only for their command of the language but for their wisdom and insight.
There were other writers, however, who (despite their extremely impressive command of the language) rarely wrote anything particularly poetic or profound. And often, they chose more difficult words than the situation warranted, under the misguided notion that it made them seem erudite. But as Ernest Hemingway once said about his own preference for plain language: “Poor Faulkner3. Does he really think big emotions come from big words? He thinks I don’t know the ten-dollar words. I know them all right. But there are older and simpler and better words, and those are the ones I use.”
I think we software developers can sometimes delude ourselves into thinking that mastery of a particular programming language, or a particular framework, is synonymous with being a good programmer, but it’s not.
I was recently poring over some code at work, trying to get to the root of a bug, and it occurred to me that although I understood what all of the “words” were in a particular file, and how they were strung together into “sentences,” I was not fully grasping the meaning of the passage as a whole. Of course, good documentation can help in that regard, but there comes a point when even that is insufficient. When you’re knee-deep in analytics code, you need to have an understanding not only of the code but of analytics.
And in that way, both journalists and programmers have something in common. They need to be (or to become) subject-matter proficient in whatever they’re working on. If you’re building a math-heavy application, you need to have the math background to understand not only what a particular function is doing, but why it’s doing it. If you’re building an image editor, you might need to know a bit about color science4. If you’re building a natural-language processing algorithm, you might need to know a bit about linguistics and grammar.
But even beyond having the language skills necessary to communicate, and the domain knowledge to communicate intelligently, both journalists and programmers also need to have a sort of refined intuition that is the product of general wisdom and lots of practice.
A truly skilled journalist might, for instance, be trying to uncover corruption in his local government. He must have enough domain-specific knowledge to know what sort of information he can access through FOIA requests, but beyond that, he has to have an intuition about what data is most likely to yield interesting information. Likewise, he must have enough domain-specific knowledge to be able to understand the data he’s given, but beyond that, he has to have an intuition about where to look for irregularities and peculiarities. Finally, he has to have a command of the language to be able to write about his findings, but beyond that, he has to have the ability to write a compelling lead, to boil down complex concepts so they make sense to the reader, and to make the case for why the findings are significant.
Similarly, a truly skilled programmer might be trying to identify and resolve a particularly difficult bug. Certainly, she must understand the programming language the code is written in, but beyond that, she has to be able to understand the subject matter, and to know both where to look and how to look. And as she zeroes in on the culprit, she has to be able to understand why a piece of code that appears to be quite sensible and straightforward might actually cause an issue in certain instances. Even more than that, she needs to have the know-how to fix the issue and ensure that her fix is sound.
So, three takeaways for both journalists and programmers:
1) Learn as much as you can about the language you’re working with. But don’t stop there.
2) Learn as much as you can about the subject matter you’re dealing with. But don’t stop there.
3) Refine your intuition through ongoing practice and regular feedback from smart people.
Oh, and if you’re a journalist who happens to know a programmer, or a programmer who happens to know a journalist, now you know you have something in common5, so strike up a conversation!
# 30 # EOF
 During that time, programming became an increasingly important part of my job as an editor. At my first job, I whipped up some photo galleries, polls, and interactive features for the magazine’s website whenever I had the time. At the newspaper where I worked before leaving the publishing industry, I was crunching and displaying large data sets, rebuilding content management systems, writing scripts that auto-generated articles, and hacking our comment moderation system to freeze out abusive users. I loved what I did, but unfortunately, the business model that had sustained newspaper journalism for more than a century has crumbled, and after a series of layoffs, furloughs, pay freezes, and other cost-cutting measures, I made the move that was best for my family. I still believe in the importance of journalism, but it stinks that the business side of things has forced so many talented reporters and editors out of the profession.
 Not only could they use the words correctly, but they could spell ‘em correctly, too. When I worked at Forbes.com, one of the editors was watching the national spelling bee on ESPN and became, uh, spellbound by the event. He ordained that we should have our own Forbes.com spelling bee, over pizza and beer. Even with a few drinks in them, our editors were nailing words like grandiloquence and legerdemain.
 William Faulkner had touched off the feud by remarking, about Hemingway, “He has never been known to use a word that might send a reader to the dictionary.”
 Did you know that when you’re converting RGB images to grayscale, you can’t simply add up the red, green, and blue values and divide by three? That would give each color value equal weight — but it turns out, our eyes don’t work that way. Instead, you need to use a luminance algorithm that applies unequal weights to each of the color values to produce a grayscale value that is more in line with how our eyes actually work. So, let’s say that you have an RGB pixel with a color value of (200, 150, 100). You want to convert it to a gray pixel? Here’s the formula: (200 * 0.3) + (150 * 0.59) + (100 * 0.11) = 160.
 You probably also have other things in common, like a love of swear words and terrible-for-you food.