Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm reading Coders at Work by Peter Seibel, and many a time it has been mentioned that programmers who can't write generally make poor programmers - it's been claimed by Douglas Crockford, Joshua Bloch, Joe Armstrong, Dijkstra (and I've only read half the book).

What's your view of this? Is an inability to express yourself in writing in a natural language such as English a hindrance of writing good code?

share|improve this question
9  
I don't know about skill as a programmer, but for SELLING yourself as a programmer, smart = sexy in the freelance world. Therefore, if you can write (and speak) well, you will be perceived as smart and be considered more trustworthy as a developer (though it may be completely ungrounded). –  Yar Nov 6 '10 at 0:10
    
By "can't write," do you mean their grammar is incorrect? That's probably a bigger issue than things like poor flow, etc. –  Maxpm Dec 15 '10 at 13:31
1  
@Maxpm: Maybe, but also an unability to convey their meaning in writing, despite being grammatically correct. –  gablin Dec 16 '10 at 22:08
add comment

closed as not constructive by ChrisF Nov 24 '11 at 20:50

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

12 Answers

up vote 27 down vote accepted

There's much more to programming than 'writing code'. A big part of being a successful programmer involves communication; Being able to connect with customers, understand their needs, translate them into the technical realm, express them in code, and then explain the result back to the customers.

Programmers who have a hard time expressing themselves clearly in writing may not be able to communicate well in general, whereas those who have a good grasp of language and writing can generally translate those skills to the code they write.

I think being unable to write well, and thus communicate well, will keep one from being a very good programmer.

As Jason Fried and David Heinemeier Hansson (of 37signals) say in their book Rework:

If you're trying to decide among a few people to fill a position, hire the best writer.

Being a good writer is about more than writing. Clear writing is a sign of clear thinking. Great writers know how to communicate.

share|improve this answer
2  
Yup, and I think pretty much everyone agree that one of the quality of a good programmer is the ability to express oneself clearly in code so this would not surprise me that the ability to express yourself clearly in writing is correlate with the ability to express clearly in your code (and vice-versa). +1 –  n1ckp Nov 6 '10 at 0:11
2  
I'd second this. You need to communicate - not just with the machine. The people around you and the programmers who come after you need clarity in communication, both spoken and written. Spoken because sooner or later you have to talk to people, and written because thats what your code AND YOUR COMMENTS are. –  quickly_now Nov 6 '10 at 2:12
    
I found your answer very interesting! But when I looked back in my memory to find who were the best programmers I worked with, worked for or worked for me, I found many of them was very bad at writing. However, they were ridicusly good. However, I'll keep your excellent answer in mind and will try it in the future. +1 –  user2567 Nov 6 '10 at 13:43
add comment

Does someone unable to express precisely a system organisation or an idea be able by writing it would be able to write code - that are precise instructions - correctly interpreted by (very) dumb computer?

share|improve this answer
    
But you get a very clear and immediate feedback loop from the computer if your code is not correctly written. I suspect you could have extremely poor written English and hardly ever even be told about it, let alone given the feedback you need to improve. –  Carson63000 Nov 6 '10 at 2:42
    
You have to learn to be clear and correct even with the compiler because if you don't you'll never even compile anything in the end. –  Klaim Nov 6 '10 at 14:30
add comment

I don't think it's a major hindrance for a code monkey (I am assuming a certain basic level/ability to express one's self in their native language). However I do think it can quickly become a major hindrance as you (the developer) has to begin to better articulate designs/arch/plans to a non-technical audience. In my experience getting something across to someone else who is roughly on the same technical level as myself is my easier and takes considerably less (natural) language skills then it does to articulate something to a client and/or manager. At the same token even when it's a technical audience as the subject matter becomes less concrete the person who is writing about it (or talking for that matter) has to be fairly articulate.

share|improve this answer
add comment
  • If you can't explain something well enough you probably don't understand it well enough Being a smart person means you will work with other smart people and you will have to communicate with them effectively.
  • Any great idea you have is useless if exists only in your head
    Being able to communicate your ideas effectively is a sign of great understanding. This applies to more than just the field of programming.
share|improve this answer
add comment

The thing is, coding is also a communication skill. Jack Ganssle in his Embedded Muse e-newsletter recently quoted Doug Abbott:

When you write a program, what you’re really doing is communicating to another human what it is you want the computer to do. Programming is about communication, just like any other form of writing. So yes, computer science students should be exposed to good writing. But since there’s so precious little of it in computer science, maybe they just need some basic creative writing classes.

Programmers who don’t know how to write prose probably don’t know how to write code, either.

More on this interesting article:

Does Bad Writing Reflect Poor Programming Skills?

share|improve this answer
add comment

This is altogether anecdotal, but:

One of the best "rock star" programmers I've ever worked with was a very poor writer. And when I say "very poor", I mean the type that came across like he was either extremely drunk, or barely literate - when you saw his emails. Typos, lack of punctuation, difficulty in expressing ideas clearly, and common spelling mistakes ("their/they're" and such) all abounded - almost excruciatingly at times. Reading some of his emails - I would have been worried about him emailing clients directly (we didn't need to do that in that company) - because it would make the company look bad!

Still, he was a super star programmer. An order of magnitude more productive and switched on than average.

I'm not sure what to make of it. I've seen this several times with different people. Some just don't seem to have a knack for sitting down and writing things out. And often it doesn't seem to affect their talents in other areas (even relatively seemingly similar, "knowledge work" talents, such as programming). You'd think it would be connected, but I've seen several living examples like this where it wasn't. Though I guess it's quite possible that they are "exceptions who prove the rule" - I probably just never thought to notice the bad writers who aren't programmers, and the good writers who are.

share|improve this answer
3  
There are always exceptions to the rule. I've worked with a few as well - brilliant people, who we never let near a customer because they would have been made into mincemeat. I spent ages correcting the typos and so on in their documentation. Give them a technical problem though and the flashes of insight and solutions were amazing. This all just shows that the answers here are generalisations. However, generalisations do apply to the majority of people. –  quickly_now Nov 6 '10 at 2:16
3  
@quickly_now: I would be wondering (since you didn't specify) how their code read though. They can be very clever and good problem solver but if their code is unreadable they are not that great programmer if you want my opinion. –  n1ckp Nov 6 '10 at 11:03
    
@n1ck: Now that you mention it, the guy I'm thinking of wasn't very good at documenting his code. The code itself was good and well designed, but he didn't put in comments around the inherently complex bits of code, which meant it was harder to maintain than it should be. Hadn't thought of that. :) –  Bobby Tables Nov 6 '10 at 20:31
    
I'm in agreement with @n1ckp. I'm also willing to bet his choice of names for variables/methods/classes would sometimes be cryptic and confusing. I tend to be very wary of programmers with extremely high productivity, because it often comes at the expense of spending a little extra time to improve long term maintainability. –  Craig Young Jul 1 '12 at 22:48
add comment

I think it is very important for a programmer to be able to communicate well, both with spoken and written language. The ability to translate an idea into words is a prerequisite to writing code.

Whether we are communicating with a computer or a person we have to put words into an order that makes sense following rules of grammar. We have to either pronounce the words correctly or spell them correctly in order for the other side of the conversation to understand them. Computers will throw syntax errors, coworkers will either say "WHAT?" or discount what is being said as inane babbling or worse, an irritating distraction.

I have strongly discouraged hiring candidates because they couldn't complete a thought or stay on a subject. One person was hired by our boss anyway, and turned out to be unable to deliver a simple assignment on time because he was distracted by whatever bright and shiny new technology or toy caught his eye.

So, yes, it is important that programmers be able to communicate well. If they can't effectively communicate with a human they can't do it with a computer.

share|improve this answer
add comment

Poor writers make poor writers, and nothing else. Poor writing skill does not mean they can't communicate at all, but they just can't write or express very well. Of course anyone can say communication skill is important and crucial in company and so on and so forth, but that doesn't mean a programmer with poor communication skill can't get the job done nicely. The programming and writing are art, but of completely different kind. Writing is about how to make some other human understand what you are saying and/or act accordingly, but programming is not making computer understand your requirement, because no computer will understand any user requirement (at least within 100 years from now IMO). The programming is about how to translate the requirement to the programming language, and that's why writing skill is not so related.

share|improve this answer
1  
Part of the job of a programmer is to express himself clearly in code (and comments) so that, not just the computer, but also other humans can read the code. It would make senses (but is not proven AFAIK) that these skills are correlated. –  n1ckp Nov 6 '10 at 11:05
add comment

If they can't write well, how can they convince you that they are good programmers?

share|improve this answer
add comment

I think if we examine the question, we obtain the answer directly:

Is an inability to express yourself in writing in a natural language such as English a hindrance of writing good code?

What does it actually mean to write good code?

Programs must be written for people to read, and only incidentally for machines to execute.
- Abelson & Sussman, Structure and Interpretation of Computer Programs

It means to express yourself clearly, concisely, correctly and elegantly writing in a programming language.

The only difference between expressing yourself skillfully in English or a programming language is that English is far more forgiving.

share|improve this answer
add comment

That depends on what you mean by "good code".

If you mean code that just works, there is hardly any relation between being able to communicate with humans and being able to communicate with computers.

If you mean code that works, is maintainable, and clearly expresses the intention of the code, there is absolutely a relation between writing good code and writing in a language solely intended for humans.

Although you wouldn't need all the different skills required to be a good writer for writing understandable code, there are still some of the elements that have to be there, as both will be read by humans. In some ways it's even harder to write good code, as it should describe the intention with the code, while not using constructs that would perform badly while executed by the computer.

share|improve this answer
add comment

Absolutely NOT!

A good writer is nothing more than a good writer. Ask a good writer to describe the concept of a database to a non-technical person. What do you think you will get...?

A good writer, writes. A good programer writes good code.

  • Code that others can read six months after it's been developed.
  • Code that makes sense at 2:00 AM in the morning when the system has failed and debuging is going on.
  • Code that everyone else likes to borrow because they understand it and can modify it easily
  • Code that works 24/7 365

I was going to go on and on but I'd rather spend my time answering other posts. I pretty much think you guys know where I stand on this issue.

share|improve this answer
    
I think the bullet points 1,2 and 3 require one to be a good writer in addition to being a good programmer. In essence, you are considering good writing skills as an implicit trait. –  Mamta Dalal Nov 10 '10 at 8:05
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.