I was discussing non-technical skills (soft skills if you like) and how we recruit for them with a colleague yesterday. Interestingly we were both of the opinion that they are equally as important as technical skills but that learning them is harder and therefore we should hire more for them than specific technical skills.
I wanted to ask the community, which non-technical skills do you think are most important for Software Engineers and more importantly what specific steps can someone take to develop those skills?
Fortunately it's not hard to get good at this. Mostly find some good examples and copy their general format. You'll go far if you just commit to writing good documentation for whatever project you're working on currently, then it just gets easier with practice. But you have to commit and never skimp on the docs - even if you don't enjoy it. It ain't done until the documentation is done.
Oh, and learn to touch type.
And vi. You'll be able to use vi for the rest of your life on every computing machine ever built :)