Back to Attaining Vision

Writing has never been a strong suit of mine. In graduate school, my advisor once sat me down, looked me straight in the eye, and said, “Daniel, I don’t see how you’re ever going to finish writing your thesis. You just can’t express your thoughts.” I took that as a challenge, hunkered down with Handbook of Writing for the Mathematical Sciences and a thesaurus.

The next semester was spent writing and (mostly) re-writing, spending countless hours in his office, late into the night, at his home, even on Sundays, reviewing draft after draft. If we worked late, we’d stop by the East Village Grill and order a local craft beer to unwind before heading home and beginning anew the following day.

I learned to question every assumption, avoid all generalizations and ambiguities. I learned less is more, every session toiling away at drafts resulted in diminishing page length. I’d start the morning with 3 pages of text and by evening had 2 succinct paragraphs. We would debate a sentence for hours, go back and forth on how to explain a concept precisely. I learned the importance of a thesaurus (you wouldn’t know it by my repeated use of learn) and what the heck an Oxford comma is.

He was invested in me and dedicated to help me overcome my writing difficulties. He put in extra work for no reason other than to help one of his graduate students with the basic task of communicating via the written word. He demanded hard work, while showing first hand how it was done. He succeeded.

Why am I writing all this? Does anybody care?

Maybe not. That’s the point. Probably nobody cares.

I don’t need to have a perfect blog post to publish it to the world. I don’t need to dissect every sentence to make sure it has precise semantics and a specific responsibility that ties in with the rest of the sentences. See what I did there? Substitute the word sentence with function or class. Read it again. I don’t need to dissect every class to make sure it has precise semantics and a specific responsibility that ties in with the rest of the classes.

As a computer scientist, proper semantics and responsibility are drilled into your head:

  • Self-documenting code: comments become obsolete, code never does
  • Once you publish an API, you must live with it forever, warts and all
  • Single Responsibility Principle
  • Decoupling

Software development is hard, getting it right is hard. The libraries we use and love, the ones we truly get a joy out of using, are culmination of many hours of hard work. Take, for instance, the Python Web Framework Bottle. It’s only one file, how hard could it have been to write? Well, as I learned writing my thesis, less is more. It takes hard work to get a library that compact, it’s much easier to ship a bloated piece of software that needs 5 pages of documentation just to get set up. Writing is also hard, it takes time to get everything neat and tidy, refactoring, re-editing, before you have something you deem worthy. Never mind actual publishing, I’m just talking about a simple blog post that in all likelihood no one will read.

Get to the point already

Antoine de Saint-Exupéry offered his cousin 100 francs to come up with the perfect title for the book Wind, Sand and Stars. In the third chapter of the book he gives us the much quoted phrase:

In anything at all, perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away, when a body has been stripped down to its nakedness.

Here is a man who understands what it takes to produce exceptional work. Yet, the essence of this post is the antithesis of that thought. I must not strive for perfection. Today I’m saying I must unlearn everything my education and my profession has taught me if I’m ever going to get better at writing. I must ignore years of hard work and mental training. I can’t be embarrassed or ashamed to push out some shoddy words. I need to practice and practice some more.

As developers we get better by writing code, experimenting with different techniques. Throwing things out on GitHub and asking questions is a great way to learn and is widely accepted in our profession. Well, that’s what this blog is. My GitHub for words. This is not me shipping production code, this is me testing code and asking for a code review. This is me writing words on the Internet and asking for feedback.

I have over 13 posts in drafts. I know they’ll never be perfect. Some are already obsolete. I don’t care. I’m hoping to review them and get over the hump of finishing the last 20%. The thoughts are written down, I just have to crank out the code words.

You’ve been warned. The site does say it’s my developer notebook. So in the future I may put up code I’ve been tinkering with and never got to work. No shame in that. I may put unfinished thoughts or just plain gibberish. Who knows, this is my own personal space to better my writing and hopefully, as a consequence, leave some useful information on the Internet. I might even come back to a post a few years from now and say, “Man, I used to be kinda smart. How did I ever come up with that? Oh Wait… Cool. I wrote down my thought process.”

A lesser known book by Saint-Exupéry called Flight to Arras contains a quote that was the initial inspiration for this blog:

To know is not to pull apart nor to explain. It is to attain vision. But in order to see, we must first participate, and it is a hard apprenticeship.

I need to get back to participating. It’s hard, but it’s the only way to Attaining Vision.