To Learn Writing, You Must Read

As a software developer by trade, I should probably be spending more of my time reading great source code.

How to do that?

I grew up doing a lot of writing – essays, fiction, poetry, all that stuff. And of course I went to school, where they make you read good stuff that people have written over the last thousand years.

But when you goto school for programming, they don’t make you read “classic” software source code. They teach you to write your own source code. And while that’s a useful technical skill, there’s a lot you can learn from actually reading other great writing – whether it be code, fiction, or even tweets. In software development, there are a lot of people writing little mini tutorials and walkthroughs where they discuss some technical feature of a language or a way to approach programming your way out of a particular technical paper bag. But those simplistic snippets of “great text” are nothing compared with the immersive experience of actually reading and understanding a complete work, cohesively.

But still, how to do that?

Debugging Valley

Many times I will get near the end of a software project and hit a real low. I’ve been debugging along the way, rewriting classes and methods as I realize that some of my original assumptions were incorrect or not very useful, and I’m at that “final mile” where I’ve just got to run the darned thing through again, step through all my code, make a few design changes that I’ve already pondered over so much that the changes are obvious, and finish it up. But the actual coding will be very tedious. Loathsome, even.

I just can’t get my head into it again.

That’s what I call a “debugging valley” – a great vast empty space (this is not like one of those nice valleys you might see in Vermont) where I’m stuck and just don’t feel like climbing any of the many paths that I could take to get out.

My best advice for myself? Just keep writing – the same way you get past writer’s block in fiction, essay, or any type of prose. Just keep going – tweaking, editing, revising, writing some new stuff – until your “voice” comes back to you. And then finish the darned project! 🙂