Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've been in the financial engineering arena (after BA Math and BA Computer Science) for about 5 years (20% analysis/programming, 80% communicating) and take pride in my ability to communicate with people and discuss technical problems (i.e. interacting with a team). I love this part of my job. Going to the white board to draw abstract ideas and brainstorm.

However, for many reasons, I want to transition my career into a technology company (software engineering) but I'm deeply afraid that I will fall into a stereotypical programming job where programmers code with big headphones on. I certainly know this is only a stereotype but I've witnessed similar environments before (at startups) and it scares me to think that I would be migrating to a career of isolation.

I love coding and thinking algorithmically, but I don't want to give up interacting with people. I understand that having communication skills is only a positive, but am I setting myself up for career-happiness failure by transitioning into software engineering. I'd love to hear any clarifications and/or advice.

share|improve this question
12  
You do realize the answers here may be a little biased, right? –  JB King Aug 15 '11 at 19:11
2  
Absolutely, but the answers thus far, have been great and very informative. –  Ryan Aug 15 '11 at 19:16
2  
A software engineer who cannot express his ideas both in a spoken language and a written computer language isn't worth anything. –  Ramhound Aug 16 '11 at 14:03

17 Answers 17

up vote 53 down vote accepted

Here's the secret about programming: it is almost 100% communication. A significant part of that is communicating with a human; the rest is communicating what you've just learned to a computer.

The latter part is the easier of the two. Computers do exactly what they're told and you are always in a position to test that what you told it is correct.

The former is something else. Differences in terminologies, in understanding, in priorities, from person to person make it very difficult to get the correct message to feed to the computer. Miscommunications at this level are much more common than miscommunications between a programmer and a computer.

Good programmers are good at communicating with the computer; great programmers are good at communicating with people too, by one medium or another.

Those programmers you see that never come out of their headphones? They're still doing this communication, whether it be via email or a bug-tracker, or even messenger. It's all happening, otherwise they can't possibly know what to tell the computer to do.

So yes, your communication skills will serve you well.

