If I could do my college years over I would focus on writing. I
would take courses that required a lot of writing, in the spirit
of "learn by doing". I'd also take courses in the mechanics and
craft: grammar, vocabulary, and rhetoric.

I used to consider myself a competent writer. And certainly good
enough for an engineer, right? But I've learned that I have a long
way to go. I've learned that engineers spend much more time writing
than you expect. And I appreciate how hard it is to write well.

This came up just this past week. I came across a beautiful four
page essay. It laid out the problem, described alternatives, and
lead you concisely to a well-reasoned conclusion. Sure, it was about
technology, but what carried the day was the good writing. Humbling!

You're saying: but wait, you're a pointy-haired boss now
Sef, one of those guys who doesn't do Real Work anymore. You write
email and boss people around. I understand why managers like you
need to write, I'm an engineer. I write code. Well, there's some
truth to that. But I'd like to convince you that even monster coders,
if they're any good, write a lot, write well, and value good writing
in others.

It is rare for someone to do their work in isolation and have it
matter. Either you're working as part of a team, in a company or
a community of developers, say on an open-source project. Sure, you
build a great system or feature. But to have it matter to the world,
for others to adopt it, you need to document, publicize, support,
teach. 98% of that is writing.

I had a lunchtime conversation with Jacob Kaplan-Moss,
Django's co-founder, at last year's PyCon. I asked him why Django
caught on and was adopted by so many of us (including my last
project and my current project). I was expecting him
to point to features or timing. Instead he said it was "because we
wrote good docs". The Django team didn't treat documentation as an
afterthought. They have lots of docs, and they are good.

Consider that rare bird, the iconoclastic engineer working in
isolation on their own project. I'm thinking of Antirez or
Marco. (Maybe they aren't even truly on their own so much.
Humor me!) They are prolific and strong coders. But they also write
a lot of words! They write a ton about their project; also tech
landscape and their place in it. Would their software have as much
of an impact if they didn't write so much (and well)? I say no.

Case in point. Both Marco and I wrote blog posts riffing off the
same topic two weeks ago. First, read mine, then
his. It takes me a ton of words to get something
basic out. His is concise and clear. Sheesh.

So kids, don't shortchange those liberal arts classes. It's not
fluffy stuff on the side. That is core. You need to write well
to be a good engineer.

Protip: the best way to do this is to major in the humanities. They
write like crazy over there. Be like my friend Dan Chu and major
in history, but secretly take CS courses on the side. If you're
super smart like him, and can manage getting both degrees, then
you're awesome. But don't sacrifice the BA for the BS. I would
love to talk to a candidate with with a History BA and a Computer
Science MS.