Programming is all about communicating.
Let’s face it – when you really break it down, programming is just a very specialized and highly technical form of communication. It’s communication between the programmer and the computer (or compiler) of course, but it’s also communication with other programmers and with end-users of the software.
So it naturally follows that to be a good programmer, you need to be a good communicator. You might even argue that a good programmer is by definition a good communicator.
Now, we know that the only way to become a better programmer is to program – that is, you get better at programming by programming more. Experience, in other words, counts for an awful lot, and is a wonderful teacher – better than any book or school.
But how do you become a better communicator?
One way to improve your communications skills is to start a blog (which I’ve written about before), and that’s all well and good, but blogging can only take you so far – it is, by its very nature, rather one-sided; you write, other people read (and sometimes comment).
Another way to improve your communications skills – which I have found to work very well myself, and which might be very beneficial in these troubled economic times is, ironically, to work from home.
It sounds crazy – how can isolating yourself at home improve your communications skills? Won’t you be communicating less? How can this possibly work?
I’m not entirely sure of the answers myself, but my theory is that it’s a bit like learning to swim by being thrown into a pool – you are forced to learn. And when you work from home (or work remotely), you sort of are forced to become a better communicator.
Think about it: suddenly, you can’t just walk over to someone and ask them a question – you’ll have to use email, IM, or the phone. And since you don’t have all the wonderful subtleties of facial expressions and hand gestures, you’re going to have to learn how to communicate all of that clearly and concisely – probably in written form, although over the phone works too (at least then you get the benefit of being able to use “tone of voice”). And for a programmer, there is no greater skill than that of being clear and concise – after all, the best code is that which is clear in its intent and concise with regards to its form. (If code isn’t clear and concise, it’s no better than “spaghetti code.”)
In a way, it’s like being deaf or blind – you learn to use your other senses even more to compensate. So to make up for the lack of direct, person-to-person communications, you develop your writing (and phone) skills to an even higher level to compensate. You learn to:
- Eliminate ambiguity and write (or speak) clearly and to-the-point
- Get to the point quickly so as not to waste people’s time
- Structure your writing (or speaking) for maximum effect with minimum effort
All of these things help make you a better communicator – and by being a good communicator, you’ll be a better programmer.
Unfortunately, working from home has an awful stigma attached to it – people look down on working from home – which is truly unfortunate, as there are so many benefits. Of course, it’s true that working from home isn’t for everyone – there certainly are types of jobs where it’s simply not an option. But those reasons should be integral to the job itself, not artificially imposed from the outside – for example, a cashier can’t work from home, for obvious reasons. But most office workers – and especially “knowledge” workers, like programmers – could work from home without any trouble. The only limiting factor is really the organization’s willingness to allow it.
On the other side of the coin, there are of course some people who just can’t handle working from home – people who lack the self-discipline to focus on their work while at home, or who don’t have a “space” in their home to work from in the first place. While there’s not much that can be done for the latter problem, the former should be easy enough for any good programmer to overcome. After all, ours is a job that requires focus – if you can’t focus, you have no business being a programmer in the first place.
It’ll be interesting to see if more companies begin to embrace the idea of working from home in the coming years. The economic benefits from it can be great – the company can spend less on office space and the employees can save on gas and commuting costs. The incidental costs of good Internet connections and maybe some IT infrastructure to support remote workers is miniscule in comparison. And as for the stigma associated with working from home – well, I can only hope that it will erode with time.