Tuesday, January 4, 2011

Writing Is Key

There are two things you need to learn before you learn programming. One is typing. If you can’t type, you’re all but illiterate today. Hunt and peck typists refuse to type anything out because it’s so hard for them, so they don’t write documentation, explain problems to users or management, or communicate their design to other programmers. If you can’t type, you’re stuck with face to face communication and cut and paste programming. You’re like a primitive caveman who has to rely on his memory for everything and if he can’t remember it, it doesn’t exist. Typing is necessary.

The second and more important thing you have to learn is how to write. You may think you can’t write. You may have fallen for that left-brain/right-brain hogwash and believe it’s impossible for you to learn to write. You may believe it takes an innate talent to write. You may think that you were cheated out of an education in high school and it’s too late to fix that. You may believe writing is a waste of time. You’d be wrong on all counts.

There’s plenty of community colleges that have writing courses. Such courses are on writing alone and don’t teach to a test, so you aren’t distracted by other junk and can concentrate on learning. You get to choose what to write about, which makes it easier to come up with ideas. You can take the course pass/fail, so you aren’t distracted by the nonsense of grades. Instead, you pay your money and learn a skill. You don’t need to become a great writer; I’m only a passable writer myself. You do need to understand writing enough to be able to express yourself to others. You need to rise above the average illiteracy of today; the clumsy wording and meaningless corporate-speak that is most writing you see at work.

Okay, so you can learn to write; but why would you bother? There’s a million reasons. When you have a problem that’s similar to something that happened six months ago, it’d be useful to have something written down about your earlier solution. When you’re looking at a program you wrote two years ago, it’d be useful to have the code documented, so you can quickly figure out how it works. When you need to add a couple of fixes the users asked for in the last meeting, it’d help to have that list written down, with a clear explanation of what the users wanted. Any program you write must have user documentation, and it’d be easier to hand your doc writer a decent list and description of features instead of spending hours rambling about what you remember coding. When you get a nasty email from the boss, it’d be useful to be able to explain yourself clearly so you don’t get in trouble.

You may be thinking that most of these examples are about things that are no more than three sentences long, so you don’t really need to learn to write. But despite the fact that children are graded and writers are paid by the word, writing isn’t about volume. The skill of writing consists of organizing your thoughts so you can convey them precisely. Even a one sentence description of a function can be improved by someone who knows how to write. And the act of writing, of wrestling with how to say something clearly, will clarify in your mind what you’re trying to do. Writing helps you understand what you need to do even before you start coding.

These skills carry over in another way too. A good writer will take a group of sentences, cut out the unnecessary, clarify the unclear, and rearrange everything until it flows properly. This should sound familiar because this is exactly what a good programmer does when coding. Writing is design. When you write you are exercising the same mental muscles you use when you design and implement a program. So improving your writing skills will not only help you communicate with your boss, your users, and your colleagues; it will also help develop the skills you need when you’re sitting at your desk pounding out code. Writing skills are fundamental to what you do as a programmer.

No comments:

Post a Comment