views:

196

answers:

4

Ok, as the majority of you ageed, social skills are essential in career progression. Without it you are just a coder, even if you known everything in the IT world.

My question is how to get the skills up. For example, to raise my software design skills, I will buy and read a bunch of books, attend architecture events, learn various architecture frameworks, tools, do some coding practice etc.

How do yo develop the soft skills?

+12  A: 

I think relatively low social skills is a common problem in software developers. It certainly is in the 200 or so developers that I have managed or worked with in my career so far. I've seen a lot of articles recently talking about this in terms of Autism, HFA or Asperger's. However I think comparisons like that are counter productive, like putting someone with a slight limp in the same category as someone confined to a wheelchair.

Software development skills (i.e. things you can learn, like how to code Javascript or how DBs work) flow from talents (i.e. things that you're born with, like high IQ and an aptitude with technical and logical problems).

People skills are a similar - they develop from natural talents like empathy and rapport.

Just because you don't possess a lot of the natural talent doesn't mean that you can't learn the skills - it's just harder. By the way this is what distinguishes disorders like Autism from just being a poor communicator - someone with full Autism can never develop genuine empathy.

As a developer you don't need to develop a strong communication skill-set. When I say that I'm talking relative to all the other jobs out there. A good sales person can contact someone they've never met out of the blue (something that will inherently annoy whoever they call) and still end up with that person liking or trusting them. A good leader can motivate a hall full of people at once. A good manager can turn a room full of arguing egos into a team getting things done. A good developer doesn't need to do any of that.

What you need to do as a developer is become a competent technical communicator. For that you only have to focus on a few things:

  1. Listen - I really can't stress this enough. I've worked with a lot of brilliant programmers who never really listened to other peoples' ideas. Your idea to solve the same problem might be brilliant, but every time you need to properly listen and understand their idea too.

  2. Explain - This is the other side of (1) - lots of developers have this behaviour pattern where they try to explain something complex and abstract, fail, and then blame whoever they're explaining it to - "you're not smart enough to understand". As the person explaining the problem it is your job to turn it into something that they can understand, not theirs.

  3. Empathise - Put yourself in their shoes: how would you feel if you were them? Is your idea better than theirs? How would you feel if they just dismissed your idea? What could they do to persuade you that theirs was better?

  4. It's always your problem - Regardless of whether the person that you're talking to follows the rules above, you still can and should. They might be a bad listener, but it lies with you to get through to them. They might be bad at explaining it, but it's your problem to try and understand them. They might trample over your feelings, but it's you who can tolerate that and move on. You can always take ownership of communication problems, and developers that do get noticed for their professional attitude.

Keep practising these inside your team and you'll get better at communicating. When talking to people outside your team you also need to avoid jargon.

If you want to go down a business analysis, consultancy or management career path you'll need a lot more than this, but I think that might be off-topic for SO.

Keith
+1 , brilliant answer :)
Madi D.
This answer makes me want the ability to "favorite" an answer.
John Isaacks
+4  A: 
Madi D.
+1 for calling out over-explaining.
Greg D
+3  A: 

Don't over explain and do be willing to listen. These go hand-in-hand.

One of the most common communication anti-patterns that I run into on a regular basis is the over-explainer. This is the person who, when you say, "Ok, I get it," continues barreling on with their explanation.

This was most notable to me once when I was explaining something to a customer. Halfway through the explanation they interrupted to say, "I get it." I just nodded and moved on to the next topic. They were taken aback, surprised that I had listened to them, heard what they were saying, and moved the conversation forward. (The usual customer contact is a regular over-explainer, so they were accustomed to having their "I get it" comments ignored.)

I believe that over-explainers are simply people whose ears turn off while their mouths are open. It's common, and we all learn to deal with it, but the capacity to still hear what other people are trying to tell you in the middle of your own sentence is a valuable communication skill.

(Don't mean to steal Madi's thunder from their first point, here-- I just thought it was a good enough point that it deserved a little more elaboration. :) )

Greg D
lol :D.. +1 for further elaboration :)
Madi D.
+1  A: 

In terms of developing your public/meeting speaking skills find out if your city has a local chapter of Toastmasters. This is an excellent organization which focuses on helping you with soft skills through regular meetings where you do various things including giving prepared speeches. It's an invaluable experience and allows you do do it in an environment with others who are trying to accomplish the same thing.

http://www.toastmasters.org/

Wil