There are certainly very successful programmers that never talk to a client or make a slide deck, but I’d put my money on them being far and few between. Most of us have to slog through the trenches at least a little bit in our quest towards a job that both pays our bills and lets us go home before the sun comes up. The idea floats around that all you need to do is become a brilliant coder and everything else will pan out. In reality, this is far from true. Mediocre and inexperienced coders get great jobs all the time, but it is often by flexing other, non-techie skills that they achieve this.
Making a Presentation
Maybe you plan on spending your entire career sitting behind a support desk dealing with bug tickets, but I doubt it. Most of us want to build things or solve puzzles. Not that fixing an individual bug isn’t a worthwhile task, but it is often a small one, and to continue to grow sometimes tackling a larger issue is something you just need to do. In that case, you’ll need to get others to buy into your project be it a client, an internal manager, or random strangers on the internet. Being able to present your project in a clear and elegant way is a tough skill to learn (I envy those of you that have mad Photoshop and Powerpoint skills), but a necessary one to get that critical buy-in. People are visually oriented, and a great presentation can give you the support you need to put the necessary time and money into your project.
Talking to Non-Techies
Whether it be manager or client, you will undoubtedly have to deal with people who have no technical skills whatsoever. Even many interviewers won’t have the same technical chops you have, but will still expect you to be able to talk about technical topics. For the love of all that is good and beautiful not knowing how to code does not make the person an idiot. There are plenty of topics out there that you don’t know the first thing about, but you may need to discuss at some point in your life. Remember that the other person is probably way better than you at many things and don’t treat them like they are dumb just because they don’t know the lingo. I feel like this is something that I shouldn’t have to say, and yet I do. Communicating with someone who does not have the knowledge you do is not a chore, it is going to be a necessary and integral part of pretty much every job you have as a developer.
I hear every day about code newbies that struggle to find that first job. It’s hard in this climate to find a company that is willing to take a chance on someone who is completely new, and an unknown, experienced developer comes with only slightly less risk. Having a current employee vouch for your ability is a huge foot in the door to any job, and getting a referral may be easier than you think. Both my jobs came from friends-of-friends either posting an opening or outright asking for my resume, and I feel a little bad when I look at my paycheck and think of all the people struggling to get that first job. Being able to present yourself well and speak to people who aren’t technically savvy (that referral doesn’t have to come from another dev) will help you to expand the pool of people willing to help you get hired.
Learning to communicate is not something that the stereotypical coder-type does very easily. However, just like anything else, it is something that you can learn to do reasonably well with time and practice. Heading to meetups, hackathons, and other social events are a great way to practice these skills and stretch your coding chops, so give it a go next time you have a free afternoon.