Is there a meaningful correlation between spelling and grammatical ability, and programming ability?
views:
1247answers:
19I don't know about spelling/grammar in particular, but I'll say that programmers that are lazy in some regard -- this is especially noticeable in people that use 'u', 'r', 'y', etc as words -- tend to be lazy when it comes to development. This leads to poor designs, copy and pasting, etc. So I'd say that, subjectively, there's likely a pretty decent correlation there.
Edit: I'd also like to point out that this rarely has to do with actual spelling or grammatical knowledge or ability, but rather the amount of effort a developer is willing to put into expressing his or her ideas clearly. I believe that if you aren't willing to express your ideas clearly in written text, you're likely not going to express them clearly in code.
Because attention to detail is such an important characteristic in this line of work, I would much rather work with someone who takes the time to make sure all of their communication is as correct as possible.
I would say there is as far as spelling is concerned. For me, my spelling goes to pot when I am typing quickly, mostly from typos etc. and this often leads to all sorts of niggles where I've misspelled variable names etc. which can cause compilation errors and sometimes unexpected behaviour. I once spent about 3 hours trying to find out why an overloaded method in a sub-class wasn't being called, until I realised I'd misspelled the method name in the base class and was calling the misspelled name, not the correct one.
Other than that, spelling and grammar are good tools for conveying your intentions to other programmers and through documentation for the user. But, I don't think there is any inherent link between spelling / grammar and programming ability. I would expect them to complement each other, but not to require one for the other.
Incidentally, grammar can be put to some good use (and a good programming habit IMO), to quickly identify local variable names.
- aSomething: represents one object.
- someManyThings: list of objects.
- isAState or hasSomeThing: for boolean state.
Any variable which does not begin by 'a', 'some' or 'is/has' is a member variable.
When you combine that with the power of quickly renaming a variable throughout your code (like the rename option in java/eclipse), you quickly get rid of all those 'foo', 'bar', 'i', 'j' variable names ;)
I think the above two answers are quite naïve.
As far as I've found it the best programmers are the ones with analytical minds, the ones who like to solve problems, not remember things.
Because of that I've found that programmers generally aren't quite as up to scratch on grammar and vocabulary as most other people. This results in bad commenting and very different communication (not worse communication, it's definitely wrong to say that because someone does not have good grammar and vocab they are a bad communicator) but better code and quicker development times.
From a personal stand point, I'm not willing to use 'u', 'r', 'y' in comments and most communication, but I'm not to bothered if I spell 'the', 'teh' or if I don't have a comma in the correct place. If someone's going to gripe about these then they're probably in the wrong line of work.
Edit: There was a question/answer somewhere about how if you comment your code and go to a lot of effort to make it understandable you probably haven't understood the current domain. I can see how this can be true and I think it also highlights that those without such good grammar are going to give you better code.
Edit:
Reply to comments:
I'd disagree, not only is pedantry not necessarily a requirement (by any means) for being a good coder, but it can definitely slow things down. Which would you rather, your coders worry about grammar or about code?
As far as I've found it, in the world we live in, miscommunication happens regardless of grammar, especially when business crosses with technology (it's mostly from the business side I see the lack of communication).
As far as I've found it the best programmers are the ones who have good problem-solving skills and also abhor things being wrong. The former without the latter results in code that, at best, only its author can maintain, and at worst is totally unmaintainable.
This usually has the side effect that the good programmers are hard on their own spelling and tend towards pedantry with grammar.
Proofreading and manual code syntax checking seem like related skills, but their correlation in concept doesn't guarantee that a patient coder is also a patient speller, nor do all great writers have any concept of computer programming. For example, I know an English professor that uses the computer he was provided by his university as an ashtray. I also know of expert programmers whose grammar is completely awful.
I've got a couple of points to add first...
- Don't confuse bad spelling or grammar with typos (My fingers and brain work at completely different speeds, causing my to make lots of typos, even when I know the correct spelling)
- In this global economy, lots of programmers do not have English as a first language, so some allowances have to be made. (Their English is, however, much better than my insert language of choice here)
Considering the intelligence required to become even reasonably good at coding, it still amazes me how many coders confuse 'your' with 'you're', 'there' with 'their' & 'they're', etc. Non-coders who can't spell could possibly be explained by the person not being exposed, to much degree, to the written word, but coders probably read a lot more than other categories of people, so should see correctly written text on a regular basis and, frankly, have very little excuse.
Having said this, I'm sure that there are many brilliant coders who have a poor standard of English (And vice-versa), so it's very difficult to judge.
I now await (and welcome) spelling/grammar corrections to the above text ;-)
I don't think there's much of a correlation: I know three very good dyslexic programmers.
"How can I get those damn kids off my lawn!?" That's how I read this question anyway.
The answers given thus far are all anecdotal or opinion based. Some linguists have studied texting and found that hostility toward abbreviated words is unfounded. I think similar arguments could be made here.
It might help for a programmer to use good spelling, only insofar as programmers are often the type of people to get up in arms and make posts on sites like StackOverflow complaining about bad spelling. So if you spell well, it will help them focus on understanding your code rather than wasting half an hour fuming about your grammar.
Yes and No. On one hand, I believe there is a direct correlation between one's writing skills, in general, and the tendency to select meaningful variable names, comments and even procedural structure has favorable linguistic properties that lend themselves towards overall code clarity. The ability to invent new metaphors and to make terminology choices that are perfectly succinct can also be linked with being generally aware of relatively minute details such as spelling. On the other hand, it is often bad practice to create Class, object or variable names that are easy to misspell. Hence, this is a case where programmers should not be showing off but should opt for good names that will "roll off the fingers" whenever typed by another developer.
I would be surprised if presented evidence that good spelling and good programming correlate. Good spelling and good programming both are based on the level of experience in performing the respective activities, and there is no reason to assume that such experience itself would correlate.
Anecdote: I used to be a terrible speller until I started keeping a daily journal in a word-processor that griped about my mistakes. Now I'm OK.
Ulimately, software development is about communication (and not with the computer!). Any complex task that involves many people relies on good communication. Many projects fail because of poor communication. Because software projects are so intangible in terms of all sorts of metrics like quality and content, it's not so obvious that something is wrong (unlike with, say, building a large building) and so mistakes get propagated all too easily. Going out on a limb, I'd say that the personality types that are attracted to programming are often the same types trhat would prefer to do their own thing and find communication either difficult or do not fully realise its importance.
All the realy good programmers I know are terrible at spelling, but they also speak English as a second language so I'm not really sure what to think of that.
Programmars can't spel ;)
Amateur grammars, on the other hand... ;)
I know a great programmer (a fellow student and a friend) who spells like shit. It's possible that with effort and time invested in it he could get somewhat better, maybe mediocre. But what would be the point? Either you do it perfectly, close enough to perfect, understandably or not understandably. He'd (probably) stay in the "understandable" class, so what would be won?
User edg quoted ESR saying
"We've found by experience that people who are careless and sloppy writers are usually also careless and sloppy at thinking and coding (often enough to bet on, anyway)."
That may be true, but some people, for some reason, have a low return on the care and effort they put into trying to spell well. Why should they? And why should we require it of them?
PintSizedCat has got it right.
Good programmers need an analytical mind. And an ability with mathematics, not language, is the best way to demonstrate an analytical mind.
Don't discard a candidate because of an error in a CV. If their experience is right, call them and do a phone screen. If they get past that get them in for an afternoon and pair with them on a programming task (if you don't practice XP you should not be hiring developers).