Over a year ago, a computer science faculty member asked me what skills I wished CS programs would teach their graduates. I’m sure he expected a response along the lines of “teach Node.js” or “teach more networking” or “teach operating system theory”. (And for the record, I do think they should teach those topics.)
It’s one of those questions you feel like you could answer more intelligently after a bit of reflection. In the ensuing year I have come up with all sorts of responses.
The single biggest skill I want more software engineers to have is the ability to write clearly. (Pretty tough advice for the CS department: Teach technical writing!)
Most communication in our field is via the written word, whether in email or more formally in design documents and test plans. Sadly, the inability to write well is pervasive.
Now, this might be self-serving advice—in the interest of full disclosure I will cop to having dual-majored in math and writing. (My flippant explanation has always been that there were girls in the writing classes! But the truth is I enjoyed my English courses at least as much as my math and CS courses.)
I’ve seen many otherwise good engineers who can’t write well, and as a result, they cap their potential career development. The further you go, the more the job becomes about communication—with your team, with senior management, with other departments or your customer. And in engineering, serious communication is done in writing. So if you can’t write, maybe there’s a role for you as an implementer, but it’s unlikely you’re going to rise to team lead or into management.
Here at Cardinal Peak, in particular, we place a premium on engineers who have what we call “client facing skills”. That’s a larger bucket than just the ability to write, to be sure, but if you can write clearly you are much of the way there.