share|improve this answer
6  
@Jonathan: I would distinguish quite strongly between difficult and time-consuming. –  pdr Aug 15 '11 at 22:26
3  
over the time I learned that communicating to a computer is about as difficult as to humans. Thing is most of the code I write is later read by someone else (that someone else may be myself a month later which surprisingly doesn't make it any less difficult) - which to me essentially returns us back to communicating to humans, just in written and indirect form. Code is a letter to future, coder is a writer. Joyce anyone? –  gnat Aug 16 '11 at 1:14

Since you have separated programming from your interpretation of communicating (discussing with people) and want to talk to people 80% of the time, programming is not a good choice. Maybe if you get into a situation where you can be a full-time analyst, architect, manager or client liasons (You get to talk to clients and programmers, you're the intepreter (Sorry a little Office Space humor.).

There are phases of projects where you could spend the whole day at the board, but eventually, you have to write code. It is a form of communication, but not as you described. Maybe in a pair-programming shop you can chat a lot while you code. Most of the time, you need to be focused at the keyboard. Wearing headphones means you're surrounded by too many people who are not.

share|improve this answer

It depends on where you go. I know a quant trading company where you would spend plenty of time on the whiteboard, brainstorming with PhDs. I know a prestigious consulting firm where you would likewise do a lot of communicating, but with people that didn't have a tech background... I know of a big non-software Fortune 100 firm where you'd likewise be doing a lot of communicating, but it would mainly be playing politics.

OTOH, a lot of startups and software product companies need people for heads-down coding. Sure, you communicate some, but getting up to deliver a presentation that sells your firm is a lot different than just talking to other coders...

The one area where communication really comes into play is sales engineering / technical consulting / etc... That's where, if you're truly an excellent communicator (and not just a SW engineer that isn't socially awkward), you'll get paid nice money. There's some selling involved there too.

share|improve this answer

Communications skills are helpful, but technical competence trumps everything wrt to developers.

You probably would be happier as an applications engineer, that is, an engineer who helps customers adapt and utilize the software product produced by 'heads down' developers. That way you work with software, but spend most of your day talking.

share|improve this answer

Oh, well, from the point of view of people coming from outside... I can't really say (like all the others do) that programming is all about communication.

It's not really normal day to day communication based on reciprocal respect, and interests, and stakes... it's more about mind reading, kind of nursing, and some arguing is certainly involved. There's a lot of negotiating too, but not the kind you're probably used to.

You don't really sell sh-t to programmers, you must game them, or seduce them with heavy evidences and facts. While this may seem fair for mission critical relevant issues, apply that to petty nuisances no one, not even the one that raised it, really should have ever cared about, and... welcome to communication hell.

If you got a byte at the outside world (the selling stuff/closing deals/shaking hands world) it's really hard to adapt back to the kind of (somewhat juvenile, somewhat academic) interaction programmers experience across cubicles.

The business part of your curriculum will be wasted heavily, unless you'll find a way to climb the management ladder faster than a cat on fire.

share|improve this answer

Congratulations. You have a bright future as an application engineer and then an application engineering manager (FAE Manager).

As part of this sterling profession you will create powerpoint presentations for tier-I customers with the text "Software Stack" written all over them and abstract very complex software engineering designs into rectangular blocks of different colors, often arranged haphazardly; these presentations will be initiated from the principal software engineers at the top levels of R&D, become watered down into the lowest-common-denominator customer mentality, and subsequently pasted back into requirements documents which are presented back to the principal software engineers at the top levels of R&D as make-or-break-the-business specifications. One of your bonuses will depend on liberal use of the word "cloud".

share|improve this answer

I firmly maintain that my biggest competitive advantage over other programmers and IT-types that I know is my ability to communicate with people who are not fluent in IT concepts. It is the single-most underestimated and underdeveloped skill by the average member of the IT community, and yet it is one of the most important.

In almost every role imaginable, at some point, you are going to need to need to talk to someone who has almost no grasp of what you do, and you will need to be able sell them on what it is that you're doing.

You may also need to deal with users to gather requirements for a specification - that specialised kind of listening (coupled with the right prompts and questions) is communication too!

It does have one further benefit, of course - good communications skills make getting a job in the first place a whole lot easier.

share|improve this answer

Of course good communication is important! What I would focus on is becoming an excellent teacher. Really effective programmers can explain the foundation of something that took years to understand in a 15 minute phone call. In the same conversation you must explain the details in non-technical terms so the person on the other end of the line can make an educated decision that is best for their business over a long period of time.

share|improve this answer

I agree with everyone else who says that there's plenty of communication in software development, and I'll add that even writing good code requires good communication skills.

Writing code that's correct is important; writing code that other people can understand is arguably much more important. If your code contains a few bugs, but it's written in such a way that I can easily understand what's going on, it won't be hard for me to find and fix the bugs. If your code is completely correct but written in such a way that I'm not so sure I understand it, then I can't really be certain that it's correct, and the odds that I can correctly modify it in the future are much lower.

share|improve this answer

Communication skills will definitely not be wasted. Even if you spend 80% of your time writing program code, you need to be clear on what the code does. Effective communication with your client (or project leader) is necessary to ensure your efforts are not wasted, and actually result in what is required. Additionally, you will be able to explain your work, potential issues with design, simpler implementations, etc more easily to those less familiar with programming. Lastly, when programming user-interactive software, communication skills would be quite helpful in designing a user interface that gets the correct information across in a user-friendly way that will be understood. It will also help you get the correct information from the user to perform the job.

share|improve this answer

I agree with everyone here that argues communication is key in computer programming. I honestly think that from what is described, you will make a great lead programmer or more of the 'software engineer' type. I started out as general IT in a company and as soon as I was able to prove my programming skills I transitioned to programmer, being I am very social and team-oriented out-going I am now the lead programmer on two projects. You will find that the higher you get on the programming chain, the more white board and problem solving you will start doing.

If your personality has the 'leadership' trait (which is what you are hinting to), you will rise to the top very fast. Just providing that you are in a company that lets you rise in that way.

Social skills, problem solving, and good programming is often rarer than you may think. Employers kill for that kind of skill. I think your on the right track. Just keep up the good work!

share|improve this answer

It sounds to me like you should look for a job as a technical consultant. It often involves programming, but also requires a lot of communication - with customers, with colleagues, consultants of other companies... OTOH it also means fixing a lot of technical issues without actually writing code, if you don't like that you should probably look for different paths. HTH.

share|improve this answer
1  
Are you even a programmer?? –  CenterOrbit Aug 15 '11 at 18:41
2  
Yes, I am. I have been a technical consultant for a while, too. What is it that makes you so upset about my answer? –  S.L. Barth Aug 15 '11 at 18:43

I am currently programming with big headphones on. Well, I was just programming. Clearly I'm now on StackExchange...anywho:

It's true that a lot of programming is done in solidarity. In order to program well, you NEED that focus and privacy. However, do you really even think that most of your time is spent programming? A lot of your time will be split amongst team meetings, strategy talk, walking, thinking, discussing etc. Actually sitting at your desk typing won't be your whole life. I remember reading a study in my software engineering course that the best/most-productive programmers on a team are the outgoing ones and NOT the introverts.

Good programmers can communicate well with their team. Getting and understanding requirements from a technical lead or manager is often not an easy task. It takes good communication skills to clarify your tasks, as well as to communicate with the team. If you work your way up to technical lead or manager, communication skills will be pivotal for holding the team together.

I too am someone who loves to be outgoing. I have to admit, at first, I found the amount of solidarity in my programming job a little depressing. I took some steps to make the job more social though, mainly: 1) Refusing to eat lunch alone 2) Taking gym/basketball breaks with friends

A programming job shouldn't be anti-social.

share|improve this answer

Arguably, most software projects fail not because of technical problems, but because of communication problems. Writing great code is certainly important for a software engineer, but good communication skills are a huge asset to a team - and also harder to improve than coding skills.

share|improve this answer

The programmers might like to code with big headphones on (well, not all of them do), but that doesn't mean they can't communicate, it just means that they do not want to be disturbed at that moment - not that they will never communicate.

Verbal communication skills are still extremely important in meetings with the rest of the team, in ad-hoc meetings, with business users, with other teams, etc.

Written communication skills will also be very important when you email your coworkers with big headphones so they can reply to you later.

share|improve this answer
1  
Completely agree with this. I only put headphones on to indicate that I'm busy. –  Ivan Aug 19 '11 at 0:45

You'll be better off with great communication skills. Heads-down programmers are often the ones that are not put on the exciting projects, since their managers might not understand them as well. Essentially, if you never come up for air, you will be pigeonholed as "the weird guy in the corner".

Again, we're working on stereotypes, and not every environment is like that, but at the very least, good communication skills help you understand the business and the people around you better, so you will become better equipped to handle complex problems in your particular domain.

How much you communicate is up to you. It would be rare for you to end up in a team that's full of heads-down programmers with nobody that wants to talk, but if you're not kin to nerd humor, prepare to be introduced quickly. Also, be prepared for the inevitable socially awkward programmers. There's always at least one.

share|improve this answer

Communication skills are extremely important to a software developer. Somewhere there is a stat (possibly next to the stat that says 68% of all statistics are made up) that says that a majority of software projects fail because of poor communication. Being the person that can communicate with the business (and understand the business) on a software development team HAS to be a good place to be.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.